diff --git a/e2e/ratchet/partner/relationshipFingerprint.go b/e2e/ratchet/partner/relationshipFingerprint.go
index e00f6aa69638830752b079332e63f0f6bb68755f..9380b9a5051e9d82f76d3043e880350600425d6b 100644
--- a/e2e/ratchet/partner/relationshipFingerprint.go
+++ b/e2e/ratchet/partner/relationshipFingerprint.go
@@ -12,6 +12,7 @@ import (
 	session2 "gitlab.com/elixxir/client/e2e/ratchet/partner/session"
 	"gitlab.com/elixxir/client/storage/versioned"
 	"gitlab.com/elixxir/crypto/cyclic"
+	"gitlab.com/elixxir/crypto/diffieHellman"
 	"gitlab.com/elixxir/crypto/e2e"
 	"gitlab.com/xx_network/primitives/id"
 	"gitlab.com/xx_network/primitives/netTime"
@@ -20,7 +21,7 @@ import (
 func makeRelationshipFingerprint(t session2.RelationshipType, grp *cyclic.Group,
 	myPrivKey, partnerPubKey *cyclic.Int, me, partner *id.ID) []byte {
 
-	myPubKey := grp.ExpG(myPrivKey, grp.NewIntFromUInt(1))
+	myPubKey := diffieHellman.GeneratePublicKey(myPrivKey, grp)
 
 	switch t {
 	case session2.Send:
diff --git a/single/request.go b/single/request.go
index 1a49628653915c373fb6d7b59e632a7375eebfbc..08e78c6effd39046fada90042fd04efd8472855a 100644
--- a/single/request.go
+++ b/single/request.go
@@ -11,6 +11,7 @@ import (
 	"gitlab.com/elixxir/client/single/message"
 	"gitlab.com/elixxir/crypto/contact"
 	"gitlab.com/elixxir/crypto/cyclic"
+	"gitlab.com/elixxir/crypto/diffieHellman"
 	"gitlab.com/elixxir/crypto/e2e/auth"
 	"gitlab.com/elixxir/crypto/e2e/singleUse"
 	"gitlab.com/xx_network/crypto/csprng"
@@ -271,7 +272,7 @@ func generateDhKeys(grp *cyclic.Group, dhPubKey *cyclic.Int, rng io.Reader) (
 	privKey := grp.NewIntFromBytes(privKeyBytes)
 
 	// Generate public key and DH key
-	publicKey = grp.ExpG(privKey, grp.NewInt(1))
+	publicKey = diffieHellman.GeneratePublicKey(privKey, grp)
 	dhKey = grp.Exp(dhPubKey, privKey, grp.NewInt(1))
 
 	return dhKey, publicKey, nil
diff --git a/ud/register.go b/ud/register.go
index 591a1cf1fd218c9afc9b84af5d53c4300505914e..07c7fcdb942b2f96726af26a5e1deeac92fc2278 100644
--- a/ud/register.go
+++ b/ud/register.go
@@ -3,6 +3,7 @@ package ud
 import (
 	"github.com/pkg/errors"
 	pb "gitlab.com/elixxir/comms/mixmessages"
+	"gitlab.com/elixxir/crypto/diffieHellman"
 	"gitlab.com/elixxir/crypto/factID"
 	"gitlab.com/elixxir/crypto/hash"
 	"gitlab.com/elixxir/primitives/fact"
@@ -30,7 +31,7 @@ func (m *Manager) register(username string, rng csprng.Source,
 	if err != nil {
 		return err
 	}
-	dhKeyPub := grp.ExpG(dhKeyPriv, grp.NewInt(1))
+	dhKeyPub := diffieHellman.GeneratePublicKey(dhKeyPriv, grp)
 
 	// Construct the user registration message
 	msg := &pb.UDBUserRegistration{
diff --git a/xxdk/identity.go b/xxdk/identity.go
index c3e9897245e169deb7aa5e308b3bc5d014c62911..8d4b392d8c79ea47fb39afa03f877542c8c2e0d0 100644
--- a/xxdk/identity.go
+++ b/xxdk/identity.go
@@ -8,6 +8,7 @@ package xxdk
 
 import (
 	"encoding/json"
+	"gitlab.com/elixxir/primitives/fact"
 
 	"gitlab.com/elixxir/client/storage/user"
 	"gitlab.com/elixxir/client/storage/versioned"
@@ -173,12 +174,11 @@ func (r ReceptionIdentity) GetContact() contact.Contact {
 	grp, _ := r.GetGroup()
 	dhKeyPriv, _ := r.GetDHKeyPrivate()
 
-	dhPub := grp.ExpG(dhKeyPriv, grp.NewInt(1))
 	ct := contact.Contact{
 		ID:             r.ID,
-		DhPubKey:       dhPub,
+		DhPubKey:       diffieHellman.GeneratePublicKey(dhKeyPriv, grp),
 		OwnershipProof: nil,
-		Facts:          nil,
+		Facts:          make([]fact.Fact, 0),
 	}
 	return ct
 }
diff --git a/xxdk/user.go b/xxdk/user.go
index 6f50a91e55b2c1c529abe5fdc418cd12b2e6f021..9037ace167406a33be59b011f0c8cdc7dc3ef255 100644
--- a/xxdk/user.go
+++ b/xxdk/user.go
@@ -252,7 +252,7 @@ func createNewVanityUser(rng csprng.Source,
 }
 
 // createPrecannedUser
-func createPrecannedUser(precannedID uint, rng csprng.Source, e2e *cyclic.Group) user.Info {
+func createPrecannedUser(precannedID uint, rng csprng.Source, grp *cyclic.Group) user.Info {
 	// Salt, UID, etc gen
 	salt := make([]byte, SaltSize)
 
@@ -263,13 +263,14 @@ func createPrecannedUser(precannedID uint, rng csprng.Source, e2e *cyclic.Group)
 	// NOTE: not used... RSA Keygen (4096 bit defaults)
 	rsaKey, err := rsa.GenerateKey(rng, rsa.DefaultRSABitLen)
 	if err != nil {
+		r
 		jww.FATAL.Panicf(err.Error())
 	}
 
-	prime := e2e.GetPBytes()
+	prime := grp.GetPBytes()
 	keyLen := len(prime)
 	prng := rand.New(rand.NewSource(int64(precannedID)))
-	dhPrivKey := diffieHellman.GeneratePrivateKey(keyLen, e2e, prng)
+	dhPrivKey := diffieHellman.GeneratePrivateKey(keyLen, grp, prng)
 	return user.Info{
 		TransmissionID:   &userID,
 		TransmissionSalt: salt,
@@ -277,7 +278,7 @@ func createPrecannedUser(precannedID uint, rng csprng.Source, e2e *cyclic.Group)
 		ReceptionSalt:    salt,
 		Precanned:        true,
 		E2eDhPrivateKey:  dhPrivKey,
-		E2eDhPublicKey:   e2e.ExpG(dhPrivKey, e2e.NewInt(1)),
+		E2eDhPublicKey:   diffieHellman.GeneratePublicKey(dhPrivKey, grp),
 		TransmissionRSA:  rsaKey,
 		ReceptionRSA:     rsaKey,
 	}