diff --git a/cmd/connect.go b/cmd/connect.go
index badb69b3afe8fe2a9958d3397dfb3dfb796cf07d..a28f2d9e91b7fbc508cccd469821543074fee8a4 100644
--- a/cmd/connect.go
+++ b/cmd/connect.go
@@ -71,7 +71,7 @@ func secureConnServer(forceLegacy bool, statePass []byte, statePath, regCode str
 	connChan := make(chan connect.Connection, 1)
 
 	// Load client state and identity------------------------------------------
-	net := loadOrInitNet(statePass, statePath, regCode, cmixParams)
+	net := loadOrInitCmix(statePass, statePath, regCode, cmixParams)
 	identity := loadOrInitReceptionIdentity(forceLegacy, net)
 
 	// Save contact file-------------------------------------------------------
@@ -191,7 +191,7 @@ func insecureConnServer(forceLegacy bool, statePass []byte, statePath, regCode s
 	connChan := make(chan connect.Connection, 1)
 
 	// Load client state and identity------------------------------------------
-	net := loadOrInitNet(statePass, statePath, regCode, cmixParams)
+	net := loadOrInitCmix(statePass, statePath, regCode, cmixParams)
 	identity := loadOrInitReceptionIdentity(forceLegacy, net)
 
 	// Save contact file-------------------------------------------------------
@@ -311,7 +311,7 @@ func secureConnClient(forceLegacy bool, statePass []byte, statePath, regCode str
 	var messenger *xxdk.E2e
 	if viper.GetBool(connectionEphemeralFlag) {
 		fmt.Println("Loading ephemerally")
-		messenger = loadOrInitMessengerEphemeral(forceLegacy, statePass, statePath, regCode,
+		messenger = loadOrInitEphemeral(forceLegacy, statePass, statePath, regCode,
 			cmixParams, e2eParams, xxdk.DefaultAuthCallbacks{})
 	} else {
 		fmt.Println("Loading non-ephemerally")
@@ -385,7 +385,7 @@ func insecureConnClient(forceLegacy bool, statePass []byte, statePath, regCode s
 	var messenger *xxdk.E2e
 	if viper.GetBool(connectionEphemeralFlag) {
 		fmt.Println("Loading ephemerally")
-		messenger = loadOrInitMessengerEphemeral(forceLegacy, statePass, statePath, regCode,
+		messenger = loadOrInitEphemeral(forceLegacy, statePass, statePath, regCode,
 			cmixParams, e2eParams, xxdk.DefaultAuthCallbacks{})
 	} else {
 		fmt.Println("Loading non-ephemerally")
diff --git a/cmd/init.go b/cmd/init.go
index ca1fadbd2153d194d5d3aa2665b95d6b0753b864..d278a0f9b834b62ca68f9e1cdf249432328327ef 100644
--- a/cmd/init.go
+++ b/cmd/init.go
@@ -71,12 +71,10 @@ func init() {
 	rootCmd.AddCommand(initCmd)
 }
 
-// loadOrInitMessenger will build a new xxdk.E2e from existing storage
+// loadOrInitCmix will build a new xxdk.Cmix from existing storage
 // or from a new storage that it will create if none already exists
-func loadOrInitMessenger(forceLegacy bool, password []byte, storeDir, regCode string,
-	cmixParams xxdk.CMIXParams, e2eParams xxdk.E2EParams, cbs xxdk.AuthCallbacks) *xxdk.E2e {
-	jww.INFO.Printf("Using normal sender")
-
+func loadOrInitCmix(password []byte, storeDir, regCode string,
+	cmixParams xxdk.CMIXParams) *xxdk.Cmix {
 	// create a new client if none exist
 	if _, err := os.Stat(storeDir); errors.Is(err, fs.ErrNotExist) {
 		// Initialize from scratch
@@ -97,6 +95,12 @@ func loadOrInitMessenger(forceLegacy bool, password []byte, storeDir, regCode st
 		jww.FATAL.Panicf("%+v", err)
 	}
 
+	return net
+}
+
+// loadOrInitReceptionIdentity will build a new xxdk.ReceptionIdentity from existing storage
+// or from a new storage that it will create if none already exists
+func loadOrInitReceptionIdentity(forceLegacy bool, net *xxdk.Cmix) xxdk.ReceptionIdentity {
 	// Load or initialize xxdk.ReceptionIdentity storage
 	identity, err := xxdk.LoadReceptionIdentity(identityStorageKey, net)
 	if err != nil {
@@ -115,116 +119,38 @@ func loadOrInitMessenger(forceLegacy bool, password []byte, storeDir, regCode st
 			jww.FATAL.Panicf("%+v", err)
 		}
 	}
-
-	messenger, err := xxdk.Login(net, cbs, identity, e2eParams)
-	if err != nil {
-		jww.FATAL.Panicf("%+v", err)
-	}
-	return messenger
+	return identity
 }
 
-// loadOrInitMessengerEphemeral will build a new ephemeral xxdk.E2e.
-func loadOrInitMessengerEphemeral(forceLegacy bool, password []byte, storeDir, regCode string,
+// loadOrInitMessenger will build a new xxdk.E2e from existing storage
+// or from a new storage that it will create if none already exists
+func loadOrInitMessenger(forceLegacy bool, password []byte, storeDir, regCode string,
 	cmixParams xxdk.CMIXParams, e2eParams xxdk.E2EParams, cbs xxdk.AuthCallbacks) *xxdk.E2e {
 	jww.INFO.Printf("Using normal sender")
 
-	// create a new client if none exist
-	if _, err := os.Stat(storeDir); errors.Is(err, fs.ErrNotExist) {
-		// Initialize from scratch
-		ndfJson, err := ioutil.ReadFile(viper.GetString("ndf"))
-		if err != nil {
-			jww.FATAL.Panicf("%+v", err)
-		}
-
-		err = xxdk.NewCmix(string(ndfJson), storeDir, password, regCode)
-		if err != nil {
-			jww.FATAL.Panicf("%+v", err)
-		}
-	}
+	net := loadOrInitCmix(password, storeDir, regCode, cmixParams)
+	identity := loadOrInitReceptionIdentity(forceLegacy, net)
 
-	// Initialize from storage
-	net, err := xxdk.LoadCmix(storeDir, password, cmixParams)
-	if err != nil {
-		jww.FATAL.Panicf("%+v", err)
-	}
-
-	// Load or initialize xxdk.ReceptionIdentity storage
-	identity, err := xxdk.LoadReceptionIdentity(identityStorageKey, net)
-	if err != nil {
-		if forceLegacy {
-			jww.INFO.Printf("Forcing legacy sender")
-			identity, err = xxdk.MakeLegacyReceptionIdentity(net)
-		} else {
-			identity, err = xxdk.MakeReceptionIdentity(net)
-		}
-		if err != nil {
-			jww.FATAL.Panicf("%+v", err)
-		}
-
-		err = xxdk.StoreReceptionIdentity(identityStorageKey, identity, net)
-		if err != nil {
-			jww.FATAL.Panicf("%+v", err)
-		}
-	}
-
-	messenger, err := xxdk.LoginEphemeral(net, cbs, identity, e2eParams)
+	messenger, err := xxdk.Login(net, cbs, identity, e2eParams)
 	if err != nil {
 		jww.FATAL.Panicf("%+v", err)
 	}
 	return messenger
 }
 
-// loadOrInitNet will build a new xxdk.Cmix from existing storage
-// or from a new storage that it will create if none already exists
-func loadOrInitNet(password []byte, storeDir, regCode string,
-	cmixParams xxdk.CMIXParams) *xxdk.Cmix {
-	// create a new client if none exist
-	if _, err := os.Stat(storeDir); errors.Is(err, fs.ErrNotExist) {
-		// Initialize from scratch
-		ndfJson, err := ioutil.ReadFile(viper.GetString("ndf"))
-		if err != nil {
-			jww.FATAL.Panicf("%+v", err)
-		}
+// loadOrInitEphemeral will build a new ephemeral xxdk.E2e.
+func loadOrInitEphemeral(forceLegacy bool, password []byte, storeDir, regCode string,
+	cmixParams xxdk.CMIXParams, e2eParams xxdk.E2EParams, cbs xxdk.AuthCallbacks) *xxdk.E2e {
+	jww.INFO.Printf("Using ephemeral sender")
 
-		err = xxdk.NewCmix(string(ndfJson), storeDir, password, regCode)
-		if err != nil {
-			jww.FATAL.Panicf("%+v", err)
-		}
-	}
+	net := loadOrInitCmix(password, storeDir, regCode, cmixParams)
+	identity := loadOrInitReceptionIdentity(forceLegacy, net)
 
-	// Initialize from storage
-	net, err := xxdk.LoadCmix(storeDir, password, cmixParams)
+	messenger, err := xxdk.LoginEphemeral(net, cbs, identity, e2eParams)
 	if err != nil {
 		jww.FATAL.Panicf("%+v", err)
 	}
-
-	return net
-}
-
-// loadOrInitReceptionIdentity will build a new xxdk.ReceptionIdentity from existing storage
-// or from a new storage that it will create if none already exists
-func loadOrInitReceptionIdentity(forceLegacy bool, net *xxdk.Cmix) xxdk.ReceptionIdentity {
-	// Load or initialize xxdk.ReceptionIdentity storage
-	identity, err := xxdk.LoadReceptionIdentity(identityStorageKey, net)
-	if err != nil {
-		if forceLegacy {
-			jww.INFO.Printf("Forcing legacy sender")
-			identity, err = xxdk.MakeLegacyReceptionIdentity(net)
-		} else {
-			identity, err = xxdk.MakeReceptionIdentity(net)
-		}
-		if err != nil {
-			jww.FATAL.Panicf("%+v", err)
-		}
-
-		err = xxdk.StoreReceptionIdentity(identityStorageKey, identity, net)
-		if err != nil {
-			jww.FATAL.Panicf("%+v", err)
-		}
-	}
-
-	return identity
-
+	return messenger
 }
 
 // loadOrInitVanity will build a new xxdk.E2e from existing storage