diff --git a/xxdk/precan.go b/xxdk/precan.go
index 1144cbc40c5f061a56dc7d72b40134782209e61e..98edf51028937e17a0e555c7de1d91b60a3ff35b 100644
--- a/xxdk/precan.go
+++ b/xxdk/precan.go
@@ -61,9 +61,18 @@ func NewPrecannedClient(precannedID uint, defJSON, storageDir string,
 func (m *E2e) MakePrecannedAuthenticatedChannel(precannedID uint) (
 	contact.Contact, error) {
 
-	precan := m.GetReceptionIdentity().GetContact()
+	rng := m.GetRng().GetStream()
+	precanUserInfo := createPrecannedUser(precannedID, rng, m.GetStorage().GetE2EGroup())
+	rng.Close()
+	precanRecipient, err := buildReceptionIdentity(precanUserInfo.ReceptionID,
+		precanUserInfo.ReceptionSalt, precanUserInfo.ReceptionRSA,
+		m.GetStorage().GetE2EGroup(), precanUserInfo.E2eDhPrivateKey)
+	if err != nil {
+		return contact.Contact{}, err
+	}
+	precanContact := precanRecipient.GetContact()
 
-	myID := binary.BigEndian.Uint64(m.GetStorage().GetReceptionID()[:])
+	myID := binary.BigEndian.Uint64(m.GetReceptionIdentity().ID[:])
 	// Pick a variant based on if their ID is bigger than mine.
 	myVariant := sidh.KeyVariantSidhA
 	theirVariant := sidh.KeyVariant(sidh.KeyVariantSidhB)
@@ -74,7 +83,7 @@ func (m *E2e) MakePrecannedAuthenticatedChannel(precannedID uint) (
 	prng1 := rand.New(rand.NewSource(int64(precannedID)))
 	theirSIDHPrivKey := util.NewSIDHPrivateKey(theirVariant)
 	theirSIDHPubKey := util.NewSIDHPublicKey(theirVariant)
-	err := theirSIDHPrivKey.Generate(prng1)
+	err = theirSIDHPrivKey.Generate(prng1)
 	if err != nil {
 		return contact.Contact{}, err
 	}
@@ -92,7 +101,7 @@ func (m *E2e) MakePrecannedAuthenticatedChannel(precannedID uint) (
 	// add the precanned user as a e2e contact
 	// FIXME: these params need to be threaded through...
 	sesParam := session.GetDefaultParams()
-	_, err = m.e2e.AddPartner(precan.ID, precan.DhPubKey,
+	_, err = m.e2e.AddPartner(precanContact.ID, precanContact.DhPubKey,
 		m.e2e.GetHistoricalDHPrivkey(), theirSIDHPubKey,
 		mySIDHPrivKey, sesParam, sesParam)
 
@@ -100,5 +109,5 @@ func (m *E2e) MakePrecannedAuthenticatedChannel(precannedID uint) (
 	// the channel
 	m.GetCmix().CheckInProgressMessages()
 
-	return precan, err
+	return precanContact, err
 }