diff --git a/api/client.go b/api/client.go
index 9d2bfe9795f391cc8bb4e409ec6a1c21f8423aa2..b775354dcbd951d04bd289a05ef91bd099b58f96 100644
--- a/api/client.go
+++ b/api/client.go
@@ -218,7 +218,7 @@ func OpenClient(storageDir string, password []byte, parameters params.Network) (
 	// Use fastRNG for RNG ops (AES fortuna based RNG using system RNG)
 	rngStreamGen := fastRNG.NewStreamGenerator(12, 1024, csprng.NewSystemRNG)
 
-	// Get current client version
+	// get current client version
 	currentVersion, err := version.ParseVersion(SEMVER)
 	if err != nil {
 		return nil, errors.WithMessage(err, "Could not parse version string.")
@@ -590,7 +590,7 @@ func (c *Client) GetErrorsChannel() <-chan interfaces.ClientError {
 //   - Historical Round Retrieval (/network/rounds/historical.go)
 //		Retrieves data about rounds which are too old to be stored by the client
 //	 - Message Retrieval Worker Group (/network/rounds/retrieve.go)
-//		Requests all messages in a given round from the gateway of the last node
+//		Requests all messages in a given round from the gateway of the last nodes
 //	 - Message Handling Worker Group (/network/message/handle.go)
 //		Decrypts and partitions messages when signals via the Switchboard
 //	 - Health Tracker (/network/health)
@@ -707,14 +707,14 @@ func (c *Client) GetRateLimitParams() (uint32, uint32, int64) {
 		rateLimitParams.LeakDuration.Nanoseconds()
 }
 
-// GetNodeRegistrationStatus gets the current state of node registration. It
+// GetNodeRegistrationStatus gets the current state of nodes registration. It
 // returns the total number of nodes in the NDF and the number of those which
 // are currently registers with. An error is returned if the network is not
 // healthy.
 func (c *Client) GetNodeRegistrationStatus() (int, int, error) {
 	// Return an error if the network is not healthy
 	if !c.GetHealth().IsHealthy() {
-		return 0, 0, errors.New("Cannot get number of node registrations when " +
+		return 0, 0, errors.New("Cannot get number of nodes registrations when " +
 			"network is not healthy")
 	}
 
@@ -727,7 +727,7 @@ func (c *Client) GetNodeRegistrationStatus() (int, int, error) {
 	for i, n := range nodes {
 		nid, err := id.Unmarshal(n.ID)
 		if err != nil {
-			return 0, 0, errors.Errorf("Failed to unmarshal node ID %v "+
+			return 0, 0, errors.Errorf("Failed to unmarshal nodes ID %v "+
 				"(#%d): %s", n.ID, i, err.Error())
 		}
 		if n.Status == ndf.Stale {
@@ -739,7 +739,7 @@ func (c *Client) GetNodeRegistrationStatus() (int, int, error) {
 		}
 	}
 
-	// Get the number of in progress node registrations
+	// get the number of in progress nodes registrations
 	return numRegistered, len(nodes) - numStale, nil
 }
 
@@ -873,7 +873,7 @@ func (c *Client) SetProxiedBins(binStrings []string) error {
 // GetPreferredBins returns the geographic bin or bins that the provided two
 // character country code is a part of.
 func (c *Client) GetPreferredBins(countryCode string) ([]string, error) {
-	// Get the bin that the country is in
+	// get the bin that the country is in
 	bin, exists := region.GetCountryBin(countryCode)
 	if !exists {
 		return nil, errors.Errorf("failed to find geographic bin for country %q",
@@ -943,7 +943,7 @@ func checkVersionAndSetupStorage(def *ndf.NetworkDefinition,
 	protoUser user.User,
 	cmixGrp, e2eGrp *cyclic.Group, rngStreamGen *fastRNG.StreamGenerator,
 	isPrecanned bool, registrationCode string) (*storage.Session, error) {
-	// Get current client version
+	// get current client version
 	currentVersion, err := version.ParseVersion(SEMVER)
 	if err != nil {
 		return nil, errors.WithMessage(err, "Could not parse version string.")
diff --git a/api/utils_test.go b/api/utils_test.go
index f1fea1358c4bd46a33c3a8f66d7cf56568485d67..d53aa46eaa616c321881457ee99f84a4d30232bf 100644
--- a/api/utils_test.go
+++ b/api/utils_test.go
@@ -147,7 +147,7 @@ func getNDF(face interface{}) *ndf.NetworkDefinition {
 	}
 }
 
-// Signs a passed round info with the key tied to the test node cert
+// Signs a passed round info with the key tied to the test nodes cert
 // used throughout utils and other tests
 func signRoundInfo(ri *pb.RoundInfo) error {
 	privKeyFromFile := testkeys.LoadFromPath(testkeys.GetNodeKeyPath())
diff --git a/auth/fmt_test.go b/auth/fmt_test.go
index 30580ec1bef400eb05409d3033076e9f0b00b4cd..59e63cba01f78904fa594947a40726b26492ff5d 100644
--- a/auth/fmt_test.go
+++ b/auth/fmt_test.go
@@ -58,7 +58,7 @@ func TestNewBaseFormat(t *testing.T) {
 
 /* Tests the setter/getter methods for baseFormat */
 
-// Set/Get PubKey tests
+// Set/get PubKey tests
 func TestBaseFormat_SetGetPubKey(t *testing.T) {
 	// Construct message
 	pubKeySize := 256
@@ -86,7 +86,7 @@ func TestBaseFormat_SetGetPubKey(t *testing.T) {
 
 }
 
-// Set/Get EcrPayload tests
+// Set/get EcrPayload tests
 func TestBaseFormat_SetGetEcrPayload(t *testing.T) {
 	// Construct message
 	pubKeySize := 256
@@ -201,7 +201,7 @@ func TestNewEcrFormat(t *testing.T) {
 
 /* Tests the setter/getter methods for ecrFormat */
 
-// Set/Get ownership tests
+// Set/get ownership tests
 func TestEcrFormat_SetGetOwnership(t *testing.T) {
 	// Construct message
 	payloadSize := ownershipSize*2 + sidhinterface.PubKeyByteSize + 1
@@ -237,7 +237,7 @@ func TestEcrFormat_SetGetOwnership(t *testing.T) {
 	ecrMsg.SetOwnership([]byte("ownership"))
 }
 
-// Set/Get payload tests
+// Set/get payload tests
 func TestEcrFormat_SetGetPayload(t *testing.T) {
 	// Construct message
 	payloadSize := ownershipSize*2 + sidhinterface.PubKeyByteSize + 1
@@ -358,7 +358,7 @@ func TestNewRequestFormat(t *testing.T) {
 
 /* Setter/Getter tests for RequestFormat */
 
-// Unit test for Get/SetID
+// Unit test for get/SetID
 func TestRequestFormat_SetGetID(t *testing.T) {
 	// Construct message
 	payloadSize := id.ArrIDLen*2 - 1 + sidhinterface.PubKeyByteSize + 1
@@ -399,7 +399,7 @@ func TestRequestFormat_SetGetID(t *testing.T) {
 
 }
 
-// Unit test for Get/SetMsgPayload
+// Unit test for get/SetMsgPayload
 func TestRequestFormat_SetGetMsgPayload(t *testing.T) {
 	// Construct message
 	payloadSize := id.ArrIDLen*3 - 1 + sidhinterface.PubKeyByteSize + 1
diff --git a/backup/backup.go b/backup/backup.go
index b8b72f2563844980c21d8d0ebb9309b85c996221..ea9667c0391b495b6c1c814cf5cf27f19341002e 100644
--- a/backup/backup.go
+++ b/backup/backup.go
@@ -268,18 +268,18 @@ func (b *Backup) assembleBackup() backup.Backup {
 		Contacts:                  backup.Contacts{},
 	}
 
-	// Get user and storage user
+	// get user and storage user
 	u := b.store.GetUser()
 	su := b.store.User()
 
-	// Get registration timestamp
+	// get registration timestamp
 	bu.RegistrationTimestamp = u.RegistrationTimestamp
 
-	// Get registration code; ignore the error because if there is no
+	// get registration code; ignore the error because if there is no
 	// registration, then an empty string is returned
 	bu.RegistrationCode, _ = b.store.GetRegCode()
 
-	// Get transmission identity
+	// get transmission identity
 	bu.TransmissionIdentity = backup.TransmissionIdentity{
 		RSASigningPrivateKey: u.TransmissionRSA,
 		RegistrarSignature:   su.GetTransmissionRegistrationValidationSignature(),
@@ -287,7 +287,7 @@ func (b *Backup) assembleBackup() backup.Backup {
 		ComputedID:           u.TransmissionID,
 	}
 
-	// Get reception identity
+	// get reception identity
 	bu.ReceptionIdentity = backup.ReceptionIdentity{
 		RSASigningPrivateKey: u.ReceptionRSA,
 		RegistrarSignature:   su.GetReceptionRegistrationValidationSignature(),
@@ -297,10 +297,10 @@ func (b *Backup) assembleBackup() backup.Backup {
 		DHPublicKey:          u.E2eDhPublicKey,
 	}
 
-	// Get facts
+	// get facts
 	bu.UserDiscoveryRegistration.FactList = b.store.GetUd().GetFacts()
 
-	// Get contacts
+	// get contacts
 	bu.Contacts.Identities = b.store.E2e().GetPartners()
 
 	//add the memoized json params
diff --git a/backup/backup_test.go b/backup/backup_test.go
index 1dc785aa311e0916f06f71618975dc9afadb1c25..434c76e78665692524849952b599652be428600a 100644
--- a/backup/backup_test.go
+++ b/backup/backup_test.go
@@ -101,7 +101,7 @@ func Test_resumeBackup(t *testing.T) {
 		t.Error("Timed out waiting for callback.")
 	}
 
-	// Get key and salt to compare to later
+	// get key and salt to compare to later
 	key1, salt1, _, err := loadBackup(b.store.GetKV())
 	if err != nil {
 		t.Errorf("Failed to load key, salt, and params from newly "+
@@ -127,7 +127,7 @@ func Test_resumeBackup(t *testing.T) {
 			expectedPassword, loadedPassword)
 	}
 
-	// Get key, salt, and parameters of resumed backup
+	// get key, salt, and parameters of resumed backup
 	key2, salt2, _, err := loadBackup(b.store.GetKV())
 	if err != nil {
 		t.Errorf("Failed to load key, salt, and params from resumed "+
@@ -177,7 +177,7 @@ func TestBackup_TriggerBackup(t *testing.T) {
 	cb := func(encryptedBackup []byte) { cbChan <- encryptedBackup }
 	b := newTestBackup("MySuperSecurePassword", cb, t)
 
-	// Get password
+	// get password
 	password, err := loadPassword(b.store.GetKV())
 	if err != nil {
 		t.Errorf("Failed to load password from storage: %+v", err)
diff --git a/backup/keyStorage.go b/backup/keyStorage.go
index c4627396d6c4abb8be19c6d0d0d3c8d1859c57e4..9a3f5cfe564abc782e4eb199ed7dbde254318fea 100644
--- a/backup/keyStorage.go
+++ b/backup/keyStorage.go
@@ -76,7 +76,7 @@ func marshalBackup(key, salt []byte, params backup.Params) []byte {
 // unmarshalBackup unmarshalls the byte slice into a key, salt, and params.
 func unmarshalBackup(buf []byte) (key, salt []byte, params backup.Params, err error) {
 	buff := bytes.NewBuffer(buf)
-	// Get key
+	// get key
 	key = make([]byte, keyLen)
 	n, err := buff.Read(key)
 	if err != nil || n != keyLen {
@@ -84,7 +84,7 @@ func unmarshalBackup(buf []byte) (key, salt []byte, params backup.Params, err er
 		return
 	}
 
-	// Get salt
+	// get salt
 	salt = make([]byte, saltLen)
 	n, err = buff.Read(salt)
 	if err != nil || n != saltLen {
@@ -92,7 +92,7 @@ func unmarshalBackup(buf []byte) (key, salt []byte, params backup.Params, err er
 		return
 	}
 
-	// Get params from remaining bytes
+	// get params from remaining bytes
 	err = params.Unmarshal(buff.Bytes())
 	if err != nil {
 		err = errors.Errorf("reading params failed: %+v", err)
diff --git a/bindings/client.go b/bindings/client.go
index edda4a31dfa78239b4f7593f0a3db71af0a2021d..6e0f519a4d69b6df52b2631afb2023ab0efe0c86 100644
--- a/bindings/client.go
+++ b/bindings/client.go
@@ -227,7 +227,7 @@ func UnmarshalSendReport(b []byte) (*SendReport, error) {
 //   - Historical Round Retrieval (/network/rounds/historical.go)
 //		Retrieves data about rounds which are too old to be stored by the client
 //	 - Message Retrieval Worker Group (/network/rounds/retrieve.go)
-//		Requests all messages in a given round from the gateway of the last node
+//		Requests all messages in a given round from the gateway of the last nodes
 //	 - Message Handling Worker Group (/network/message/handle.go)
 //		Decrypts and partitions messages when signals via the Switchboard
 //	 - Health Tracker (/network/health)
diff --git a/bindings/registrationStatus.go b/bindings/registrationStatus.go
index 5d33cbd6e2031b39455363e096153afcf6c38833..eab2590984413d014695f1489989ae805653fff3 100644
--- a/bindings/registrationStatus.go
+++ b/bindings/registrationStatus.go
@@ -7,7 +7,7 @@
 
 package bindings
 
-// NodeRegistrationsStatus structure for returning node registration statuses
+// NodeRegistrationsStatus structure for returning nodes registration statuses
 // for bindings.
 type NodeRegistrationsStatus struct {
 	registered int
diff --git a/bindings/ud.go b/bindings/ud.go
index 5f3bd861ed7a67f419e31751e2afaad1152f93ee..df34f572de41569a8c2969c24c9fc24b869348a0 100644
--- a/bindings/ud.go
+++ b/bindings/ud.go
@@ -307,7 +307,7 @@ func (ud UserDiscovery) MultiLookup(ids *IdList, callback MultiLookupCallback,
 		failedIDList := make([]*id.ID, 0, len(idList))
 		var concatonatedErrs string
 
-		//Get the responses and return
+		//get the responses and return
 		for numReturned := 0; numReturned < len(idList); numReturned++ {
 			response := <-results
 			if response.err == nil {
diff --git a/cmd/fileTransfer.go b/cmd/fileTransfer.go
index 932abff2a8cc1a99574fb4128c6762ba6f84a535..c259a6250e769808921694d0d828a0072107664b 100644
--- a/cmd/fileTransfer.go
+++ b/cmd/fileTransfer.go
@@ -62,7 +62,7 @@ var ftCmd = &cobra.Command{
 
 			numReg, total, err = client.GetNodeRegistrationStatus()
 			if err != nil {
-				jww.FATAL.Panicf("Failed to get node registration status: %+v",
+				jww.FATAL.Panicf("Failed to get nodes registration status: %+v",
 					err)
 			}
 
@@ -170,13 +170,13 @@ func sendFile(filePath, fileType, filePreviewPath, filePreviewString,
 	recipientContactPath string, retry float32, m *ft.Manager,
 	done chan struct{}) {
 
-	// Get file from path
+	// get file from path
 	fileData, err := utils.ReadFile(filePath)
 	if err != nil {
 		jww.FATAL.Panicf("[FT] Failed to read file %q: %+v", filePath, err)
 	}
 
-	// Get file preview from path
+	// get file preview from path
 	filePreviewData := []byte(filePreviewString)
 	if filePreviewPath != "" {
 		filePreviewData, err = utils.ReadFile(filePreviewPath)
@@ -192,7 +192,7 @@ func sendFile(filePath, fileType, filePreviewPath, filePreviewString,
 		fileName = fileName[:ft.FileNameMaxLen]
 	}
 
-	// Get recipient contact from file
+	// get recipient contact from file
 	recipient := getContactFromFile(recipientContactPath)
 
 	jww.INFO.Printf("[FT] Going to start sending file %q to %s {type: %q, "+
diff --git a/cmd/group.go b/cmd/group.go
index 1c7365921187bc6fda2754b2950498709c5f46f9..f0e1d463c62afd5fba13963a59a796b932354600 100644
--- a/cmd/group.go
+++ b/cmd/group.go
@@ -63,7 +63,7 @@ var groupCmd = &cobra.Command{
 			jww.INFO.Printf("Registering with nodes (%d/%d)...", numReg, total)
 		}
 
-		// Get group message and name
+		// get group message and name
 		msgBody := []byte(viper.GetString("message"))
 		name := []byte(viper.GetString("name"))
 		timeout := viper.GetDuration("receiveTimeout")
diff --git a/cmd/root.go b/cmd/root.go
index d7bb3d6f5c65399751fb00a454752cc103c70902..22615567e290d6c8e1ded8c89d972de52a304a74 100644
--- a/cmd/root.go
+++ b/cmd/root.go
@@ -191,7 +191,7 @@ var rootCmd = &cobra.Command{
 		jww.INFO.Printf("User: %s", user.ReceptionID)
 		writeContact(user.GetContact())
 
-		// Get Recipient and/or set it to myself
+		// get Recipient and/or set it to myself
 		isPrecanPartner := false
 		recipientContact := readContact()
 		recipientID := recipientContact.ID
diff --git a/cmd/single.go b/cmd/single.go
index cd6cc0a8815caa9969f02123274a0023512988e9..bacc818dbeab9591c4d6b0e6a582352de94b7b3b 100644
--- a/cmd/single.go
+++ b/cmd/single.go
@@ -75,7 +75,7 @@ var singleCmd = &cobra.Command{
 		// Make single-use manager and start receiving process
 		singleMng := single.NewManager(client)
 
-		// Get the tag
+		// get the tag
 		tag := viper.GetString("tag")
 
 		// Register the callback
@@ -103,7 +103,7 @@ var singleCmd = &cobra.Command{
 
 		// If the send flag is set, then send a message
 		if viper.GetBool("send") {
-			// Get message details
+			// get message details
 			payload := []byte(viper.GetString("message"))
 			partner := readSingleUseContact("contact")
 			maxMessages := uint8(viper.GetUint("maxMessages"))
@@ -260,7 +260,7 @@ func makeResponsePayloadPart(m *single.Manager, payload []byte) []byte {
 // readSingleUseContact opens the contact specified in the CLI flags. Panics if
 // no file provided or if an error occurs while reading or unmarshalling it.
 func readSingleUseContact(key string) contact.Contact {
-	// Get path
+	// get path
 	filePath := viper.GetString(key)
 	if filePath == "" {
 		jww.FATAL.Panicf("Failed to read contact file: no file path provided.")
diff --git a/cmd/ud.go b/cmd/ud.go
index dc940811b9ff1888ae4b221b8fa8ad5accb66e7a..39d5a8aa764c7c3509b76bf474ebd5de11b11562 100644
--- a/cmd/ud.go
+++ b/cmd/ud.go
@@ -36,7 +36,7 @@ var udCmd = &cobra.Command{
 	Run: func(cmd *cobra.Command, args []string) {
 		client := initClient()
 
-		// Get user and save contact to file
+		// get user and save contact to file
 		user := client.GetUser()
 		jww.INFO.Printf("User: %s", user.ReceptionID)
 		writeContact(user.GetContact())
diff --git a/dummy/send.go b/dummy/send.go
index a01f6ba69cc1940fda4735a9278cf460fbd3b7a9..e3d0818e31e57000c5a6cfc2b553e2899b2ee539 100644
--- a/dummy/send.go
+++ b/dummy/send.go
@@ -54,7 +54,7 @@ func (m *Manager) sendThread(stop *stoppable.Single) {
 			nextSendChanPtr = &(m.randomTimer().C)
 
 			go func() {
-				// Get list of random messages and recipients
+				// get list of random messages and recipients
 				rng := m.rng.GetStream()
 				msgs, err := m.newRandomMessages(rng)
 				if err != nil {
diff --git a/dummy/send_test.go b/dummy/send_test.go
index 11d40fbc6548150723ba5f865913e8312127cbda..6a5a91feff0c152b70982e60e769aae53c37813e 100644
--- a/dummy/send_test.go
+++ b/dummy/send_test.go
@@ -114,7 +114,7 @@ func TestManager_sendMessages(t *testing.T) {
 		t.Errorf("sendMessages returned an error: %+v", err)
 	}
 
-	// Get sent messages
+	// get sent messages
 	receivedMsgs := m.net.(*testNetworkManager).GetMsgList()
 
 	// Test that all messages were received
diff --git a/fileTransfer/manager.go b/fileTransfer/manager.go
index b188bcc203fe5e286507a5f7e7de4cb34485a836..236881b0693d24eabf43f2684f36eda90641cc05 100644
--- a/fileTransfer/manager.go
+++ b/fileTransfer/manager.go
@@ -280,7 +280,7 @@ func (m Manager) Send(fileName, fileType string, fileData []byte,
 	}
 	rng.Close()
 
-	// Get the size of each file part
+	// get the size of each file part
 	partSize, err := m.getPartSize()
 	if err != nil {
 		return ftCrypto.TransferID{}, errors.Errorf(getPartSizeErr, err)
@@ -329,7 +329,7 @@ func (m Manager) Send(fileName, fileType string, fileData []byte,
 // most once per period.
 func (m Manager) RegisterSentProgressCallback(tid ftCrypto.TransferID,
 	progressCB interfaces.SentProgressCallback, period time.Duration) error {
-	// Get the transfer for the given ID
+	// get the transfer for the given ID
 	transfer, err := m.sent.GetTransfer(tid)
 	if err != nil {
 		return err
@@ -350,7 +350,7 @@ func (m Manager) RegisterSentProgressCallback(tid ftCrypto.TransferID,
 //  - Can you reuse fingerprints?
 //  - What to do if sendE2E fails?
 func (m Manager) Resend(tid ftCrypto.TransferID) error {
-	// Get the transfer for the given ID
+	// get the transfer for the given ID
 	transfer, err := m.sent.GetTransfer(tid)
 	if err != nil {
 		return err
@@ -369,7 +369,7 @@ func (m Manager) Resend(tid ftCrypto.TransferID) error {
 // storage once a transfer has completed or reached the retry limit. Returns an
 // error if the transfer has not run out of retries.
 func (m Manager) CloseSend(tid ftCrypto.TransferID) error {
-	// Get the transfer for the given ID
+	// get the transfer for the given ID
 	st, err := m.sent.GetTransfer(tid)
 	if err != nil {
 		return err
@@ -395,13 +395,13 @@ func (m Manager) CloseSend(tid ftCrypto.TransferID) error {
 // Returns an error if the transfer is not complete, the full file cannot be
 // verified, or if the transfer cannot be found.
 func (m Manager) Receive(tid ftCrypto.TransferID) ([]byte, error) {
-	// Get the transfer for the given ID
+	// get the transfer for the given ID
 	rt, err := m.received.GetTransfer(tid)
 	if err != nil {
 		return nil, err
 	}
 
-	// Get the file from the transfer
+	// get the file from the transfer
 	file, err := rt.GetFile()
 	if err != nil {
 		return nil, err
@@ -421,7 +421,7 @@ func (m Manager) Receive(tid ftCrypto.TransferID) ([]byte, error) {
 // updates, at most once per period.
 func (m Manager) RegisterReceivedProgressCallback(tid ftCrypto.TransferID,
 	progressCB interfaces.ReceivedProgressCallback, period time.Duration) error {
-	// Get the transfer for the given ID
+	// get the transfer for the given ID
 	transfer, err := m.received.GetTransfer(tid)
 	if err != nil {
 		return err
diff --git a/fileTransfer/manager_test.go b/fileTransfer/manager_test.go
index 63952f154487962fc6e504c56d58f6d0d00cda02..a4b06b61db081fd98e8ee7b8b643f42f49e73e7c 100644
--- a/fileTransfer/manager_test.go
+++ b/fileTransfer/manager_test.go
@@ -125,7 +125,7 @@ func TestManager_Send(t *testing.T) {
 	}
 
 	////
-	// Get NewFileTransfer E2E message
+	// get NewFileTransfer E2E message
 	////
 	sendMsg := m.net.(*testNetworkManager).GetE2eMsg(0)
 	if sendMsg.MessageType != message.NewFileTransfer {
diff --git a/fileTransfer/oldTransferRecovery.go b/fileTransfer/oldTransferRecovery.go
index 7fc4d41c61915d070717a3001c4154237cf0f81c..9bcb95f74719bd721a1c4b7e3591c237ac5f3304 100644
--- a/fileTransfer/oldTransferRecovery.go
+++ b/fileTransfer/oldTransferRecovery.go
@@ -38,7 +38,7 @@ func (m Manager) oldTransferRecovery(healthyChan chan bool, chanID uint64) {
 		return
 	}
 
-	// Get list of unsent parts and rounds that parts were sent on
+	// get list of unsent parts and rounds that parts were sent on
 	unsentParts, sentRounds, err := m.sent.GetUnsentPartsAndSentRounds()
 
 	jww.DEBUG.Printf("Adding unsent parts from %d recovered transfers: %v",
diff --git a/fileTransfer/oldTransferRecovery_test.go b/fileTransfer/oldTransferRecovery_test.go
index 341b39542ae7540282669a1cb293ca763cb8e92f..252df434401beb2a524b5541c39f0011e080d962 100644
--- a/fileTransfer/oldTransferRecovery_test.go
+++ b/fileTransfer/oldTransferRecovery_test.go
@@ -264,7 +264,7 @@ func TestManager_updateSentRounds(t *testing.T) {
 	healthyRecover := make(chan bool, networkHealthBuffLen)
 	healthyRecover <- true
 
-	// Get list of rounds that parts were sent on
+	// get list of rounds that parts were sent on
 	_, loadedSentRounds, _ := m.sent.GetUnsentPartsAndSentRounds()
 
 	err = loadedManager.updateSentRounds(healthyRecover, loadedSentRounds)
diff --git a/fileTransfer/receiveNew.go b/fileTransfer/receiveNew.go
index 67f3ce3e44570f4f6647c69b7ba098f965b19c62..e35539d1fa490e67306311104cdad0da469acfb0 100644
--- a/fileTransfer/receiveNew.go
+++ b/fileTransfer/receiveNew.go
@@ -83,7 +83,7 @@ func (m *Manager) readNewFileTransferMessage(msg message.Receive) (
 		return
 	}
 
-	// Get RNG from stream
+	// get RNG from stream
 	rng := m.rng.GetStream()
 	defer rng.Close()
 
diff --git a/fileTransfer/receive_test.go b/fileTransfer/receive_test.go
index cc28fc24f1b910128ceba15d1486b1ef9e120966..31ac0d40913bb7ddfc08eaca34b51bcd1eeed466 100644
--- a/fileTransfer/receive_test.go
+++ b/fileTransfer/receive_test.go
@@ -332,7 +332,7 @@ func TestManager_readMessage(t *testing.T) {
 
 	<-done1
 
-	// Get the file and check that the part was added to it
+	// get the file and check that the part was added to it
 	fileData, err := rt.GetFile()
 	if err == nil {
 		t.Error("GetFile did not return an error when parts are missing.")
diff --git a/fileTransfer/send.go b/fileTransfer/send.go
index 875e01890fba131b0acc1273b388158ea3c06698..27c81207399056999af73731532d29389c816102 100644
--- a/fileTransfer/send.go
+++ b/fileTransfer/send.go
@@ -365,7 +365,7 @@ func (m *Manager) newCmixMessage(transfer *ftStorage.SentTransfer,
 	// Create new empty cMix message
 	cmixMsg := format.NewMessage(m.store.Cmix().GetGroup().GetP().ByteLen())
 
-	// Get encrypted file part, file part MAC, nonce (nonce), and fingerprint
+	// get encrypted file part, file part MAC, nonce (nonce), and fingerprint
 	encPart, mac, fp, err := transfer.GetEncryptedPart(partNum, cmixMsg.ContentsSize())
 	if err != nil {
 		return format.Message{}, err
@@ -463,7 +463,7 @@ func (m *Manager) makeRoundEventCallback(
 // sendEndE2eMessage sends an E2E message to the recipient once the transfer
 // complete information them that all file parts have been sent.
 func (m *Manager) sendEndE2eMessage(recipient *id.ID) error {
-	// Get the partner
+	// get the partner
 	partner, err := m.store.E2e().GetPartner(recipient)
 	if err != nil {
 		return errors.Errorf(endE2eGetPartnerErr, recipient, err)
diff --git a/fileTransfer/sendNew.go b/fileTransfer/sendNew.go
index b28fe263958c3ff5b95455faee9f3623f44267b1..4dce71d6e3b900d5584c8c940f240f626d2cbb0c 100644
--- a/fileTransfer/sendNew.go
+++ b/fileTransfer/sendNew.go
@@ -34,7 +34,7 @@ func (m *Manager) sendNewFileTransfer(recipient *id.ID, fileName,
 		return errors.Errorf(newFtProtoMarshalErr, err)
 	}
 
-	// Get partner relationship so that the silent preimage can be generated
+	// get partner relationship so that the silent preimage can be generated
 	relationship, err := m.store.E2e().GetPartner(recipient)
 	if err != nil {
 		return err
diff --git a/fileTransfer/send_test.go b/fileTransfer/send_test.go
index d35e418b8efb80f7a1107d90370a1e7a23706687..813c50fa83bc0de0bc239fee4ff75e6a40287f2b 100644
--- a/fileTransfer/send_test.go
+++ b/fileTransfer/send_test.go
@@ -1009,7 +1009,7 @@ func TestManager_getPartSize(t *testing.T) {
 	filePartMsgUsedLen := ftStorage.FmMinSize
 	expected := 2*primeByteLen - cmixMsgUsedLen - filePartMsgUsedLen - 1
 
-	// Get the part size
+	// get the part size
 	partSize, err := m.getPartSize()
 	if err != nil {
 		t.Errorf("GetPartSize returned an error: %+v", err)
diff --git a/groupChat/groupStore/dhKeyList.go b/groupChat/groupStore/dhKeyList.go
index 38b7b56bf3d88c6bed432e29b5a580c270a0285a..5319cd33eb964f8e4027f0a13357f6ae806d0c84 100644
--- a/groupChat/groupStore/dhKeyList.go
+++ b/groupChat/groupStore/dhKeyList.go
@@ -96,7 +96,7 @@ func DeserializeDhKeyList(data []byte) (DhKeyList, error) {
 			return nil, errors.Errorf(idUnmarshalErr, err)
 		}
 
-		// Get length of DH key
+		// get length of DH key
 		keyLen := int(binary.LittleEndian.Uint64(buff.Next(8)))
 
 		// Read and decode DH key
diff --git a/groupChat/groupStore/group.go b/groupChat/groupStore/group.go
index 9216bc43e582a595585e8c4cd8f05b68e846f980..28b9555e367cf7f761dd437de792bac97fc6789b 100644
--- a/groupChat/groupStore/group.go
+++ b/groupChat/groupStore/group.go
@@ -180,13 +180,13 @@ func DeserializeGroup(data []byte) (Group, error) {
 	var g Group
 	var err error
 
-	// Get name
+	// get name
 	nameLen := binary.LittleEndian.Uint64(buff.Next(8))
 	if nameLen > 0 {
 		g.Name = buff.Next(int(nameLen))
 	}
 
-	// Get group ID
+	// get group ID
 	var groupID id.ID
 	copy(groupID[:], buff.Next(id.ArrIDLen))
 	if groupID == [id.ArrIDLen]byte{} {
@@ -195,18 +195,18 @@ func DeserializeGroup(data []byte) (Group, error) {
 		g.ID = &groupID
 	}
 
-	// Get group key and preimages
+	// get group key and preimages
 	copy(g.Key[:], buff.Next(group.KeyLen))
 	copy(g.IdPreimage[:], buff.Next(group.IdPreimageLen))
 	copy(g.KeyPreimage[:], buff.Next(group.KeyPreimageLen))
 
-	// Get InitMessage
+	// get InitMessage
 	initMessageLength := binary.LittleEndian.Uint64(buff.Next(8))
 	if initMessageLength > 0 {
 		g.InitMessage = buff.Next(int(initMessageLength))
 	}
 
-	// Get created timestamp
+	// get created timestamp
 	createdNano := int64(binary.LittleEndian.Uint64(buff.Next(8)))
 	if createdNano == (time.Time{}).UnixNano() {
 		g.Created = time.Time{}
@@ -214,14 +214,14 @@ func DeserializeGroup(data []byte) (Group, error) {
 		g.Created = time.Unix(0, createdNano)
 	}
 
-	// Get member list
+	// get member list
 	membersLength := binary.LittleEndian.Uint64(buff.Next(8))
 	g.Members, err = group.DeserializeMembership(buff.Next(int(membersLength)))
 	if err != nil {
 		return Group{}, errors.Errorf(membershipErr, err)
 	}
 
-	// Get DH key list
+	// get DH key list
 	g.DhKeys, err = DeserializeDhKeyList(buff.Bytes())
 	if err != nil {
 		return Group{}, errors.Errorf(dhKeyListErr, err)
diff --git a/groupChat/groupStore/store_test.go b/groupChat/groupStore/store_test.go
index 0303446c99e2a4c5d36e51887a494d18f68810f8..e19b3928bd26eeffa17c040b973965f64927dfa5 100644
--- a/groupChat/groupStore/store_test.go
+++ b/groupChat/groupStore/store_test.go
@@ -440,11 +440,11 @@ func TestStore_Get(t *testing.T) {
 	// Attempt to get group
 	retrieved, exists := store.Get(grp.ID)
 	if !exists {
-		t.Errorf("Get failed to return the expected group: %#v", grp)
+		t.Errorf("get failed to return the expected group: %#v", grp)
 	}
 
 	if !reflect.DeepEqual(grp, retrieved) {
-		t.Errorf("Get did not return the expected group."+
+		t.Errorf("get did not return the expected group."+
 			"\nexpected: %#v\nreceived: %#v", grp, retrieved)
 	}
 }
@@ -462,7 +462,7 @@ func TestStore_Get_NoGroupError(t *testing.T) {
 	// Attempt to get group
 	retrieved, exists := store.Get(id.NewIdFromString("testID", id.Group, t))
 	if exists {
-		t.Errorf("Get returned a group that should not exist: %#v", retrieved)
+		t.Errorf("get returned a group that should not exist: %#v", retrieved)
 	}
 }
 
@@ -483,7 +483,7 @@ func TestStore_GetByKeyFp(t *testing.T) {
 		t.Fatalf("Failed to add group: %+v", err)
 	}
 
-	// Get group by fingerprint
+	// get group by fingerprint
 	salt := newSalt(groupSalt)
 	generatedFP := group.NewKeyFingerprint(grp.Key, salt, store.user.ID)
 	retrieved, exists := store.GetByKeyFp(generatedFP, salt)
@@ -510,7 +510,7 @@ func TestStore_GetByKeyFp_NoGroupError(t *testing.T) {
 		t.Fatalf("Failed to make new Store: %+v", err)
 	}
 
-	// Get group by fingerprint
+	// get group by fingerprint
 	grp := createTestGroup(prng, t)
 	salt := newSalt(groupSalt)
 	generatedFP := group.NewKeyFingerprint(grp.Key, salt, store.user.ID)
diff --git a/groupChat/makeGroup.go b/groupChat/makeGroup.go
index 7cfe7dfd8326b1f221b9ef4a9bf16c8096879c3a..944449a6eb9db7ec1082b05279ee554f62467d9a 100644
--- a/groupChat/makeGroup.go
+++ b/groupChat/makeGroup.go
@@ -158,7 +158,7 @@ func (m Manager) buildMembership(members []*id.ID) (group.Membership,
 func getPreimages(streamGen *fastRNG.StreamGenerator) (group.IdPreimage,
 	group.KeyPreimage, error) {
 
-	// Get new stream and defer its close
+	// get new stream and defer its close
 	rng := streamGen.GetStream()
 	defer rng.Close()
 
diff --git a/groupChat/receive.go b/groupChat/receive.go
index 93a149c4e0e480d4d56b98123ce1627cf5962d55..f17cac039d4a9facfb7d3774c21e8371e03ea197 100644
--- a/groupChat/receive.go
+++ b/groupChat/receive.go
@@ -99,7 +99,7 @@ func (m *Manager) readMessage(msg message.Receive) (gs.Group, group.MessageID,
 			errors.Errorf(unmarshalPublicMsgErr, err)
 	}
 
-	// Get the group from storage via key fingerprint lookup
+	// get the group from storage via key fingerprint lookup
 	g, exists := m.gs.GetByKeyFp(cMixMsg.GetKeyFP(), pubMsg.GetSalt())
 	if !exists {
 		return gs.Group{}, group.MessageID{}, time.Time{}, nil, nil, true,
diff --git a/groupChat/receiveRequest.go b/groupChat/receiveRequest.go
index 844b86249e593bdd5532bda0ed480058804e5b61..5cd9f57425f47b92347270f83a4e3428f81ac0e6 100644
--- a/groupChat/receiveRequest.go
+++ b/groupChat/receiveRequest.go
@@ -81,7 +81,7 @@ func (m *Manager) readRequest(msg message.Receive) (gs.Group, error) {
 		return gs.Group{}, errors.Errorf(deserializeMembershipErr, err)
 	}
 
-	// Get the relationship with the group leader
+	// get the relationship with the group leader
 	partner, err := m.store.E2e().GetPartner(membership[0].ID)
 	if err != nil {
 		return gs.Group{}, errors.Errorf(getPrivKeyErr, err)
diff --git a/groupChat/send.go b/groupChat/send.go
index f5bf054fb2cb3b318ab61d15912001f1507af23f..4101576ec7d3863768a82fa5c1ea1d20d57d6d4c 100644
--- a/groupChat/send.go
+++ b/groupChat/send.go
@@ -39,7 +39,7 @@ const (
 // send fails if the message is too long.
 func (m *Manager) Send(groupID *id.ID, message []byte) (id.Round, time.Time, group.MessageID,
 	error) {
-	// Get the current time stripped of the monotonic clock
+	// get the current time stripped of the monotonic clock
 	timeNow := netTime.Now().Round(0)
 
 	// Create a cMix message for each group member
diff --git a/groupChat/send_test.go b/groupChat/send_test.go
index 2d6940c3a69dbe3b894481e738d6fbb1d7974e45..38042203e9ee2f42a922307e16e1891eaf38821c 100644
--- a/groupChat/send_test.go
+++ b/groupChat/send_test.go
@@ -35,7 +35,7 @@ func TestManager_Send(t *testing.T) {
 		t.Errorf("Send() returned an error: %+v", err)
 	}
 
-	// Get messages sent with or return an error if no messages were sent
+	// get messages sent with or return an error if no messages were sent
 	var messages []message.TargetedCmixMessage
 	if len(m.net.(*testNetworkManager).messages) > 0 {
 		messages = m.net.(*testNetworkManager).GetMsgList(0)
diff --git a/interfaces/params/network.go b/interfaces/params/network.go
index a89db50e17a1063d99ef17e26cd12ab6fcc9b24f..16fa06bec47950aa3fab8d525528f3c38aa72a9b 100644
--- a/interfaces/params/network.go
+++ b/interfaces/params/network.go
@@ -21,7 +21,7 @@ type Network struct {
 	// Longest delay between network events for Health tracker to denote that
 	// the network is in a bad state
 	NetworkHealthTimeout time.Duration
-	//Number of parallel node registration the client is capable of
+	//Number of parallel nodes registration the client is capable of
 	ParallelNodeRegistrations uint
 	//How far back in rounds the network should actually check
 	KnownRoundsThreshold uint
diff --git a/keyExchange/confirm.go b/keyExchange/confirm.go
index 4c21f77db86638f24a50fcf65b65001e71e081c9..9e7996ded27d3b79fbed8f3119ecfec0acae8774 100644
--- a/keyExchange/confirm.go
+++ b/keyExchange/confirm.go
@@ -40,7 +40,7 @@ func handleConfirm(sess *storage.Session, confirmation message.Receive) {
 		return
 	}
 
-	//Get the partner
+	//get the partner
 	partner, err := sess.E2e().GetPartner(confirmation.Sender)
 	if err != nil {
 		jww.ERROR.Printf(
diff --git a/keyExchange/confirm_test.go b/keyExchange/confirm_test.go
index 08b539a059b6de7c5d1c6251a03febe430992333..3dd8312ec791dfce8f70b195f1e80a865d4759c3 100644
--- a/keyExchange/confirm_test.go
+++ b/keyExchange/confirm_test.go
@@ -63,7 +63,7 @@ func TestHandleConfirm(t *testing.T) {
 	sessionID := GeneratePartnerID(alicePrivKey, bobPubKey, genericGroup,
 		aliceSIDHPrivKey, bobSIDHPubKey)
 
-	// Get Alice's manager for Bob
+	// get Alice's manager for Bob
 	receivedManager, err := aliceSession.E2e().GetPartner(bobID)
 	if err != nil {
 		t.Errorf("Bob is not recognized as Alice's partner: %v", err)
@@ -89,7 +89,7 @@ func TestHandleConfirm(t *testing.T) {
 	// Handle the confirmation
 	handleConfirm(aliceSession, receiveMsg)
 
-	// Get Alice's session for Bob
+	// get Alice's session for Bob
 	confirmedSession := receivedManager.GetSendSession(sessionID)
 
 	// Check that the session is in the proper status
diff --git a/keyExchange/exchange_test.go b/keyExchange/exchange_test.go
index 7bf6cbad9404705246738f207e3a613a7a81f7af..7136ea3dc36a23256af933b1f2030567393b13cb 100644
--- a/keyExchange/exchange_test.go
+++ b/keyExchange/exchange_test.go
@@ -108,7 +108,7 @@ func TestFullExchange(t *testing.T) {
 		Encryption:  message.E2E,
 	}
 
-	// Get Alice's manager for reception from Bob
+	// get Alice's manager for reception from Bob
 	receivedManager, err := aliceSession.E2e().GetPartner(exchangeBobId)
 	if err != nil {
 		t.Errorf("Failed to get bob's manager: %v", err)
@@ -120,7 +120,7 @@ func TestFullExchange(t *testing.T) {
 	// Allow the test time to work it's goroutines
 	time.Sleep(1 * time.Second)
 
-	// Get Alice's session for Bob
+	// get Alice's session for Bob
 	confirmedSession := receivedManager.GetSendSession(oldSessionID)
 
 	// Generate the new session ID based off of Bob's new keys
diff --git a/keyExchange/rekey_test.go b/keyExchange/rekey_test.go
index 3e7d585328135b54a50366257a1b72891c425fbf..b507fc266803d597a6e39295911c3cb48894f263 100644
--- a/keyExchange/rekey_test.go
+++ b/keyExchange/rekey_test.go
@@ -27,7 +27,7 @@ func TestRekey(t *testing.T) {
 	aliceSession.E2e().AddPartner(bobID, bobPubKey, alicePrivKey,
 		e2e.GetDefaultSessionParams(), e2e.GetDefaultSessionParams())
 
-	// Get Alice's manager for Bob
+	// get Alice's manager for Bob
 	bobManager, err := aliceSession.E2e().GetPartner(bobID)
 	if err != nil {
 		t.Errorf("Bob is not recognized as Alice's partner: %v", err)
diff --git a/keyExchange/trigger.go b/keyExchange/trigger.go
index fcdb71aa93fc535ac879696ebe36a86d6045de87..4605f09280f6b6b55153d3f91b6316393d36de8e 100644
--- a/keyExchange/trigger.go
+++ b/keyExchange/trigger.go
@@ -60,7 +60,7 @@ func handleTrigger(sess *storage.Session, net interfaces.NetworkManager,
 		return errors.New(errMsg)
 	}
 
-	//Get the partner
+	//get the partner
 	partner, err := sess.E2e().GetPartner(request.Sender)
 	if err != nil {
 		errMsg := fmt.Sprintf(errUnknown, request.Sender)
diff --git a/keyExchange/trigger_test.go b/keyExchange/trigger_test.go
index 6bfdb41e7ef44f22f9b34e46bd68b11e528f47e5..610428b2ce0ed3c84a2ececca56827b60c9b476e 100644
--- a/keyExchange/trigger_test.go
+++ b/keyExchange/trigger_test.go
@@ -102,7 +102,7 @@ func TestHandleTrigger(t *testing.T) {
 		t.Errorf("Handle trigger error: %v", err)
 	}
 
-	// Get Alice's manager for reception from Bob
+	// get Alice's manager for reception from Bob
 	receivedManager, err := aliceSession.E2e().GetPartner(bobID)
 	if err != nil {
 		t.Errorf("Failed to get bob's manager: %v", err)
diff --git a/network/ephemeral/addressSpace_test.go b/network/ephemeral/addressSpace_test.go
index 03cca463bc829e9db4ff6bb916fb6738e9b12e19..98bfa6412c3b82f3810c054939c128af32b7123e 100644
--- a/network/ephemeral/addressSpace_test.go
+++ b/network/ephemeral/addressSpace_test.go
@@ -30,12 +30,12 @@ func Test_addressSpace_Get(t *testing.T) {
 	as := NewAddressSpace()
 	expectedSize := uint8(42)
 
-	// Call Get and error if it does not block
+	// Call get and error if it does not block
 	wait := make(chan uint8)
 	go func() { wait <- as.Get() }()
 	select {
 	case size := <-wait:
-		t.Errorf("Get failed to block and returned size %d.", size)
+		t.Errorf("get failed to block and returned size %d.", size)
 	case <-time.NewTimer(10 * time.Millisecond).C:
 	}
 
@@ -44,17 +44,17 @@ func Test_addressSpace_Get(t *testing.T) {
 	as.size = expectedSize
 	as.cond.L.Unlock()
 
-	// Call Get and error if it does block
+	// Call get and error if it does block
 	wait = make(chan uint8)
 	go func() { wait <- as.Get() }()
 	select {
 	case size := <-wait:
 		if size != expectedSize {
-			t.Errorf("Get returned the wrong size.\nexpected: %d\nreceived: %d",
+			t.Errorf("get returned the wrong size.\nexpected: %d\nreceived: %d",
 				expectedSize, size)
 		}
 	case <-time.NewTimer(15 * time.Millisecond).C:
-		t.Error("Get blocking when the size has been updated.")
+		t.Error("get blocking when the size has been updated.")
 	}
 }
 
@@ -69,11 +69,11 @@ func Test_addressSpace_Get_WaitBroadcast(t *testing.T) {
 		select {
 		case size := <-wait:
 			if size != initSize {
-				t.Errorf("Get returned the wrong size.\nexpected: %d\nreceived: %d",
+				t.Errorf("get returned the wrong size.\nexpected: %d\nreceived: %d",
 					initSize, size)
 			}
 		case <-time.NewTimer(25 * time.Millisecond).C:
-			t.Error("Get blocking when the Cond has broadcast.")
+			t.Error("get blocking when the Cond has broadcast.")
 		}
 	}()
 
@@ -138,7 +138,7 @@ func Test_addressSpace_update_GetAndChannels(t *testing.T) {
 						"\nexpected: %d\nreceived: %d", i, expectedSize, size)
 				}
 			case <-time.NewTimer(20 * time.Millisecond).C:
-				t.Errorf("Timed out waiting for Get to return on thread %d.", i)
+				t.Errorf("Timed out waiting for get to return on thread %d.", i)
 			}
 		}(i, waitChan)
 	}
diff --git a/network/ephemeral/tracker.go b/network/ephemeral/tracker.go
index e848c23c473b90170b740fc31cd5734bf746e7ad..632a172d52517c0a70298b573facefb3be568545 100644
--- a/network/ephemeral/tracker.go
+++ b/network/ephemeral/tracker.go
@@ -47,7 +47,7 @@ func track(session *storage.Session, addrSpace *AddressSpace, ourId *id.ID, stop
 			"tracking: %+v", err)
 	}
 
-	// Get the latest timestamp from store
+	// get the latest timestamp from store
 	lastTimestampObj, err := session.Get(TimestampKey)
 	if err != nil {
 		jww.FATAL.Panicf("Could not get timestamp: %+v", err)
@@ -206,7 +206,7 @@ func calculateTickerTime(baseIDs []ephemeral.ProtoIdentity, now time.Time) time.
 		return time.Duration(0)
 	}
 
-	// Get the last identity in the list
+	// get the last identity in the list
 	lastIdentity := baseIDs[len(baseIDs)-1]
 
 	// Factor out the grace period previously expanded upon
diff --git a/network/follow.go b/network/follow.go
index 817ba0effc0c01e744cd430effa7ecc874d746fb..d222ae813772c8020b71e27d2afdbef48461fd9b 100644
--- a/network/follow.go
+++ b/network/follow.go
@@ -13,9 +13,9 @@ package network
 //   3. Node addition and removal
 // This information is tracked by polling a gateway for the network definition
 // file (NDF). Once it detects an event it sends it off to the proper channel
-// for a worker to update the client state (add/remove a node, check for
+// for a worker to update the client state (add/remove a nodes, check for
 // messages at a gateway, etc). See:
-//   - /node/register.go for add/remove node events
+//   - /nodes/register.go for add/remove nodes events
 //   - /rounds/historical.go for old round retrieval
 //   - /rounds/retrieve.go for message retrieval
 //   - /message/handle.go decryption, partitioning, and signaling of messages
@@ -111,7 +111,7 @@ func (m *manager) followNetwork(report interfaces.ClientErrorReport,
 func (m *manager) follow(report interfaces.ClientErrorReport, rng csprng.Source,
 	comms followNetworkComms, stop *stoppable.Single, abandon func(round id.Round)) {
 
-	//Get the identity we will poll for
+	//get the identity we will poll for
 	identity, err := m.Session.Reception().GetIdentity(rng, m.addrSpace.GetWithoutWait())
 	if err != nil {
 		jww.FATAL.Panicf("Failed to get an identity, this should be "+
@@ -130,7 +130,7 @@ func (m *manager) follow(report interfaces.ClientErrorReport, rng csprng.Source,
 
 	atomic.AddUint64(m.tracker, 1)
 
-	// Get client version for poll
+	// get client version for poll
 	version := m.Session.GetClientVersion()
 
 	// Poll network updates
@@ -187,7 +187,7 @@ func (m *manager) follow(report interfaces.ClientErrorReport, rng csprng.Source,
 	}
 
 	// ---- Node Events ----
-	// NOTE: this updates the structure, AND sends events over the node
+	// NOTE: this updates the structure, AND sends events over the nodes
 	//       update channels about new and removed nodes
 	if pollResp.PartialNDF != nil {
 		err = m.Instance.UpdatePartialNdf(pollResp.PartialNDF)
diff --git a/network/gateway/hostPool.go b/network/gateway/hostPool.go
index dd4616cc4583d54621cf2fb42dc2611ab96cee95..8e452207811a9f6b41474085e8786bc23aa2c480 100644
--- a/network/gateway/hostPool.go
+++ b/network/gateway/hostPool.go
@@ -48,7 +48,7 @@ type HostManager interface {
 // Filter filters out IDs from the provided map based on criteria in the NDF.
 // The passed in map is a map of the NDF for easier acesss.  The map is ID -> index in the NDF
 // There is no multithreading, the filter function can either edit the passed map or make a new one
-// and return it.  The general pattern is to loop through the map, then look up data about the node
+// and return it.  The general pattern is to loop through the map, then look up data about the nodes
 // in the ndf to make a filtering decision, then add them to a new map if they are accepted.
 type Filter func(map[id.ID]int, *ndf.NetworkDefinition) map[id.ID]int
 
@@ -140,7 +140,7 @@ func newHostPool(poolParams PoolParams, rng *fastRNG.StreamGenerator,
 		return nil, err
 	}
 
-	// Get the last used list of hosts and use it to seed the host pool list
+	// get the last used list of hosts and use it to seed the host pool list
 	hostList, err := storage.HostList().Get()
 	numHostsAdded := 0
 	if err == nil {
@@ -491,7 +491,7 @@ func (h *HostPool) selectGateway() *id.ID {
 		nodeNdfIdx := h.ndfMap[*nodeId]
 		isNodeStale := h.ndf.Nodes[nodeNdfIdx].Status == ndf.Stale
 		if isNodeStale {
-			jww.DEBUG.Printf("Ignoring stale node: %s", nodeId.String())
+			jww.DEBUG.Printf("Ignoring stale nodes: %s", nodeId.String())
 			continue
 		}
 
diff --git a/network/gateway/hostpool_test.go b/network/gateway/hostpool_test.go
index 30f3b6a6151626a68e5d2b2fe4d3c282de0aefeb..bda350f1e655adbd8cc427ab2145361ccc02f942 100644
--- a/network/gateway/hostpool_test.go
+++ b/network/gateway/hostpool_test.go
@@ -327,7 +327,7 @@ func TestHostPool_ForceReplace(t *testing.T) {
 	params := DefaultPoolParams()
 	params.PoolSize = uint32(len(testNdf.Gateways))
 
-	// Add a stale node
+	// Add a stale nodes
 	newGateway := ndf.Gateway{
 		ID: id.NewIdFromUInt(27, id.Gateway, t).Bytes(),
 	}
diff --git a/network/gateway/sender.go b/network/gateway/sender.go
index dae588f4f355130749f7c16057afd0b301b0b6ca..9945be6c71c693c59a12bb4d14937993535cb0cd 100644
--- a/network/gateway/sender.go
+++ b/network/gateway/sender.go
@@ -89,7 +89,7 @@ func (s *Sender) SendToPreferred(targets []*id.ID, sendFunc sendToPreferredFunc,
 
 	startTime := netTime.Now()
 
-	// Get the hosts and shuffle randomly
+	// get the hosts and shuffle randomly
 	targetHosts := s.getPreferred(targets)
 
 	// Attempt to send directly to targets if they are in the HostPool
diff --git a/network/gateway/sender_test.go b/network/gateway/sender_test.go
index 771df617287adcc15cc095ddcab4a5112206f162..3927b69efb3f4de5859a6c721ec5dfa6829d8615 100644
--- a/network/gateway/sender_test.go
+++ b/network/gateway/sender_test.go
@@ -169,7 +169,7 @@ func TestSender_SendToPreferred(t *testing.T) {
 		t.Errorf("ForceReplace error: Failed to disconnect from old host %s", preferredHost)
 	}
 
-	// Get a new host to test on
+	// get a new host to test on
 	preferredIndex = 4
 	preferredHost = sender.hostList[preferredIndex]
 
diff --git a/network/manager.go b/network/manager.go
index 1cec837978ffc0aaa120ea061b4d993df8110e07..790e00833d77afb316e092e854a15b15285bb740 100644
--- a/network/manager.go
+++ b/network/manager.go
@@ -23,13 +23,13 @@ import (
 	"gitlab.com/elixxir/client/network/health"
 	"gitlab.com/elixxir/client/network/internal"
 	"gitlab.com/elixxir/client/network/message"
-	"gitlab.com/elixxir/client/network/node"
+	"gitlab.com/elixxir/client/network/nodes"
 	"gitlab.com/elixxir/client/network/rounds"
 	"gitlab.com/elixxir/client/stoppable"
 	"gitlab.com/elixxir/client/storage"
 	"gitlab.com/elixxir/client/switchboard"
 	"gitlab.com/elixxir/comms/client"
-	"gitlab.com/elixxir/comms/network"
+	commNetwork "gitlab.com/elixxir/comms/network"
 	"gitlab.com/elixxir/crypto/fastRNG"
 	"gitlab.com/xx_network/crypto/csprng"
 	"gitlab.com/xx_network/primitives/id"
@@ -84,7 +84,7 @@ func NewManager(session *storage.Session, switchboard *switchboard.Switchboard,
 	ndf *ndf.NetworkDefinition) (interfaces.NetworkManager, error) {
 
 	//start network instance
-	instance, err := network.NewInstance(comms.ProtoComms, ndf, nil, nil, network.None, params.FastPolling)
+	instance, err := commNetwork.NewInstance(comms.ProtoComms, ndf, nil, nil, commNetwork.None, params.FastPolling)
 	if err != nil {
 		return nil, errors.WithMessage(err, "failed to create"+
 			" client network manager")
@@ -117,14 +117,14 @@ func NewManager(session *storage.Session, switchboard *switchboard.Switchboard,
 		Rng:              rng,
 		Comms:            comms,
 		Health:           health.Init(instance, params.NetworkHealthTimeout),
-		NodeRegistration: make(chan network.NodeGateway, params.RegNodesBufferLen),
+		NodeRegistration: make(chan commNetwork.NodeGateway, params.RegNodesBufferLen),
 		Instance:         instance,
 		TransmissionID:   session.User().GetCryptographicIdentity().GetTransmissionID(),
 		ReceptionID:      session.User().GetCryptographicIdentity().GetReceptionID(),
 		Events:           events,
 	}
 
-	// Set up node registration chan for network instance
+	// Set up nodes registration chan for network instance
 	m.Instance.SetAddGatewayChan(m.NodeRegistration)
 
 	// Set up gateway.Sender
@@ -174,8 +174,8 @@ func (m *manager) Follow(report interfaces.ClientErrorReport) (stoppable.Stoppab
 	multi.Add(healthStop)
 
 	// Node Updates
-	multi.Add(node.StartRegistration(m.GetSender(), m.Session, m.Rng,
-		m.Comms, m.NodeRegistration, m.param.ParallelNodeRegistrations)) // Adding/Keys
+	multi.Add(nodes.StartRegistration(m.GetSender(), m.Session, m.Rng,
+		m.Comms, m.NodeRegistration, m.param.ParallelNodeRegistrations)) // Adding/MixCypher
 	//TODO-remover
 	//m.runners.Add(StartNodeRemover(m.Context))        // Removing
 
@@ -206,7 +206,7 @@ func (m *manager) GetHealthTracker() interfaces.HealthTracker {
 }
 
 // GetInstance returns the network instance object (ndf state)
-func (m *manager) GetInstance() *network.Instance {
+func (m *manager) GetInstance() *commNetwork.Instance {
 	return m.Instance
 }
 
@@ -223,7 +223,7 @@ func (m *manager) CheckGarbledMessages() {
 }
 
 // InProgressRegistrations returns an approximation of the number of in progress
-// node registrations.
+// nodes registrations.
 func (m *manager) InProgressRegistrations() int {
 	return len(m.Internal.NodeRegistration)
 }
diff --git a/network/message/critical.go b/network/message/critical.go
deleted file mode 100644
index 1714e193b27f959c581c316ffb0c4c1efc496bab..0000000000000000000000000000000000000000
--- a/network/message/critical.go
+++ /dev/null
@@ -1,140 +0,0 @@
-///////////////////////////////////////////////////////////////////////////////
-// Copyright © 2020 xx network SEZC                                          //
-//                                                                           //
-// Use of this source code is governed by a license that can be found in the //
-// LICENSE file                                                              //
-///////////////////////////////////////////////////////////////////////////////
-
-package message
-
-import (
-	jww "github.com/spf13/jwalterweatherman"
-	"gitlab.com/elixxir/client/interfaces/message"
-	"gitlab.com/elixxir/client/interfaces/params"
-	"gitlab.com/elixxir/client/interfaces/utility"
-	"gitlab.com/elixxir/client/stoppable"
-	ds "gitlab.com/elixxir/comms/network/dataStructures"
-	"gitlab.com/elixxir/primitives/format"
-	"gitlab.com/elixxir/primitives/states"
-	"gitlab.com/xx_network/primitives/id"
-	"time"
-)
-
-// Critical Messages are protocol layer communications that must succeed. These
-// are added to the persistent critical messages store.  This thread waits for
-// network access to move from unhealthy to healthy and the sends all critical
-// messages.
-// Health is tracked by registering with the Health
-// Tracker (/network/Health/Tracker.g0)
-
-//Thread loop for processing critical messages
-func (m *Manager) processCriticalMessages(stop *stoppable.Single) {
-	for {
-		select {
-		case <-stop.Quit():
-			stop.ToStopped()
-			return
-		case isHealthy := <-m.networkIsHealthy:
-			if isHealthy {
-				m.criticalMessages(stop)
-			}
-		}
-	}
-}
-
-// processes all critical messages
-func (m *Manager) criticalMessages(stop *stoppable.Single) {
-	critMsgs := m.Session.GetCriticalMessages()
-	// try to send every message in the critical messages and the raw critical
-	// messages buffer in parallel
-
-	//critical messages
-	for msg, param, has := critMsgs.Next(); has; msg, param, has = critMsgs.Next() {
-		go func(msg message.Send, param params.E2E) {
-
-			jww.INFO.Printf("Resending critical message to %s with params %#v",
-				msg.Recipient, param)
-			//send the message
-			rounds, _, _, err := m.SendE2E(msg, param, stop)
-			//if the message fail to send, notify the buffer so it can be handled
-			//in the future and exit
-			if err != nil {
-				jww.ERROR.Printf("Failed to send critical message to %s "+
-					" on notification of healthy network: %+v", msg.Recipient,
-					err)
-				critMsgs.Failed(msg, param)
-				return
-			}
-			//wait on the results to make sure the rounds were successful
-			sendResults := make(chan ds.EventReturn, len(rounds))
-			roundEvents := m.Instance.GetRoundEvents()
-			for _, r := range rounds {
-				roundEvents.AddRoundEventChan(r, sendResults, 1*time.Minute,
-					states.COMPLETED, states.FAILED)
-			}
-			success, numTimeOut, numRoundFail := utility.TrackResults(sendResults, len(rounds))
-			if !success {
-				jww.ERROR.Printf("critical message send to %s failed "+
-					"to transmit transmit %v/%v paritions on rounds %d: %v "+
-					"round failures, %v timeouts", msg.Recipient,
-					numRoundFail+numTimeOut, len(rounds), rounds, numRoundFail, numTimeOut)
-				critMsgs.Failed(msg, param)
-				return
-			}
-
-			jww.INFO.Printf("Successful resend of critical message "+
-				"to %s on rounds %d", msg.Recipient, rounds)
-			critMsgs.Succeeded(msg, param)
-		}(msg, param)
-	}
-
-	critRawMsgs := m.Session.GetCriticalRawMessages()
-	param := params.GetDefaultCMIX()
-	//raw critical messages
-	for msg, rid, has := critRawMsgs.Next(); has; msg, rid, has = critRawMsgs.Next() {
-		localRid := rid.DeepCopy()
-		go func(msg format.Message, rid *id.ID) {
-			jww.INFO.Printf("Resending critical raw message to %s "+
-				"(msgDigest: %s)", rid, msg.Digest())
-			//send the message
-			round, _, err := m.SendCMIX(m.sender, msg, rid, param, stop)
-			//if the message fail to send, notify the buffer so it can be handled
-			//in the future and exit
-			if err != nil {
-				jww.ERROR.Printf("Failed to send critical raw message on "+
-					"notification of healthy network: %+v", err)
-				critRawMsgs.Failed(msg, rid)
-				return
-			}
-
-			//wait on the results to make sure the rounds were successful
-			sendResults := make(chan ds.EventReturn, 1)
-			roundEvents := m.Instance.GetRoundEvents()
-
-			roundEvents.AddRoundEventChan(round, sendResults, 1*time.Minute,
-				states.COMPLETED, states.FAILED)
-
-			success, numTimeOut, _ := utility.TrackResults(sendResults, 1)
-			if !success {
-				if numTimeOut > 0 {
-					jww.ERROR.Printf("critical raw message resend to %s "+
-						"(msgDigest: %s) on round %d failed to transmit due to "+
-						"timeout", rid, msg.Digest(), round)
-				} else {
-					jww.ERROR.Printf("critical raw message resend to %s "+
-						"(msgDigest: %s) on round %d failed to transmit due to "+
-						"send failure", rid, msg.Digest(), round)
-				}
-
-				critRawMsgs.Failed(msg, rid)
-				return
-			}
-
-			jww.INFO.Printf("Successful resend of critical raw message "+
-				"to %s (msgDigest: %s) on round %d", rid, msg.Digest(), round)
-
-			critRawMsgs.Succeeded(msg, rid)
-		}(msg, localRid)
-	}
-
-}
diff --git a/network/message/fingerprints_test.go b/network/message/fingerprints_test.go
index 6a688ec3410a0a0067a1acbaadebbff06694d249..597a54f44742064129869f4dc3c9002397bbcd66 100644
--- a/network/message/fingerprints_test.go
+++ b/network/message/fingerprints_test.go
@@ -5,7 +5,7 @@
 // LICENSE file                                                              //
 ///////////////////////////////////////////////////////////////////////////////
 
-package network
+package message
 
 import (
 	jww "github.com/spf13/jwalterweatherman"
@@ -48,14 +48,14 @@ func TestFingerprints_Get(t *testing.T) {
 	// Attempt to retrieve value from map
 	received, exists := fpTracker.Get(fp)
 	if !exists {
-		t.Fatalf("Get error: Did not retrieve fingerprint (%s) that "+
+		t.Fatalf("get error: Did not retrieve fingerprint (%s) that "+
 			"should have been in map.", fp)
 	}
 
 	// Check that received value contains the expected data
 	expected := newProcessor(mp)
 	if !reflect.DeepEqual(received, expected) {
-		t.Fatalf("Get error: Map does not contain expected data."+
+		t.Fatalf("get error: Map does not contain expected data."+
 			"\nExpected: %v"+
 			"\nReceived: %v", expected, received)
 	}
diff --git a/network/message/garbled_test.go b/network/message/garbled_test.go
index 86f23b84776abbf2d2e9eae52fec21a690540ad9..5aeed7ce154a0f86f216eceff2c641decb34eddd 100644
--- a/network/message/garbled_test.go
+++ b/network/message/garbled_test.go
@@ -8,7 +8,6 @@ import (
 	"gitlab.com/elixxir/client/interfaces/params"
 	"gitlab.com/elixxir/client/network/gateway"
 	"gitlab.com/elixxir/client/network/internal"
-	"gitlab.com/elixxir/client/network/message/parse"
 	"gitlab.com/elixxir/client/stoppable"
 	"gitlab.com/elixxir/client/storage"
 	"gitlab.com/elixxir/client/storage/edge"
diff --git a/network/message/manager.go b/network/message/manager.go
index a9422cc50b8c32a380c5d7201db576af64da0231..d9d1ec2c0ab20891547258732fd98b0305bec452 100644
--- a/network/message/manager.go
+++ b/network/message/manager.go
@@ -15,15 +15,12 @@ import (
 	"gitlab.com/elixxir/client/interfaces/params"
 	"gitlab.com/elixxir/client/network/gateway"
 	"gitlab.com/elixxir/client/network/internal"
-	"gitlab.com/elixxir/client/network/message/parse"
 	"gitlab.com/elixxir/client/stoppable"
 	"gitlab.com/elixxir/comms/network"
-	"gitlab.com/elixxir/primitives/format"
 )
 
 type Manager struct {
-	param       params.Network
-	partitioner parse.Partitioner
+	param params.Network
 	internal.Internal
 	sender           *gateway.Sender
 	blacklistedNodes map[string]interface{}
@@ -39,10 +36,8 @@ type Manager struct {
 
 func NewManager(internal internal.Internal, param params.Network,
 	nodeRegistration chan network.NodeGateway, sender *gateway.Sender) *Manager {
-	dummyMessage := format.NewMessage(internal.Session.Cmix().GetGroup().GetP().ByteLen())
 	m := Manager{
 		param:            param,
-		partitioner:      parse.NewPartitioner(dummyMessage.ContentsSize(), internal.Session),
 		messageReception: make(chan Bundle, param.MessageReceptionBuffLen),
 		networkIsHealthy: make(chan bool, 1),
 		triggerGarbled:   make(chan struct{}, 100),
@@ -80,12 +75,6 @@ func (m *Manager) StartProcessies() stoppable.Stoppable {
 		multi.Add(stop)
 	}
 
-	//create the critical messages thread
-	critStop := stoppable.NewSingle("CriticalMessages")
-	go m.processCriticalMessages(critStop)
-	m.Health.AddChannel(m.networkIsHealthy)
-	multi.Add(critStop)
-
 	//create the garbled messages thread
 	garbledStop := stoppable.NewSingle("GarbledMessages")
 	go m.processGarbledMessages(garbledStop)
diff --git a/network/message/parse/firstMessagePart.go b/network/message/parse/firstMessagePart.go
deleted file mode 100644
index fa67b64411e0f2272178452eeb0a8deb91612271..0000000000000000000000000000000000000000
--- a/network/message/parse/firstMessagePart.go
+++ /dev/null
@@ -1,131 +0,0 @@
-///////////////////////////////////////////////////////////////////////////////
-// Copyright © 2020 xx network SEZC                                          //
-//                                                                           //
-// Use of this source code is governed by a license that can be found in the //
-// LICENSE file                                                              //
-///////////////////////////////////////////////////////////////////////////////
-
-package parse
-
-import (
-	"encoding/binary"
-	"gitlab.com/elixxir/client/interfaces/message"
-	"time"
-)
-
-// Sizes of message parts, in bytes.
-const (
-	numPartsLen     = 1
-	typeLen         = message.TypeLen
-	timestampLen    = 8
-	firstPartVerLen = 1
-	firstHeaderLen  = headerLen + numPartsLen + typeLen + timestampLen + firstPartVerLen
-)
-
-// The current version of the firstMessagePart message format.
-const firstMessagePartCurrentVersion = 0
-
-type firstMessagePart struct {
-	messagePart
-	NumParts  []byte
-	Type      []byte
-	Timestamp []byte
-	Version   []byte // Version of the message format; always the last bit
-}
-
-// newFirstMessagePart creates a new firstMessagePart for the passed in
-// contents. Does no length checks.
-func newFirstMessagePart(mt message.Type, id uint32, numParts uint8,
-	timestamp time.Time, contents []byte) firstMessagePart {
-
-	// Create the message structure
-	m := FirstMessagePartFromBytes(make([]byte, len(contents)+firstHeaderLen))
-
-	// Set the message type
-	binary.BigEndian.PutUint32(m.Type, uint32(mt))
-
-	// Set the message ID
-	binary.BigEndian.PutUint32(m.Id, id)
-
-	// Set the part number. It is always zero because this is the first part.
-	// Because the default is zero this step could be skipped, but keep it in
-	// the code for clarity.
-	m.Part[0] = 0
-
-	// Set the number of parts to the message
-	m.NumParts[0] = numParts
-
-	// Set the timestamp as unix nano
-	binary.BigEndian.PutUint64(m.Timestamp, uint64(timestamp.UnixNano()))
-
-	// Set the length of the contents
-	binary.BigEndian.PutUint16(m.Len, uint16(len(contents)))
-
-	// Set the contents
-	copy(m.Contents[:len(contents)], contents)
-
-	// Set the version number
-	m.Version[0] = firstMessagePartCurrentVersion
-
-	return m
-}
-
-// Map of firstMessagePart encoding version numbers to their map functions.
-var firstMessagePartFromBytesVersions = map[uint8]func([]byte) firstMessagePart{
-	firstMessagePartCurrentVersion: firstMessagePartFromBytesVer0,
-}
-
-// FirstMessagePartFromBytes builds a firstMessagePart mapped to the passed in
-// data slice. Mapped by reference; a copy is not made.
-func FirstMessagePartFromBytes(data []byte) firstMessagePart {
-
-	// Map the data according to its version
-	version := data[len(data)-1]
-	mapFunc, exists := firstMessagePartFromBytesVersions[version]
-	if exists {
-		return mapFunc(data)
-	}
-
-	return firstMessagePart{}
-}
-
-func firstMessagePartFromBytesVer0(data []byte) firstMessagePart {
-	return firstMessagePart{
-		messagePart: messagePart{
-			Data:     data,
-			Id:       data[:idLen],
-			Part:     data[idLen : idLen+partLen],
-			Len:      data[idLen+partLen : idLen+partLen+lenLen],
-			Contents: data[idLen+partLen+lenLen+numPartsLen+typeLen+timestampLen : len(data)-firstPartVerLen-1],
-		},
-		NumParts:  data[idLen+partLen+lenLen : idLen+partLen+lenLen+numPartsLen],
-		Type:      data[idLen+partLen+lenLen+numPartsLen : idLen+partLen+lenLen+numPartsLen+typeLen],
-		Timestamp: data[idLen+partLen+lenLen+numPartsLen+typeLen : idLen+partLen+lenLen+numPartsLen+typeLen+timestampLen],
-		Version:   data[len(data)-firstPartVerLen:],
-	}
-}
-
-// GetType returns the message type.
-func (m firstMessagePart) GetType() message.Type {
-	return message.Type(binary.BigEndian.Uint32(m.Type))
-}
-
-// GetNumParts returns the number of message parts.
-func (m firstMessagePart) GetNumParts() uint8 {
-	return m.NumParts[0]
-}
-
-// GetTimestamp returns the timestamp as a time.Time.
-func (m firstMessagePart) GetTimestamp() time.Time {
-	return time.Unix(0, int64(binary.BigEndian.Uint64(m.Timestamp)))
-}
-
-// GetVersion returns the version number of the data encoding.
-func (m firstMessagePart) GetVersion() uint8 {
-	return m.Version[0]
-}
-
-// Bytes returns the serialised message data.
-func (m firstMessagePart) Bytes() []byte {
-	return m.Data
-}
diff --git a/network/message/parse/firstMessagePart_test.go b/network/message/parse/firstMessagePart_test.go
deleted file mode 100644
index 9902790552e45add0d651b5db38e3e277173b39e..0000000000000000000000000000000000000000
--- a/network/message/parse/firstMessagePart_test.go
+++ /dev/null
@@ -1,95 +0,0 @@
-///////////////////////////////////////////////////////////////////////////////
-// Copyright © 2020 xx network SEZC                                          //
-//                                                                           //
-// Use of this source code is governed by a license that can be found in the //
-// LICENSE file                                                              //
-///////////////////////////////////////////////////////////////////////////////
-
-package parse
-
-import (
-	"bytes"
-	"gitlab.com/elixxir/client/interfaces/message"
-	"reflect"
-	"testing"
-	"time"
-)
-
-// Expected firstMessagePart for checking against, generated by fmp in TestNewFirstMessagePart
-var efmp = firstMessagePart{
-	messagePart: messagePart{
-		Data: []byte{0, 0, 4, 53, 0, 0, 13, 2, 0, 0, 0, 2, 22, 87, 28, 11, 215,
-			220, 82, 0, 116, 101, 115, 116, 105, 110, 103, 115, 116, 114, 105,
-			110, 103, 0, firstMessagePartCurrentVersion},
-		Id:   []byte{0, 0, 4, 53},
-		Part: []byte{0},
-		Len:  []byte{0, 13},
-		Contents: []byte{116, 101, 115, 116, 105, 110, 103, 115, 116, 114, 105,
-			110, 103},
-	},
-	NumParts:  []byte{2},
-	Type:      []byte{0, 0, 0, 2},
-	Timestamp: []byte{22, 87, 28, 11, 215, 220, 82, 0},
-	Version:   []byte{firstMessagePartCurrentVersion},
-}
-
-// Test that newFirstMessagePart returns a correctly made firstMessagePart
-func TestNewFirstMessagePart(t *testing.T) {
-	fmp := newFirstMessagePart(
-		message.XxMessage,
-		1077,
-		2,
-		time.Unix(1609786229, 0).UTC(),
-		[]byte{'t', 'e', 's', 't', 'i', 'n', 'g', 's', 't', 'r', 'i', 'n', 'g'},
-	)
-
-	gotTime := fmp.GetTimestamp()
-	expectedTime := time.Unix(1609786229, 0).UTC()
-	if !gotTime.Equal(expectedTime) {
-		t.Errorf("Failed to get expected timestamp."+
-			"\nexpected: %s\nreceived: %s", expectedTime, gotTime)
-	}
-
-	if !reflect.DeepEqual(fmp, efmp) {
-		t.Errorf("Expected and got firstMessagePart did not match."+
-			"\nexpected: %+v\nrecieved: %+v", efmp, fmp)
-	}
-}
-
-// Test that FirstMessagePartFromBytes returns a correctly made firstMessagePart from the bytes of one
-func TestFirstMessagePartFromBytes(t *testing.T) {
-	fmp := FirstMessagePartFromBytes(efmp.Data)
-
-	if !reflect.DeepEqual(fmp, efmp) {
-		t.Error("Expected and got firstMessagePart did not match")
-	}
-}
-
-// Test that GetType returns the correct type for a firstMessagePart
-func TestFirstMessagePart_GetType(t *testing.T) {
-	if efmp.GetType() != message.XxMessage {
-		t.Errorf("Got %v, expected %v", efmp.GetType(), message.XxMessage)
-	}
-}
-
-// Test that GetNumParts returns the correct number of parts for a firstMessagePart
-func TestFirstMessagePart_GetNumParts(t *testing.T) {
-	if efmp.GetNumParts() != 2 {
-		t.Errorf("Got %v, expected %v", efmp.GetNumParts(), 2)
-	}
-}
-
-// Test that GetTimestamp returns the correct timestamp for a firstMessagePart
-func TestFirstMessagePart_GetTimestamp(t *testing.T) {
-	et := efmp.GetTimestamp()
-	if !time.Unix(1609786229, 0).Equal(et) {
-		t.Errorf("Got %v, expected %v", et, time.Unix(1609786229, 0))
-	}
-}
-
-// Test that GetTimestamp returns the correct bytes for a firstMessagePart
-func TestFirstMessagePart_Bytes(t *testing.T) {
-	if bytes.Compare(efmp.Bytes(), efmp.Data) != 0 {
-		t.Errorf("Got %v, expected %v", efmp.Bytes(), efmp.Data)
-	}
-}
diff --git a/network/message/parse/messagePart.go b/network/message/parse/messagePart.go
deleted file mode 100644
index 01c514d7c33fe1654534a67aeaf8671744d93982..0000000000000000000000000000000000000000
--- a/network/message/parse/messagePart.go
+++ /dev/null
@@ -1,118 +0,0 @@
-///////////////////////////////////////////////////////////////////////////////
-// Copyright © 2020 xx network SEZC                                          //
-//                                                                           //
-// Use of this source code is governed by a license that can be found in the //
-// LICENSE file                                                              //
-///////////////////////////////////////////////////////////////////////////////
-
-package parse
-
-import (
-	"encoding/binary"
-)
-
-// Sizes of message parts, in bytes.
-const (
-	idLen      = 4
-	partLen    = 1
-	lenLen     = 2
-	partVerLen = 1
-	headerLen  = idLen + partLen + lenLen + partVerLen
-)
-
-// The current version of the messagePart message format.
-const messagePartCurrentVersion = 0
-
-type messagePart struct {
-	Data     []byte
-	Id       []byte
-	Part     []byte
-	Len      []byte
-	Contents []byte
-	Version  []byte // Version of the message format; always the last bit
-}
-
-// newMessagePart creates a new messagePart for the passed in contents. Does no
-// length checks.
-func newMessagePart(id uint32, part uint8, contents []byte) messagePart {
-	// Create the message structure
-	data := make([]byte, len(contents)+headerLen)
-	m := messagePartFromBytes(data)
-
-	// Set the message ID
-	binary.BigEndian.PutUint32(m.Id, id)
-
-	// Set the message part number
-	m.Part[0] = part
-
-	// Set the contents length
-	binary.BigEndian.PutUint16(m.Len, uint16(len(contents)))
-
-	// Copy the contents into the message
-	copy(m.Contents[:len(contents)], contents)
-
-	// Set the version number
-	m.Version[0] = messagePartCurrentVersion
-
-	return m
-}
-
-// Map of messagePart encoding version numbers to their map functions.
-var messagePartFromBytesVersions = map[uint8]func([]byte) messagePart{
-	messagePartCurrentVersion: messagePartFromBytesVer0,
-}
-
-// messagePartFromBytes builds a messagePart mapped to the passed in data slice.
-// Mapped by reference; a copy is not made.
-func messagePartFromBytes(data []byte) messagePart {
-
-	// Map the data according to its version
-	version := data[len(data)-1]
-	mapFunc, exists := messagePartFromBytesVersions[version]
-	if exists {
-		return mapFunc(data)
-	}
-
-	return messagePart{}
-}
-
-func messagePartFromBytesVer0(data []byte) messagePart {
-	return messagePart{
-		Data:     data,
-		Id:       data[:idLen],
-		Part:     data[idLen : idLen+partLen],
-		Len:      data[idLen+partLen : idLen+partLen+lenLen],
-		Contents: data[idLen+partLen+lenLen : len(data)-partVerLen],
-		Version:  data[len(data)-partVerLen:],
-	}
-}
-
-// GetID returns the message ID.
-func (m messagePart) GetID() uint32 {
-	return binary.BigEndian.Uint32(m.Id)
-}
-
-// GetPart returns the message part number.
-func (m messagePart) GetPart() uint8 {
-	return m.Part[0]
-}
-
-// GetContents returns the entire contents slice.
-func (m messagePart) GetContents() []byte {
-	return m.Contents
-}
-
-// GetSizedContents returns the contents truncated to include only stored data.
-func (m messagePart) GetSizedContents() []byte {
-	return m.Contents[:m.GetContentsLength()]
-}
-
-// GetContentsLength returns the length of the data in the contents.
-func (m messagePart) GetContentsLength() int {
-	return int(binary.BigEndian.Uint16(m.Len))
-}
-
-// Bytes returns the serialised message data.
-func (m messagePart) Bytes() []byte {
-	return m.Data
-}
diff --git a/network/message/parse/messagePart_test.go b/network/message/parse/messagePart_test.go
deleted file mode 100644
index 61ecc7467ff5c95dd2cf89830cacbb319cf9660f..0000000000000000000000000000000000000000
--- a/network/message/parse/messagePart_test.go
+++ /dev/null
@@ -1,72 +0,0 @@
-///////////////////////////////////////////////////////////////////////////////
-// Copyright © 2020 xx network SEZC                                          //
-//                                                                           //
-// Use of this source code is governed by a license that can be found in the //
-// LICENSE file                                                              //
-///////////////////////////////////////////////////////////////////////////////
-
-package parse
-
-import (
-	"bytes"
-	"reflect"
-	"testing"
-)
-
-// Expected messagePart for checking against, generated by gotmp in Test_newMessagePart
-var emp = messagePart{
-	Data: []uint8{0x0, 0x0, 0x0, 0x20, 0x6, 0x0, 0x7, 0x74, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x67, messagePartCurrentVersion},
-	Id:   []uint8{0x0, 0x0, 0x0, 0x20}, Part: []uint8{0x6},
-	Len:      []uint8{0x0, 0x7},
-	Contents: []uint8{0x74, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x67},
-	Version:  []uint8{messagePartCurrentVersion},
-}
-
-// This tests that a new function part is successfully created
-func Test_newMessagePart(t *testing.T) {
-	gotmp := newMessagePart(32, 6, []byte{'t', 'e', 's', 't', 'i', 'n', 'g'})
-	if !reflect.DeepEqual(gotmp, emp) {
-		t.Errorf("MessagePart received and MessagePart expected do not match."+
-			"\nexpected: %#v\nreceived: %#v", emp, gotmp)
-	}
-}
-
-// Test that GetID returns the correct ID
-func TestMessagePart_GetID(t *testing.T) {
-	if emp.GetID() != 32 {
-		t.Errorf("received and expected do not match."+
-			"\n\tGot: %#v\n\tExpected: %#v", emp.GetID(), 32)
-	}
-}
-
-// Test that GetPart returns the correct part number
-func TestMessagePart_GetPart(t *testing.T) {
-	if emp.GetPart() != 6 {
-		t.Errorf("received and expected do not match."+
-			"\n\tGot: %#v\n\tExpected: %#v", emp.GetPart(), 6)
-	}
-}
-
-// Test that GetContents returns the message contests
-func TestMessagePart_GetContents(t *testing.T) {
-	if bytes.Compare(emp.GetContents(), []byte{'t', 'e', 's', 't', 'i', 'n', 'g'}) != 0 {
-		t.Errorf("received and expected do not match."+
-			"\n\tGot: %#v\n\tExpected: %#v", emp.GetContents(), 6)
-	}
-}
-
-// Test that GetSizedContents returns the message contests
-func TestMessagePart_GetSizedContents(t *testing.T) {
-	if bytes.Compare(emp.GetSizedContents(), []byte{'t', 'e', 's', 't', 'i', 'n', 'g'}) != 0 {
-		t.Errorf("received and expected do not match."+
-			"\n\tGot: %#v\n\tExpected: %#v", emp.GetSizedContents(), 6)
-	}
-}
-
-// Test that GetContentsLength returns the message length
-func TestMessagePart_GetContentsLength(t *testing.T) {
-	if emp.GetContentsLength() != 7 {
-		t.Errorf("received and expected do not match."+
-			"\n\tGot: %#v\n\tExpected: %#v", emp.GetContentsLength(), 7)
-	}
-}
diff --git a/network/message/parse/partition.go b/network/message/parse/partition.go
deleted file mode 100644
index ad66ba2f30e09434dc090f07e0917137973d9b00..0000000000000000000000000000000000000000
--- a/network/message/parse/partition.go
+++ /dev/null
@@ -1,108 +0,0 @@
-///////////////////////////////////////////////////////////////////////////////
-// Copyright © 2020 xx network SEZC                                          //
-//                                                                           //
-// Use of this source code is governed by a license that can be found in the //
-// LICENSE file                                                              //
-///////////////////////////////////////////////////////////////////////////////
-
-package parse
-
-import (
-	"github.com/pkg/errors"
-	"gitlab.com/elixxir/client/interfaces/message"
-	"gitlab.com/elixxir/client/storage"
-	"gitlab.com/xx_network/primitives/id"
-	"gitlab.com/xx_network/primitives/netTime"
-	"time"
-)
-
-const MaxMessageParts = 255
-
-type Partitioner struct {
-	baseMessageSize   int
-	firstContentsSize int
-	partContentsSize  int
-	deltaFirstPart    int
-	maxSize           int
-	session           *storage.Session
-}
-
-func NewPartitioner(messageSize int, session *storage.Session) Partitioner {
-	p := Partitioner{
-		baseMessageSize:   messageSize,
-		firstContentsSize: messageSize - firstHeaderLen,
-		partContentsSize:  messageSize - headerLen,
-		deltaFirstPart:    firstHeaderLen - headerLen,
-		session:           session,
-	}
-	p.maxSize = p.firstContentsSize + (MaxMessageParts-1)*p.partContentsSize
-	return p
-}
-
-func (p Partitioner) Partition(recipient *id.ID, mt message.Type,
-	timestamp time.Time, payload []byte) ([][]byte, uint64, error) {
-
-	if len(payload) > p.maxSize {
-		return nil, 0, errors.Errorf("Payload is too long, max payload "+
-			"length is %d, received %d", p.maxSize, len(payload))
-	}
-
-	// Get the ID of the sent message
-	fullMessageID, messageID := p.session.Conversations().Get(recipient).GetNextSendID()
-
-	// Get the number of parts of the message; this equates to just a linear
-	// equation
-	numParts := uint8((len(payload) + p.deltaFirstPart + p.partContentsSize - 1) / p.partContentsSize)
-	parts := make([][]byte, numParts)
-
-	// Create the first message part
-	var sub []byte
-	sub, payload = splitPayload(payload, p.firstContentsSize)
-	parts[0] = newFirstMessagePart(mt, messageID, numParts, timestamp, sub).Bytes()
-
-	// Create all subsequent message parts
-	for i := uint8(1); i < numParts; i++ {
-		sub, payload = splitPayload(payload, p.partContentsSize)
-		parts[i] = newMessagePart(messageID, i, sub).Bytes()
-	}
-
-	return parts, fullMessageID, nil
-}
-
-func (p Partitioner) HandlePartition(sender *id.ID, _ message.EncryptionType,
-	contents []byte, relationshipFingerprint []byte) (message.Receive, bool) {
-
-	if isFirst(contents) {
-		// If it is the first message in a set, then handle it as so
-
-		// Decode the message structure
-		fm := FirstMessagePartFromBytes(contents)
-
-		// Handle the message ID
-		messageID := p.session.Conversations().Get(sender).
-			ProcessReceivedMessageID(fm.GetID())
-		storeageTimestamp := netTime.Now()
-		return p.session.Partition().AddFirst(sender, fm.GetType(),
-			messageID, fm.GetPart(), fm.GetNumParts(), fm.GetTimestamp(), storeageTimestamp,
-			fm.GetSizedContents(), relationshipFingerprint)
-	} else {
-		// If it is a subsequent message part, handle it as so
-		mp := messagePartFromBytes(contents)
-		messageID := p.session.Conversations().Get(sender).
-			ProcessReceivedMessageID(mp.GetID())
-
-		return p.session.Partition().Add(sender, messageID, mp.GetPart(),
-			mp.GetSizedContents(), relationshipFingerprint)
-	}
-}
-
-func splitPayload(payload []byte, length int) ([]byte, []byte) {
-	if len(payload) < length {
-		return payload, payload
-	}
-	return payload[:length], payload[length:]
-}
-
-func isFirst(payload []byte) bool {
-	return payload[idLen] == 0
-}
diff --git a/network/message/parse/partition_test.go b/network/message/parse/partition_test.go
deleted file mode 100644
index 7c063f2d222d9171416a7d0366325dd464da7475..0000000000000000000000000000000000000000
--- a/network/message/parse/partition_test.go
+++ /dev/null
@@ -1,106 +0,0 @@
-///////////////////////////////////////////////////////////////////////////////
-// Copyright © 2020 xx network SEZC                                          //
-//                                                                           //
-// Use of this source code is governed by a license that can be found in the //
-// LICENSE file                                                              //
-///////////////////////////////////////////////////////////////////////////////
-
-package parse
-
-import (
-	"gitlab.com/elixxir/client/interfaces/message"
-	"gitlab.com/elixxir/client/storage"
-	"gitlab.com/xx_network/primitives/id"
-	"gitlab.com/xx_network/primitives/netTime"
-	"testing"
-)
-
-var ipsumTestStr = "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Cras sit amet euismod est. Donec dolor " +
-	"neque, efficitur et interdum eu, lacinia quis mi. Duis bibendum elit ac lacus finibus pharetra. Suspendisse " +
-	"blandit erat in odio faucibus consectetur. Suspendisse sed consequat purus. Curabitur fringilla mi sit amet odio " +
-	"interdum suscipit. Etiam vitae dui posuere, congue mi a, convallis odio. In commodo risus at lorem volutpat " +
-	"placerat. In cursus magna purus, suscipit dictum lorem aliquam non. Praesent efficitur."
-
-// Test that NewPartitioner outputs a correctly made Partitioner
-func TestNewPartitioner(t *testing.T) {
-	storeSession := storage.InitTestingSession(t)
-	p := NewPartitioner(4096, storeSession)
-
-	if p.baseMessageSize != 4096 {
-		t.Errorf("baseMessageSize content mismatch"+
-			"\n\texpected: %v\n\treceived: %v",
-			4096, p.baseMessageSize)
-	}
-
-	if p.deltaFirstPart != firstHeaderLen-headerLen {
-		t.Errorf("deltaFirstPart content mismatch"+
-			"\n\texpected: %v\n\treceived: %v",
-			firstHeaderLen-headerLen, p.deltaFirstPart)
-	}
-
-	if p.firstContentsSize != 4096-firstHeaderLen {
-		t.Errorf("firstContentsSize content mismatch"+
-			"\n\texpected: %v\n\treceived: %v",
-			4096-firstHeaderLen, p.firstContentsSize)
-	}
-
-	if p.maxSize != (4096-firstHeaderLen)+(MaxMessageParts-1)*(4096-headerLen) {
-		t.Errorf("maxSize content mismatch"+
-			"\n\texpected: %v\n\treceived: %v",
-			(4096-firstHeaderLen)+(MaxMessageParts-1)*(4096-headerLen), p.maxSize)
-	}
-
-	if p.partContentsSize != 4088 {
-		t.Errorf("partContentsSize content mismatch"+
-			"\n\texpected: %v\n\treceived: %v",
-			4088, p.partContentsSize)
-	}
-
-	if p.session != storeSession {
-		t.Errorf("session content mismatch")
-	}
-}
-
-// Test that no error is returned running Partition
-func TestPartitioner_Partition(t *testing.T) {
-	storeSession := storage.InitTestingSession(t)
-	p := NewPartitioner(len(ipsumTestStr), storeSession)
-
-	_, _, err := p.Partition(&id.DummyUser, message.XxMessage,
-		netTime.Now(), []byte(ipsumTestStr))
-	if err != nil {
-		t.Error(err)
-	}
-}
-
-// Test that HandlePartition can handle a message part
-func TestPartitioner_HandlePartition(t *testing.T) {
-	storeSession := storage.InitTestingSession(t)
-	p := NewPartitioner(len(ipsumTestStr), storeSession)
-
-	m := newMessagePart(1107, 1, []byte(ipsumTestStr))
-
-	_, _ = p.HandlePartition(
-		&id.DummyUser,
-		message.None,
-		m.Bytes(),
-		[]byte{'t', 'e', 's', 't', 'i', 'n', 'g',
-			's', 't', 'r', 'i', 'n', 'g'},
-	)
-}
-
-// Test that HandlePartition can handle a first message part
-func TestPartitioner_HandleFirstPartition(t *testing.T) {
-	storeSession := storage.InitTestingSession(t)
-	p := NewPartitioner(len(ipsumTestStr), storeSession)
-
-	m := newFirstMessagePart(message.XxMessage, 1107, 1, netTime.Now(), []byte(ipsumTestStr))
-
-	_, _ = p.HandlePartition(
-		&id.DummyUser,
-		message.None,
-		m.Bytes(),
-		[]byte{'t', 'e', 's', 't', 'i', 'n', 'g',
-			's', 't', 'r', 'i', 'n', 'g'},
-	)
-}
diff --git a/network/message/sendCmix.go b/network/message/sendCmix.go
index a7db6d51f80e38bad648ccff338dc68409d6cb05..8d6a2961a297363be0dabae1fc7eb06d442b2394 100644
--- a/network/message/sendCmix.go
+++ b/network/message/sendCmix.go
@@ -141,7 +141,7 @@ func sendCmixHelper(sender *gateway.Sender, msg format.Message,
 			}
 		}
 		if containsBlacklisted {
-			jww.WARN.Printf("[SendCMIX-%s]Round %d contains blacklisted node, "+
+			jww.WARN.Printf("[SendCMIX-%s]Round %d contains blacklisted nodes, "+
 				"skipping...", cmixParams.DebugTag, bestRound.ID)
 			continue
 		}
diff --git a/network/message/sendCmixUtils.go b/network/message/sendCmixUtils.go
index ae2344415338685af084a81744e941691854415c..49c682af15011e9a6ebe064c0da75e83e31ef494 100644
--- a/network/message/sendCmixUtils.go
+++ b/network/message/sendCmixUtils.go
@@ -13,8 +13,8 @@ import (
 	"gitlab.com/elixxir/client/interfaces/message"
 	"gitlab.com/elixxir/client/interfaces/params"
 	preimage2 "gitlab.com/elixxir/client/interfaces/preimage"
+	"gitlab.com/elixxir/client/network/nodes"
 	"gitlab.com/elixxir/client/storage"
-	"gitlab.com/elixxir/client/storage/cmix"
 	pb "gitlab.com/elixxir/comms/mixmessages"
 	"gitlab.com/elixxir/comms/network"
 	"gitlab.com/elixxir/crypto/fastRNG"
@@ -63,9 +63,9 @@ func handlePutMessageError(firstGateway *id.ID, instance *network.Instance,
 			"round error with round %d, bailing...",
 			recipientString, bestRound.ID)
 	} else if strings.Contains(err.Error(), "Could not authenticate client. "+
-		"Is the client registered with this node?") {
+		"Is the client registered with this nodes?") {
 		// If send failed due to the gateway not recognizing the authorization,
-		// then renegotiate with the node to refresh it
+		// then renegotiate with the nodes to refresh it
 		nodeID := firstGateway.DeepCopy()
 		nodeID.SetType(id.Node)
 
@@ -88,7 +88,7 @@ func handlePutMessageError(firstGateway *id.ID, instance *network.Instance,
 // a round and retrieves the round keys.
 func processRound(instance *network.Instance, session *storage.Session,
 	nodeRegistration chan network.NodeGateway, bestRound *pb.RoundInfo,
-	recipientString, messageDigest string) (*id.ID, *cmix.RoundKeys, error) {
+	recipientString, messageDigest string) (*id.ID, *nodes.MixCypher, error) {
 
 	// Build the topology
 	idList, err := id.NewIDListFromBytes(bestRound.Topology)
@@ -99,7 +99,7 @@ func processRound(instance *network.Instance, session *storage.Session,
 	}
 	topology := connect.NewCircuit(idList)
 
-	// Get the keys for the round, reject if any nodes do not have keying
+	// get the keys for the round, reject if any nodes do not have keying
 	// relationships
 	roundKeys, missingKeys := session.Cmix().GetRoundKeys(topology)
 	if len(missingKeys) > 0 {
@@ -110,7 +110,7 @@ func processRound(instance *network.Instance, session *storage.Session,
 			bestRound.ID, recipientString, messageDigest, missingKeys)
 	}
 
-	// Get the gateway to transmit to
+	// get the gateway to transmit to
 	firstGateway := topology.GetNodeAtIndex(0).DeepCopy()
 	firstGateway.SetType(id.Gateway)
 
@@ -122,7 +122,7 @@ func processRound(instance *network.Instance, session *storage.Session,
 // the recipient.
 func buildSlotMessage(msg format.Message, recipient *id.ID, target *id.ID,
 	stream *fastRNG.Stream, senderId *id.ID, bestRound *pb.RoundInfo,
-	roundKeys *cmix.RoundKeys, param params.CMIX) (*pb.GatewaySlot,
+	roundKeys *nodes.MixCypher, param params.CMIX) (*pb.GatewaySlot,
 	format.Message, ephemeral.Id,
 	error) {
 
@@ -194,8 +194,8 @@ func buildSlotMessage(msg format.Message, recipient *id.ID, target *id.ID,
 	return slot, encMsg, ephID, nil
 }
 
-// handleMissingNodeKeys signals to the node registration thread to register a
-// node if keys are missing. Identity is triggered automatically when the node
+// handleMissingNodeKeys signals to the nodes registration thread to register a
+// nodes if keys are missing. Identity is triggered automatically when the nodes
 // is first seen, so this should on trigger on rare events.
 func handleMissingNodeKeys(instance *network.Instance,
 	newNodeChan chan network.NodeGateway, nodes []*id.ID) {
@@ -209,7 +209,7 @@ func handleMissingNodeKeys(instance *network.Instance,
 		select {
 		case newNodeChan <- ng:
 		default:
-			jww.ERROR.Printf("Failed to send node registration for %s", n)
+			jww.ERROR.Printf("Failed to send nodes registration for %s", n)
 		}
 
 	}
diff --git a/network/message/sendE2E.go b/network/message/sendE2E.go
deleted file mode 100644
index 73a1427355fd01a8b238f5987ed361bcc1189fa3..0000000000000000000000000000000000000000
--- a/network/message/sendE2E.go
+++ /dev/null
@@ -1,146 +0,0 @@
-///////////////////////////////////////////////////////////////////////////////
-// Copyright © 2020 xx network SEZC                                          //
-//                                                                           //
-// Use of this source code is governed by a license that can be found in the //
-// LICENSE file                                                              //
-///////////////////////////////////////////////////////////////////////////////
-
-package message
-
-import (
-	"github.com/pkg/errors"
-	jww "github.com/spf13/jwalterweatherman"
-	"gitlab.com/elixxir/client/interfaces/message"
-	"gitlab.com/elixxir/client/interfaces/params"
-	"gitlab.com/elixxir/client/keyExchange"
-	"gitlab.com/elixxir/client/stoppable"
-	"gitlab.com/elixxir/crypto/e2e"
-	"gitlab.com/elixxir/primitives/format"
-	"gitlab.com/xx_network/primitives/id"
-	"gitlab.com/xx_network/primitives/netTime"
-	"sync"
-	"time"
-)
-
-func (m *Manager) SendE2E(msg message.Send, param params.E2E,
-	stop *stoppable.Single) ([]id.Round, e2e.MessageID, time.Time, error) {
-	if msg.MessageType == message.Raw {
-		return nil, e2e.MessageID{}, time.Time{}, errors.Errorf("Raw (%d) is a reserved "+
-			"message type", msg.MessageType)
-	}
-	//timestamp the message
-	ts := netTime.Now()
-
-	//partition the message
-	partitions, internalMsgId, err := m.partitioner.Partition(msg.Recipient, msg.MessageType, ts,
-		msg.Payload)
-	if err != nil {
-		return nil, e2e.MessageID{}, time.Time{}, errors.WithMessage(err, "failed to send unsafe message")
-	}
-
-	jww.INFO.Printf("E2E sending %d messages to %s",
-		len(partitions), msg.Recipient)
-
-	//encrypt then send the partitions over cmix
-	roundIds := make([]id.Round, len(partitions))
-	errCh := make(chan error, len(partitions))
-
-	// get the key manager for the partner
-	partner, err := m.Session.E2e().GetPartner(msg.Recipient)
-	if err != nil {
-		return nil, e2e.MessageID{}, time.Time{}, errors.WithMessagef(err,
-			"Could not send End to End encrypted "+
-				"message, no relationship found with %s", msg.Recipient)
-	}
-
-	//return the rounds if everything send successfully
-	msgID := e2e.NewMessageID(partner.GetSendRelationshipFingerprint(), internalMsgId)
-
-	wg := sync.WaitGroup{}
-
-	for i, p := range partitions {
-
-		if msg.MessageType != message.KeyExchangeTrigger {
-			// check if any rekeys need to happen and trigger them
-			keyExchange.CheckKeyExchanges(m.Instance, m.SendE2E,
-				m.Events, m.Session, partner,
-				1*time.Minute, stop)
-		}
-
-		//create the cmix message
-		msgLen := m.Session.Cmix().GetGroup().GetP().ByteLen()
-		msgCmix := format.NewMessage(msgLen)
-		msgCmix.SetContents(p)
-
-		//get a key to end to end encrypt
-		key, err := partner.GetKeyForSending(param.Type)
-		keyTries := 0
-		for err != nil && keyTries < param.RetryCount {
-			jww.WARN.Printf("Out of sending keys for %s "+
-				"(msgDigest: %s, partition: %d), this can "+
-				"happen when sending messages faster than "+
-				"the client can negotiate keys. Please "+
-				"adjust your e2e key parameters",
-				msg.Recipient, msgCmix.Digest(), i)
-			keyTries++
-			time.Sleep(param.RetryDelay)
-			key, err = partner.GetKeyForSending(param.Type)
-		}
-		if err != nil {
-			return nil, e2e.MessageID{}, time.Time{}, errors.WithMessagef(err,
-				"Failed to get key for end to end encryption")
-		}
-
-		//end to end encrypt the cmix message
-		msgEnc := key.Encrypt(msgCmix)
-
-		jww.INFO.Printf("E2E sending %d/%d to %s with msgDigest: %s, key fp: %s, msgID: %s",
-			i+i, len(partitions), msg.Recipient, msgEnc.Digest(),
-			key.Fingerprint(), msgID)
-
-		localParam := param
-
-		// set all non last partitions to the silent type so they
-		// dont cause notificatons if OnlyNotifyOnLastSend is true
-		lastPartition := len(partitions) - 1
-		if localParam.OnlyNotifyOnLastSend && i != lastPartition {
-			localParam.IdentityPreimage = partner.GetSilentPreimage()
-		} else if localParam.IdentityPreimage == nil {
-			//set the preimage to the default e2e one if it is not already set
-			localParam.IdentityPreimage = partner.GetE2EPreimage()
-		}
-
-		jww.DEBUG.Printf("Excluded %+v", param.ExcludedRounds)
-
-		//send the cmix message, each partition in its own thread
-		wg.Add(1)
-		go func(i int) {
-			var err error
-			roundIds[i], _, err = m.SendCMIX(m.sender, msgEnc, msg.Recipient,
-				localParam.CMIX, stop)
-			if err != nil {
-				errCh <- err
-			}
-			wg.Done()
-		}(i)
-	}
-
-	wg.Wait()
-
-	//see if any parts failed to send
-	numFail, errRtn := getSendErrors(errCh)
-	if numFail > 0 {
-		jww.INFO.Printf("Failed to E2E send %d/%d to %s",
-			numFail, len(partitions), msg.Recipient)
-		return nil, e2e.MessageID{}, time.Time{}, errors.Errorf("Failed to E2E send %v/%v sub payloads:"+
-			" %s", numFail, len(partitions), errRtn)
-	} else {
-		jww.INFO.Printf("Successfully E2E sent %d/%d to %s",
-			len(partitions)-numFail, len(partitions), msg.Recipient)
-	}
-
-	//return the rounds if everything send successfully
-	jww.INFO.Printf("Successful E2E Send of %d messages to %s with msgID %s",
-		len(partitions), msg.Recipient, msgID)
-	return roundIds, msgID, ts, nil
-}
diff --git a/network/message/sendManyCmix.go b/network/message/sendManyCmix.go
index 29e766edd90738a3e0f89afa8832c48f109b2f68..777dc76f0a4e90738e6facaf822643b0e311d328 100644
--- a/network/message/sendManyCmix.go
+++ b/network/message/sendManyCmix.go
@@ -116,7 +116,7 @@ func sendManyCmixHelper(sender *gateway.Sender,
 			}
 		}
 		if containsBlacklisted {
-			jww.WARN.Printf("[SendManyCMIX-%s]Round %d contains blacklisted node, skipping...",
+			jww.WARN.Printf("[SendManyCMIX-%s]Round %d contains blacklisted nodes, skipping...",
 				param.DebugTag, bestRound.ID)
 			continue
 		}
diff --git a/network/message/sendUnsafe.go b/network/message/sendUnsafe.go
deleted file mode 100644
index 938bcc07c8bab9bd24e1bdd53cb1c38c3b4111c4..0000000000000000000000000000000000000000
--- a/network/message/sendUnsafe.go
+++ /dev/null
@@ -1,108 +0,0 @@
-///////////////////////////////////////////////////////////////////////////////
-// Copyright © 2020 xx network SEZC                                          //
-//                                                                           //
-// Use of this source code is governed by a license that can be found in the //
-// LICENSE file                                                              //
-///////////////////////////////////////////////////////////////////////////////
-package message
-
-import (
-	"github.com/pkg/errors"
-	jww "github.com/spf13/jwalterweatherman"
-	"gitlab.com/elixxir/client/interfaces/message"
-	"gitlab.com/elixxir/client/interfaces/params"
-	"gitlab.com/elixxir/crypto/e2e"
-	"gitlab.com/elixxir/primitives/format"
-	"gitlab.com/xx_network/primitives/id"
-	"gitlab.com/xx_network/primitives/netTime"
-	"sync"
-)
-
-// WARNING: Unsafe
-// Payloads are not End to End encrypted, MetaData is NOT protected with
-// this call, see SendE2E for End to End encryption and full privacy protection
-// Internal SendUnsafe which bypasses the network check, will attempt to send to
-// the network without checking state.
-// This partitions payloads into multi-part messages but does NOT end to encrypt
-// them
-// Sends using SendCMIX and returns a list of rounds the messages are in. Will
-// return an error if a single part of the message fails to send.
-func (m *Manager) SendUnsafe(msg message.Send, param params.Unsafe) ([]id.Round, error) {
-	if msg.MessageType == message.Raw {
-		return nil, errors.Errorf("Raw (%d) is a reserved message type",
-			msg.MessageType)
-	}
-	//timestamp the message
-	ts := netTime.Now()
-
-	//partition the message
-	partitions, _, err := m.partitioner.Partition(msg.Recipient, msg.MessageType, ts,
-		msg.Payload)
-
-	if err != nil {
-		return nil, errors.WithMessage(err, "failed to send unsafe message")
-	}
-
-	//send the partitions over cmix
-	roundIds := make([]id.Round, len(partitions))
-	errCh := make(chan error, len(partitions))
-
-	wg := sync.WaitGroup{}
-
-	jww.INFO.Printf("Unsafe sending %d messages to %s",
-		len(partitions), msg.Recipient)
-
-	for i, p := range partitions {
-		myID := m.Session.User().GetCryptographicIdentity()
-		msgCmix := format.NewMessage(m.Session.Cmix().GetGroup().GetP().ByteLen())
-		msgCmix.SetContents(p)
-		e2e.SetUnencrypted(msgCmix, myID.GetReceptionID())
-
-		jww.INFO.Printf("Unsafe sending %d/%d to %s with msgDigest: %s",
-			i+i, len(partitions), msg.Recipient, msgCmix.Digest())
-
-		wg.Add(1)
-		go func(i int) {
-			var err error
-			roundIds[i], _, err = m.SendCMIX(m.sender, msgCmix, msg.Recipient, param.CMIX, nil)
-			if err != nil {
-				errCh <- err
-			}
-			wg.Done()
-		}(i)
-	}
-
-	wg.Wait()
-
-	//see if any parts failed to send
-	numFail, errRtn := getSendErrors(errCh)
-	if numFail > 0 {
-		jww.INFO.Printf("Failed to Unsafe send %d/%d to %s",
-			numFail, len(partitions), msg.Recipient)
-		return nil, errors.Errorf("Failed to send %v/%v sub payloads:"+
-			" %s", numFail, len(partitions), errRtn)
-	} else {
-		jww.INFO.Printf("Successfully Unsafe sent %d/%d to %s",
-			len(partitions)-numFail, len(partitions), msg.Recipient)
-	}
-
-	//return the rounds if everything send successfully
-	return roundIds, nil
-}
-
-//returns any errors on the error channel
-func getSendErrors(c chan error) (int, string) {
-	var errRtn string
-	numFail := 0
-	done := false
-	for !done {
-		select {
-		case err := <-c:
-			errRtn += err.Error()
-			numFail++
-		default:
-			done = true
-		}
-	}
-	return numFail, errRtn
-}
diff --git a/network/message/triggers_test.go b/network/message/triggers_test.go
deleted file mode 100644
index 60caace571619a36dba468204a2d6dda540a0129..0000000000000000000000000000000000000000
--- a/network/message/triggers_test.go
+++ /dev/null
@@ -1,8 +0,0 @@
-///////////////////////////////////////////////////////////////////////////////
-// Copyright © 2020 xx network SEZC                                          //
-//                                                                           //
-// Use of this source code is governed by a license that can be found in the //
-// LICENSE file                                                              //
-///////////////////////////////////////////////////////////////////////////////
-
-package network
diff --git a/storage/cmix/roundKeys.go b/network/nodes/mixCypher.go
similarity index 74%
rename from storage/cmix/roundKeys.go
rename to network/nodes/mixCypher.go
index 10d1e6cc9070c26fae9c67bb1ddc90cd79265517..5f498b770d64f662f6fb446a2150ce93cd42a6b9 100644
--- a/storage/cmix/roundKeys.go
+++ b/network/nodes/mixCypher.go
@@ -5,7 +5,7 @@
 // LICENSE file                                                              //
 ///////////////////////////////////////////////////////////////////////////////
 
-package cmix
+package nodes
 
 import (
 	jww "github.com/spf13/jwalterweatherman"
@@ -17,29 +17,34 @@ import (
 	"golang.org/x/crypto/blake2b"
 )
 
-type RoundKeys struct {
+type MixCypher interface {
+	Encrypt(msg format.Message, salt []byte, roundID id.Round) (format.Message, [][]byte)
+	MakeClientGatewayKey(salt, digest []byte) []byte
+}
+
+type mixCypher struct {
 	keys []*key
 	g    *cyclic.Group
 }
 
 // Encrypts the given message for CMIX
 // Panics if the passed message is not sized correctly for the group
-func (rk *RoundKeys) Encrypt(msg format.Message,
+func (mc *mixCypher) Encrypt(msg format.Message,
 	salt []byte, roundID id.Round) (format.Message, [][]byte) {
 
-	if msg.GetPrimeByteLen() != rk.g.GetP().ByteLen() {
+	if msg.GetPrimeByteLen() != mc.g.GetP().ByteLen() {
 		jww.FATAL.Panicf("Cannot encrypt message whose size does not " +
 			"align with the size of the prime")
 	}
 
-	keys := make([]*cyclic.Int, len(rk.keys))
+	keys := make([]*cyclic.Int, len(mc.keys))
 
-	for i, k := range rk.keys {
-		jww.TRACE.Printf("CMIXKEY: num: %d, key: %s", i, k.Get().Text(16))
-		keys[i] = k.Get()
+	for i, k := range mc.keys {
+		jww.TRACE.Printf("CMIXKEY: num: %d, key: %s", i, k.get().Text(16))
+		keys[i] = k.get()
 	}
 
-	ecrMsg := ClientEncrypt(rk.g, msg, salt, roundID, keys)
+	ecrMsg := clientEncrypt(mc.g, msg, salt, roundID, keys)
 
 	h, err := hash.NewCMixHash()
 	if err != nil {
@@ -51,8 +56,8 @@ func (rk *RoundKeys) Encrypt(msg format.Message,
 	return ecrMsg, KMAC
 }
 
-func (rk *RoundKeys) MakeClientGatewayKey(salt, digest []byte) []byte {
-	clientGatewayKey := cmix.GenerateClientGatewayKey(rk.keys[0].k)
+func (mc *mixCypher) MakeClientGatewayKey(salt, digest []byte) []byte {
+	clientGatewayKey := cmix.GenerateClientGatewayKey(mc.keys[0].k)
 	h, _ := hash.NewCMixHash()
 	h.Write(clientGatewayKey)
 	h.Write(salt)
@@ -63,10 +68,10 @@ func (rk *RoundKeys) MakeClientGatewayKey(salt, digest []byte) []byte {
 	return h.Sum(nil)
 }
 
-func ClientEncrypt(grp *cyclic.Group, msg format.Message,
+func clientEncrypt(grp *cyclic.Group, msg format.Message,
 	salt []byte, roundID id.Round, baseKeys []*cyclic.Int) format.Message {
 
-	// Get the salt for associated data
+	// get the salt for associated data
 	hash, err := blake2b.New256(nil)
 	if err != nil {
 		panic("E2E Client Encrypt could not get blake2b Hash")
@@ -75,11 +80,11 @@ func ClientEncrypt(grp *cyclic.Group, msg format.Message,
 	hash.Write(salt)
 	salt2 := hash.Sum(nil)
 
-	// Get encryption keys
+	// get encryption keys
 	keyEcrA := cmix.ClientKeyGen(grp, salt, roundID, baseKeys)
 	keyEcrB := cmix.ClientKeyGen(grp, salt2, roundID, baseKeys)
 
-	// Get message payloads as cyclic integers
+	// get message payloads as cyclic integers
 	payloadA := grp.NewIntFromBytes(msg.GetPayloadA())
 	payloadB := grp.NewIntFromBytes(msg.GetPayloadB())
 
diff --git a/storage/cmix/roundKeys_test.go b/network/nodes/mixCypher_test.go
similarity index 99%
rename from storage/cmix/roundKeys_test.go
rename to network/nodes/mixCypher_test.go
index 1a360385cffa22784aef101c9b95dda900f899c2..7802f42f973dcd8c10a76f3af6b064c03a5986ea 100644
--- a/storage/cmix/roundKeys_test.go
+++ b/network/nodes/mixCypher_test.go
@@ -5,7 +5,7 @@
 // LICENSE file                                                              //
 ///////////////////////////////////////////////////////////////////////////////
 
-package cmix
+package nodes
 
 import (
 	"bytes"
@@ -111,7 +111,7 @@ func TestRoundKeys_Encrypt_Consistency(t *testing.T) {
 	prng.Read(contents)
 	msg.SetContents(contents)
 
-	rk := RoundKeys{
+	rk := MixCypher{
 		keys: keys,
 		g:    cmixGrp,
 	}
diff --git a/network/node/register.go b/network/nodes/register.go
similarity index 77%
rename from network/node/register.go
rename to network/nodes/register.go
index 0a741894cb2c5f0f60d530006ed6db387eff050f..23f18f7a7c8516578b8d94cf8ad970394eec5eff 100644
--- a/network/node/register.go
+++ b/network/nodes/register.go
@@ -5,7 +5,7 @@
 // LICENSE file                                                              //
 ///////////////////////////////////////////////////////////////////////////////
 
-package node
+package nodes
 
 import (
 	"crypto/sha256"
@@ -15,14 +15,11 @@ import (
 	jww "github.com/spf13/jwalterweatherman"
 	"gitlab.com/elixxir/client/network/gateway"
 	"gitlab.com/elixxir/client/stoppable"
-	"gitlab.com/elixxir/client/storage"
-	"gitlab.com/elixxir/client/storage/cmix"
 	"gitlab.com/elixxir/client/storage/user"
 	pb "gitlab.com/elixxir/comms/mixmessages"
 	"gitlab.com/elixxir/comms/network"
 	"gitlab.com/elixxir/crypto/cyclic"
 	"gitlab.com/elixxir/crypto/diffieHellman"
-	"gitlab.com/elixxir/crypto/fastRNG"
 	"gitlab.com/elixxir/crypto/hash"
 	"gitlab.com/elixxir/crypto/registration"
 	"gitlab.com/xx_network/comms/connect"
@@ -39,46 +36,13 @@ import (
 	"time"
 )
 
-const maxAttempts = 5
-
-var delayTable = [5]time.Duration{0, 5 * time.Second, 30 * time.Second, 60 * time.Second, 120 * time.Second}
-
-type RegisterNodeCommsInterface interface {
-	SendRequestClientKeyMessage(host *connect.Host,
-		message *pb.SignedClientKeyRequest) (*pb.SignedKeyResponse, error)
-}
-
-func StartRegistration(sender *gateway.Sender, session *storage.Session, rngGen *fastRNG.StreamGenerator, comms RegisterNodeCommsInterface,
-	c chan network.NodeGateway, numParallel uint) stoppable.Stoppable {
-
-	multi := stoppable.NewMulti("NodeRegistrations")
-
-	inProgess := &sync.Map{}
-	// we are relying on the in progress check to
-	// ensure there is only a single operator at a time, as a result this is a map of ID -> int
-	attempts := &sync.Map{}
-
-	for i := uint(0); i < numParallel; i++ {
-		stop := stoppable.NewSingle(fmt.Sprintf("NodeRegistration %d", i))
-
-		go registerNodes(sender, session, rngGen, comms, stop, c, inProgess, attempts)
-		multi.Add(stop)
-	}
-
-	return multi
-}
-
-func registerNodes(sender *gateway.Sender, session *storage.Session,
-	rngGen *fastRNG.StreamGenerator, comms RegisterNodeCommsInterface,
-	stop *stoppable.Single, c chan network.NodeGateway, inProgress, attempts *sync.Map) {
-	u := session.User()
+func registerNodes(r *registrar, stop *stoppable.Single, inProgress, attempts *sync.Map) {
+	u := r.session.User()
 	regSignature := u.GetTransmissionRegistrationValidationSignature()
 	// Timestamp in which user has registered with registration
 	regTimestamp := u.GetRegistrationTimestamp().UnixNano()
 	uci := u.GetCryptographicIdentity()
-	cmix := session.Cmix()
 
-	rng := rngGen.GetStream()
 	interval := time.Duration(500) * time.Millisecond
 	t := time.NewTicker(interval)
 	for {
@@ -87,7 +51,8 @@ func registerNodes(sender *gateway.Sender, session *storage.Session,
 			t.Stop()
 			stop.ToStopped()
 			return
-		case gw := <-c:
+		case gw := <-r.c:
+			rng := r.rng.GetStream()
 			nidStr := fmt.Sprintf("%x", gw.Node.ID)
 			if _, operating := inProgress.LoadOrStore(nidStr, struct{}{}); operating {
 				continue
@@ -102,23 +67,24 @@ func registerNodes(sender *gateway.Sender, session *storage.Session,
 
 			// No need to register with stale nodes
 			if isStale := gw.Node.Status == ndf.Stale; isStale {
-				jww.DEBUG.Printf("Skipping registration with stale node %s", nidStr)
+				jww.DEBUG.Printf("Skipping registration with stale nodes %s", nidStr)
 				continue
 			}
-			err := registerWithNode(sender, comms, gw, regSignature,
-				regTimestamp, uci, cmix, rng, stop)
+			err := registerWithNode(r.sender, r.comms, gw, regSignature,
+				regTimestamp, uci, r, rng, stop)
 			inProgress.Delete(nidStr)
 			if err != nil {
-				jww.ERROR.Printf("Failed to register node: %+v", err)
+				jww.ERROR.Printf("Failed to register nodes: %+v", err)
 				//if we have not reached the attempt limit for this gateway, send it back into the channel to retry
 				if numAttempts < maxAttempts {
 					go func() {
 						//delay the send for a backoff
 						time.Sleep(delayTable[numAttempts-1])
-						c <- gw
+						r.c <- gw
 					}()
 				}
 			}
+			rng.Close()
 		case <-t.C:
 		}
 	}
@@ -128,7 +94,7 @@ func registerNodes(sender *gateway.Sender, session *storage.Session,
 // It registers a user with a specific in the client's ndf.
 func registerWithNode(sender *gateway.Sender, comms RegisterNodeCommsInterface,
 	ngw network.NodeGateway, regSig []byte, registrationTimestampNano int64,
-	uci *user.CryptographicIdentity, store *cmix.Store, rng csprng.Source,
+	uci *user.CryptographicIdentity, r *registrar, rng csprng.Source,
 	stop *stoppable.Single) error {
 
 	nodeID, err := ngw.Node.GetNodeId()
@@ -137,11 +103,11 @@ func registerWithNode(sender *gateway.Sender, comms RegisterNodeCommsInterface,
 		return err
 	}
 
-	if store.IsRegistered(nodeID) {
+	if r.Has(nodeID) {
 		return nil
 	}
 
-	jww.INFO.Printf("registerWithNode() begin registration with node: %s", nodeID)
+	jww.INFO.Printf("registerWithNode() begin registration with nodes: %s", nodeID)
 
 	var transmissionKey *cyclic.Int
 	var validUntil uint64
@@ -153,12 +119,12 @@ func registerWithNode(sender *gateway.Sender, comms RegisterNodeCommsInterface,
 		h.Reset()
 		h.Write([]byte(strconv.Itoa(4000 + userNum)))
 
-		transmissionKey = store.GetGroup().NewIntFromBytes(h.Sum(nil))
+		transmissionKey = r.session.GetCmixGroup().NewIntFromBytes(h.Sum(nil))
 		jww.INFO.Printf("transmissionKey: %v", transmissionKey.Bytes())
 	} else {
 		// Request key from server
 		transmissionKey, keyId, validUntil, err = requestKey(sender, comms, ngw, regSig,
-			registrationTimestampNano, uci, store, rng, stop)
+			registrationTimestampNano, uci, r, rng, stop)
 
 		if err != nil {
 			return errors.Errorf("Failed to request key: %+v", err)
@@ -166,24 +132,24 @@ func registerWithNode(sender *gateway.Sender, comms RegisterNodeCommsInterface,
 
 	}
 
-	store.Add(nodeID, transmissionKey, validUntil, keyId)
+	r.add(nodeID, transmissionKey, validUntil, keyId)
 
-	jww.INFO.Printf("Completed registration with node %s", nodeID)
+	jww.INFO.Printf("Completed registration with nodes %s", nodeID)
 
 	return nil
 }
 
 func requestKey(sender *gateway.Sender, comms RegisterNodeCommsInterface,
 	ngw network.NodeGateway, regSig []byte, registrationTimestampNano int64,
-	uci *user.CryptographicIdentity, store *cmix.Store, rng csprng.Source,
+	uci *user.CryptographicIdentity, r *registrar, rng csprng.Source,
 	stop *stoppable.Single) (*cyclic.Int, []byte, uint64, error) {
 
-	grp := store.GetGroup()
+	grp := r.session.GetCmixGroup()
 
 	// FIXME: Why 256 bits? -- this is spec but not explained, it has
 	// to do with optimizing operations on one side and still preserves
 	// decent security -- cite this.
-	dhPrivBytes, err := csprng.GenerateInGroup(store.GetGroup().GetPBytes(), 256, rng)
+	dhPrivBytes, err := csprng.GenerateInGroup(grp.GetPBytes(), 256, rng)
 	if err != nil {
 		return nil, nil, 0, err
 	}
@@ -269,23 +235,23 @@ func requestKey(sender *gateway.Sender, comms RegisterNodeCommsInterface,
 	h.Write(signedKeyResponse.KeyResponse)
 	hashedResponse := h.Sum(nil)
 
-	// Load node certificate
+	// Load nodes certificate
 	gatewayCert, err := tls.LoadCertificate(ngw.Gateway.TlsCertificate)
 	if err != nil {
-		return nil, nil, 0, errors.WithMessagef(err, "Unable to load node's certificate")
+		return nil, nil, 0, errors.WithMessagef(err, "Unable to load nodes's certificate")
 	}
 
 	// Extract public key
 	nodePubKey, err := tls.ExtractPublicKey(gatewayCert)
 	if err != nil {
-		return nil, nil, 0, errors.WithMessagef(err, "Unable to load node's public key")
+		return nil, nil, 0, errors.WithMessagef(err, "Unable to load nodes's public key")
 	}
 
 	// Verify the response signature
 	err = rsa.Verify(nodePubKey, opts.Hash, hashedResponse,
 		signedKeyResponse.KeyResponseSignedByGateway.Signature, opts)
 	if err != nil {
-		return nil, nil, 0, errors.WithMessagef(err, "Could not verify node's signature")
+		return nil, nil, 0, errors.WithMessagef(err, "Could not verify nodes's signature")
 	}
 
 	// Unmarshal the response
@@ -318,7 +284,7 @@ func requestKey(sender *gateway.Sender, comms RegisterNodeCommsInterface,
 	}
 
 	// Construct the transmission key from the client key
-	transmissionKey := store.GetGroup().NewIntFromBytes(clientKey)
+	transmissionKey := grp.NewIntFromBytes(clientKey)
 
 	// Use Client keypair to sign Server nonce
 	return transmissionKey, keyResponse.KeyID, keyResponse.ValidUntil, nil
diff --git a/network/node/register_test.go b/network/nodes/register_test.go
similarity index 99%
rename from network/node/register_test.go
rename to network/nodes/register_test.go
index 7f89f4ed9cb4f849f41bd84bed1b4671234e8e84..f269d1b4fb43e0d78c6f7a67fef1b8039a6f0641 100644
--- a/network/node/register_test.go
+++ b/network/nodes/register_test.go
@@ -5,7 +5,7 @@
 // LICENSE file                                                              //
 ///////////////////////////////////////////////////////////////////////////////
 
-package node
+package nodes
 
 import (
 	//"crypto/rand"
diff --git a/network/nodes/registrar.go b/network/nodes/registrar.go
new file mode 100644
index 0000000000000000000000000000000000000000..20540292bee1f01844be54937735d84cd74af48f
--- /dev/null
+++ b/network/nodes/registrar.go
@@ -0,0 +1,156 @@
+package nodes
+
+import (
+	"fmt"
+	"github.com/pkg/errors"
+	jww "github.com/spf13/jwalterweatherman"
+	"gitlab.com/elixxir/client/network/gateway"
+	"gitlab.com/elixxir/client/stoppable"
+	"gitlab.com/elixxir/client/storage"
+	"gitlab.com/elixxir/client/storage/versioned"
+	pb "gitlab.com/elixxir/comms/mixmessages"
+	"gitlab.com/elixxir/comms/network"
+	"gitlab.com/elixxir/crypto/fastRNG"
+	"gitlab.com/xx_network/comms/connect"
+	"gitlab.com/xx_network/primitives/id"
+	"gitlab.com/xx_network/primitives/ndf"
+	"sync"
+	"time"
+)
+
+const InputChanLen = 1000
+const maxAttempts = 5
+
+var delayTable = [5]time.Duration{0, 5 * time.Second, 30 * time.Second, 60 * time.Second, 120 * time.Second}
+
+type Registrar interface {
+	StartProcessies(numParallel uint) stoppable.Stoppable
+	Has(nid *id.ID) bool
+	GetKeys(topology *connect.Circuit) (MixCypher, error)
+	NumRegistered() int
+	GetInputChannel() chan<- network.NodeGateway
+}
+
+type RegisterNodeCommsInterface interface {
+	SendRequestClientKeyMessage(host *connect.Host,
+		message *pb.SignedClientKeyRequest) (*pb.SignedKeyResponse, error)
+}
+
+type registrar struct {
+	nodes map[id.ID]*key
+	kv    *versioned.KV
+	mux   sync.RWMutex
+
+	session *storage.Session
+	sender  *gateway.Sender
+	comms   RegisterNodeCommsInterface
+	rng     *fastRNG.StreamGenerator
+
+	c chan network.NodeGateway
+}
+
+// LoadRegistrar loads a registrar from disk, and creates a new one if it doesnt exist
+func LoadRegistrar(kv *versioned.KV, session *storage.Session,
+	sender *gateway.Sender, comms RegisterNodeCommsInterface,
+	rngGen *fastRNG.StreamGenerator) (Registrar, error) {
+	kv = kv.Prefix(prefix)
+	r := &registrar{
+		nodes: make(map[id.ID]*key),
+		kv:    kv,
+	}
+
+	obj, err := kv.Get(storeKey, currentKeyVersion)
+	//if there is no stored data, make a new node handler
+	if err != nil {
+		jww.WARN.Printf("Failed to load Node Registrar, creating a new object")
+		err = r.save()
+		if err != nil {
+			return nil, errors.WithMessagef(err, "Failed to make a new registrar")
+		}
+	} else {
+		err = r.unmarshal(obj.Data)
+		if err != nil {
+			return nil, err
+		}
+	}
+
+	r.session = session
+	r.sender = sender
+	r.comms = comms
+	r.rng = rngGen
+
+	r.c = make(chan network.NodeGateway, InputChanLen)
+
+	return r, nil
+}
+
+func (r *registrar) StartProcessies(numParallel uint) stoppable.Stoppable {
+
+	multi := stoppable.NewMulti("NodeRegistrations")
+
+	inProgess := &sync.Map{}
+	// we are relying on the in progress check to
+	// ensure there is only a single operator at a time, as a result this is a map of ID -> int
+	attempts := &sync.Map{}
+
+	for i := uint(0); i < numParallel; i++ {
+		stop := stoppable.NewSingle(fmt.Sprintf("NodeRegistration %d", i))
+
+		go registerNodes(r, stop, inProgess, attempts)
+		multi.Add(stop)
+	}
+
+	return multi
+}
+
+func (r *registrar) GetInputChannel() chan<- network.NodeGateway {
+	return r.c
+}
+
+// GetKeys returns a MixCypher for the topology and a list of nodes it did
+// not have a key for. If there are missing keys, then returns nil MixCypher.
+func (r *registrar) GetKeys(topology *connect.Circuit) (MixCypher, error) {
+	r.mux.RLock()
+	defer r.mux.RUnlock()
+
+	keys := make([]*key, topology.Len())
+
+	// get keys for every node. If it cannot be found, add
+	// it to the missing nodes list so it can be
+	for i := 0; i < topology.Len(); i++ {
+		nid := topology.GetNodeAtIndex(i)
+		k, ok := r.nodes[*nid]
+		if !ok {
+			r.c <- network.NodeGateway{
+				Node: ndf.Node{ID: nid.Marshal(),
+					//status must be active because it is in a round
+					Status: ndf.Active},
+			}
+			return nil, errors.Errorf("cannot get key for %s, triggered registration", nid)
+		} else {
+			keys[i] = k
+		}
+	}
+
+	rk := &mixCypher{
+		keys: keys,
+		g:    r.session.GetCmixGroup(),
+	}
+
+	return rk, nil
+}
+
+// Returns if the store has the nodes
+func (r *registrar) Has(nid *id.ID) bool {
+	r.mux.RLock()
+	_, exists := r.nodes[*nid]
+	r.mux.RUnlock()
+	return exists
+}
+
+// NumRegistered returns the number of registered nodes.
+func (r *registrar) NumRegistered() int {
+	r.mux.RLock()
+	defer r.mux.RUnlock()
+	return len(r.nodes)
+}
diff --git a/network/nodes/store.go b/network/nodes/store.go
new file mode 100644
index 0000000000000000000000000000000000000000..f5c29ad6c453415542e7647cc8c5f9e2c6d4c373
--- /dev/null
+++ b/network/nodes/store.go
@@ -0,0 +1,111 @@
+///////////////////////////////////////////////////////////////////////////////
+// Copyright © 2020 xx network SEZC                                          //
+//                                                                           //
+// Use of this source code is governed by a license that can be found in the //
+// LICENSE file                                                              //
+///////////////////////////////////////////////////////////////////////////////
+
+package nodes
+
+import (
+	"encoding/json"
+	"github.com/pkg/errors"
+	jww "github.com/spf13/jwalterweatherman"
+	"gitlab.com/elixxir/client/storage/versioned"
+	"gitlab.com/elixxir/crypto/cyclic"
+	"gitlab.com/xx_network/primitives/id"
+	"gitlab.com/xx_network/primitives/netTime"
+)
+
+const prefix = "cmix"
+const currentStoreVersion = 0
+const (
+	storeKey = "KeyStore"
+	grpKey   = "GroupKey"
+)
+
+// Add adds the key for a round to the cMix storage object. Saves the updated
+// list of nodes and the key to disk.
+func (r *registrar) add(nid *id.ID, k *cyclic.Int,
+	validUntil uint64, keyId []byte) {
+	r.mux.Lock()
+	defer r.mux.Unlock()
+
+	nodeKey := newKey(r.kv, k, nid, validUntil, keyId)
+
+	r.nodes[*nid] = nodeKey
+	if err := r.save(); err != nil {
+		jww.FATAL.Panicf("Failed to save nodeKey list for %s: %+v", nid, err)
+	}
+}
+
+// Remove removes a nodes key from the nodes map and saves.
+func (r *registrar) remove(nid *id.ID) {
+	r.mux.Lock()
+	defer r.mux.Unlock()
+
+	nodeKey, ok := r.nodes[*nid]
+	if !ok {
+		return
+	}
+
+	nodeKey.delete(r.kv, nid)
+
+	delete(r.nodes, *nid)
+
+	if err := r.save(); err != nil {
+		jww.FATAL.Panicf("Failed to make nodeKey for %s: %+v", nid, err)
+	}
+}
+
+// save stores the cMix store.
+func (r *registrar) save() error {
+	now := netTime.Now()
+
+	data, err := r.marshal()
+	if err != nil {
+		return err
+	}
+
+	obj := versioned.Object{
+		Version:   currentStoreVersion,
+		Timestamp: now,
+		Data:      data,
+	}
+
+	return r.kv.Set(storeKey, currentKeyVersion, &obj)
+}
+
+// marshal builds a byte representation of the Store.
+func (r *registrar) marshal() ([]byte, error) {
+	nodes := make([]id.ID, len(r.nodes))
+
+	index := 0
+	for nid := range r.nodes {
+		nodes[index] = nid
+		index++
+	}
+
+	return json.Marshal(&nodes)
+}
+
+// unmarshal restores the data for a Store from the byte representation of the
+// Store
+func (r *registrar) unmarshal(b []byte) error {
+	var nodes []id.ID
+
+	err := json.Unmarshal(b, &nodes)
+	if err != nil {
+		return err
+	}
+
+	for _, nid := range nodes {
+		k, err := loadKey(r.kv, &nid)
+		if err != nil {
+			return errors.WithMessagef(err, "could not load nodes key for %s", &nid)
+		}
+		r.nodes[nid] = k
+	}
+
+	return nil
+}
diff --git a/storage/cmix/key.go b/network/nodes/storeKey.go
similarity index 91%
rename from storage/cmix/key.go
rename to network/nodes/storeKey.go
index 6c2954ac4fa65f30b50cd771f73652357b7c19bb..3d680152fbbe9be364b32cef634f3004d33d5c6e 100644
--- a/storage/cmix/key.go
+++ b/network/nodes/storeKey.go
@@ -5,7 +5,7 @@
 // LICENSE file                                                              //
 ///////////////////////////////////////////////////////////////////////////////
 
-package cmix
+package nodes
 
 import (
 	"bytes"
@@ -43,12 +43,12 @@ func newKey(kv *versioned.KV, k *cyclic.Int, id *id.ID, validUntil uint64, keyId
 	return nk
 }
 
-// returns the cyclic key
-func (k *key) Get() *cyclic.Int {
+// get returns the cyclic key
+func (k *key) get() *cyclic.Int {
 	return k.k
 }
 
-// loads the key for the given node id from the versioned keystore
+// loads the key for the given nodes id from the versioned keystore
 func loadKey(kv *versioned.KV, id *id.ID) (*key, error) {
 	k := &key{}
 
@@ -68,7 +68,7 @@ func loadKey(kv *versioned.KV, id *id.ID) (*key, error) {
 	return k, nil
 }
 
-// saves the key as the key for the given node ID in the passed keystore
+// saves the key as the key for the given nodes ID in the passed keystore
 func (k *key) save() error {
 	now := netTime.Now()
 
@@ -129,7 +129,7 @@ func (k *key) marshal() ([]byte, error) {
 func (k *key) unmarshal(b []byte) error {
 	buff := bytes.NewBuffer(b)
 
-	// Get the key length
+	// get the key length
 	keyLen := int(binary.LittleEndian.Uint64(buff.Next(8)))
 
 	// Decode the key length
@@ -139,11 +139,11 @@ func (k *key) unmarshal(b []byte) error {
 		return err
 	}
 
-	// Get the keyID length
+	// get the keyID length
 	keyIDLen := int(binary.LittleEndian.Uint64(buff.Next(8)))
 	k.keyId = buff.Next(keyIDLen)
 
-	// Get the valid until value
+	// get the valid until value
 	k.validUntil = binary.LittleEndian.Uint64(buff.Next(8))
 
 	return nil
diff --git a/storage/cmix/key_test.go b/network/nodes/storeKey_test.go
similarity index 97%
rename from storage/cmix/key_test.go
rename to network/nodes/storeKey_test.go
index 27e53eaa0ccb3971085ea4f11d42b56849eed47f..8dc3a4444d9937e93587d8fddc673b8eaad0c284 100644
--- a/storage/cmix/key_test.go
+++ b/network/nodes/storeKey_test.go
@@ -5,4 +5,4 @@
 // LICENSE file                                                              //
 ///////////////////////////////////////////////////////////////////////////////
 
-package cmix
+package nodes
diff --git a/storage/cmix/store_test.go b/network/nodes/store_test.go
similarity index 88%
rename from storage/cmix/store_test.go
rename to network/nodes/store_test.go
index 6fb614257dc2e23fab664bd73cd8a3055a6a7c06..8e1c09b3eb4d1ed3266440cf86418af5c9119ac9 100644
--- a/storage/cmix/store_test.go
+++ b/network/nodes/store_test.go
@@ -5,7 +5,7 @@
 // LICENSE file                                                              //
 ///////////////////////////////////////////////////////////////////////////////
 
-package cmix
+package nodes
 
 import (
 	"bytes"
@@ -44,7 +44,7 @@ func TestNewStore(t *testing.T) {
 
 // Happy path Add/Done test
 func TestStore_AddRemove(t *testing.T) {
-	// Uncomment to print keys that Set and Get are called on
+	// Uncomment to print keys that Set and get are called on
 	// jww.SetStdoutThreshold(jww.LevelTrace)
 
 	testStore, _ := makeTestStore()
@@ -54,18 +54,18 @@ func TestStore_AddRemove(t *testing.T) {
 	keyId := []byte("keyId")
 	testStore.Add(nodeId, k, 0, keyId)
 	if _, exists := testStore.nodes[*nodeId]; !exists {
-		t.Fatal("Failed to add node key")
+		t.Fatal("Failed to add nodes key")
 	}
 
 	testStore.Remove(nodeId)
 	if _, exists := testStore.nodes[*nodeId]; exists {
-		t.Fatal("Failed to remove node key")
+		t.Fatal("Failed to remove nodes key")
 	}
 }
 
 // Happy path Add/Has test
 func TestStore_AddHas(t *testing.T) {
-	// Uncomment to print keys that Set and Get are called on
+	// Uncomment to print keys that Set and get are called on
 	// jww.SetStdoutThreshold(jww.LevelTrace)
 
 	testStore, _ := makeTestStore()
@@ -75,17 +75,17 @@ func TestStore_AddHas(t *testing.T) {
 
 	testStore.Add(nodeId, key, 0, nil)
 	if _, exists := testStore.nodes[*nodeId]; !exists {
-		t.Fatal("Failed to add node key")
+		t.Fatal("Failed to add nodes key")
 	}
 
 	if !testStore.Has(nodeId) {
-		t.Fatal("cannot find the node id that that was added")
+		t.Fatal("cannot find the nodes id that that was added")
 	}
 }
 
 // Tests that has returns false when it doesnt have
 func TestStore_DoesntHave(t *testing.T) {
-	// Uncomment to print keys that Set and Get are called on
+	// Uncomment to print keys that Set and get are called on
 	// jww.SetStdoutThreshold(jww.LevelTrace)
 
 	testStore, _ := makeTestStore()
@@ -93,18 +93,18 @@ func TestStore_DoesntHave(t *testing.T) {
 	nodeId := id.NewIdFromString("test", id.Node, t)
 
 	if testStore.Has(nodeId) {
-		t.Fatal("found the node when it shouldnt have been found")
+		t.Fatal("found the nodes when it shouldnt have been found")
 	}
 }
 
 // Happy path
 func TestLoadStore(t *testing.T) {
-	// Uncomment to print keys that Set and Get are called on
+	// Uncomment to print keys that Set and get are called on
 	// jww.SetStdoutThreshold(jww.LevelTrace)
 
 	testStore, kv := makeTestStore()
 
-	// Add a test node key
+	// Add a test nodes key
 	nodeId := id.NewIdFromString("test", id.Node, t)
 	k := testStore.grp.NewInt(5)
 	testTime, err := time.Parse(time.RFC3339,
@@ -124,7 +124,7 @@ func TestLoadStore(t *testing.T) {
 		t.Fatalf("Unable to load store: %+v", err)
 	}
 	if len(store.nodes) != len(testStore.nodes) {
-		t.Errorf("LoadStore failed to load node keys")
+		t.Errorf("LoadStore failed to load nodes keys")
 	}
 
 	circuit := connect.NewCircuit([]*id.ID{nodeId})
@@ -142,7 +142,7 @@ func TestLoadStore(t *testing.T) {
 
 // Happy path
 func TestStore_GetRoundKeys(t *testing.T) {
-	// Uncomment to print keys that Set and Get are called on
+	// Uncomment to print keys that Set and get are called on
 	// jww.SetStdoutThreshold(jww.LevelTrace)
 
 	testStore, _ := makeTestStore()
@@ -164,13 +164,13 @@ func TestStore_GetRoundKeys(t *testing.T) {
 		t.Errorf("Expected to have no missing keys, got %d", len(missing))
 	}
 	if result == nil || len(result.keys) != numIds {
-		t.Errorf("Expected to have %d node keys", numIds)
+		t.Errorf("Expected to have %d nodes keys", numIds)
 	}
 }
 
 // Missing keys path
 func TestStore_GetRoundKeys_Missing(t *testing.T) {
-	// Uncomment to print keys that Set and Get are called on
+	// Uncomment to print keys that Set and get are called on
 	// jww.SetStdoutThreshold(jww.LevelTrace)
 
 	testStore, _ := makeTestStore()
@@ -181,7 +181,7 @@ func TestStore_GetRoundKeys_Missing(t *testing.T) {
 		nodeIds[i] = id.NewIdFromUInt(uint64(i)+1, id.Node, t)
 		key := testStore.grp.NewInt(int64(i) + 1)
 
-		// Only add every other node so there are missing nodes
+		// Only add every other nodes so there are missing nodes
 		if i%2 == 0 {
 			testStore.Add(nodeIds[i], key, 0, nil)
 			testStore.Add(nodeIds[i], key, 0, nil)
diff --git a/network/rounds/retrieve.go b/network/rounds/retrieve.go
index 7151dd92de4d110e8a79f514e0dd4a1190e065a9..ce9d63fcebc9d8fd15a1ec4fdadc220e6d25915a 100644
--- a/network/rounds/retrieve.go
+++ b/network/rounds/retrieve.go
@@ -71,7 +71,7 @@ func (m *Manager) processMessageRetrieval(comms messageRetrievalComms,
 				jww.WARN.Printf("Empty gateway ID List")
 				continue
 			}
-			// Target the last node in the team first because it has
+			// Target the last nodes in the team first because it has
 			// messages first, randomize other members of the team
 			var rndBytes [32]byte
 			stream := m.Rng.GetStream()
diff --git a/single/receiveResponse.go b/single/receiveResponse.go
index 7c27bda09a9082f171a7a4d35304b42f111c0227..19d17da6ccb2e03efa1005060fc7252fa7497c7d 100644
--- a/single/receiveResponse.go
+++ b/single/receiveResponse.go
@@ -59,7 +59,7 @@ func (m *Manager) receiveResponseHandler(rawMessages chan message.Receive,
 func (m *Manager) processesResponse(rid *id.ID, ephID ephemeral.Id,
 	msgBytes []byte) error {
 
-	// Get the state from the map
+	// get the state from the map
 	m.p.RLock()
 	state, exists := m.p.singleUse[*rid]
 	m.p.RUnlock()
diff --git a/single/transmission.go b/single/transmission.go
index 436420a7f3711d7bbb4a5271c207779f64bd8704..d145aa1fb17f3bb11fa383b6422273c10129c024 100644
--- a/single/transmission.go
+++ b/single/transmission.go
@@ -63,7 +63,7 @@ type roundEvents interface {
 func (m *Manager) transmitSingleUse(partner contact2.Contact, payload []byte,
 	tag string, MaxMsgs uint8, rng io.Reader, callback ReplyComm, timeout time.Duration) error {
 
-	// Get ephemeral ID address space size; this blocks until the address space
+	// get ephemeral ID address space size; this blocks until the address space
 	// size is set for the first time
 	addressSize := m.net.GetAddressSize()
 	timeStart := netTime.Now()
diff --git a/storage/auth/previousNegotiations.go b/storage/auth/previousNegotiations.go
index d15bab6bd33a75985ae4b021427f58e59a3ff353..6b880859800d1f2cc8e4d2ac8b2a1500b14d44ad 100644
--- a/storage/auth/previousNegotiations.go
+++ b/storage/auth/previousNegotiations.go
@@ -71,7 +71,7 @@ func (s *Store) AddIfNew(partner *id.ID, negotiationFingerprint []byte) (
 		return
 	}
 
-	// Get the fingerprint list from storage
+	// get the fingerprint list from storage
 	fingerprints, err := s.loadNegotiationFingerprints(partner)
 	if err != nil {
 		jww.FATAL.Panicf("Failed to load negotiation fingerprints for "+
diff --git a/storage/clientVersion/store_test.go b/storage/clientVersion/store_test.go
index 72098cffa061ac63ac375f92e533312272e5d3bf..c9f5ab78a1f80df2a3388677adc080a42e1ff6e2 100644
--- a/storage/clientVersion/store_test.go
+++ b/storage/clientVersion/store_test.go
@@ -95,7 +95,7 @@ func TestStore_Get(t *testing.T) {
 
 	test := s.Get()
 	if !reflect.DeepEqual(expected, test) {
-		t.Errorf("Get() failed to return the expected version."+
+		t.Errorf("get() failed to return the expected version."+
 			"\nexpected: %s\nreceived: %s", &expected, &test)
 	}
 }
diff --git a/storage/cmix/store.go b/storage/cmix/store.go
deleted file mode 100644
index 5947900089ea3ec047c6ce676eb27264cc20dca9..0000000000000000000000000000000000000000
--- a/storage/cmix/store.go
+++ /dev/null
@@ -1,230 +0,0 @@
-///////////////////////////////////////////////////////////////////////////////
-// Copyright © 2020 xx network SEZC                                          //
-//                                                                           //
-// Use of this source code is governed by a license that can be found in the //
-// LICENSE file                                                              //
-///////////////////////////////////////////////////////////////////////////////
-
-package cmix
-
-import (
-	"encoding/json"
-	"github.com/pkg/errors"
-	jww "github.com/spf13/jwalterweatherman"
-	"gitlab.com/elixxir/client/storage/utility"
-	"gitlab.com/elixxir/client/storage/versioned"
-	"gitlab.com/elixxir/crypto/cyclic"
-	"gitlab.com/xx_network/comms/connect"
-	"gitlab.com/xx_network/primitives/id"
-	"gitlab.com/xx_network/primitives/netTime"
-	"sync"
-)
-
-const prefix = "cmix"
-const currentStoreVersion = 0
-const (
-	storeKey = "KeyStore"
-	grpKey   = "GroupKey"
-)
-
-type Store struct {
-	nodes      map[id.ID]*key
-	validUntil uint64
-	keyId      []byte
-	grp        *cyclic.Group
-	kv         *versioned.KV
-	mux        sync.RWMutex
-}
-
-// NewStore returns a new cMix storage object.
-func NewStore(grp *cyclic.Group, kv *versioned.KV) (*Store, error) {
-	// Generate public key
-	kv = kv.Prefix(prefix)
-
-	s := &Store{
-		nodes: make(map[id.ID]*key),
-		grp:   grp,
-		kv:    kv,
-	}
-
-	err := utility.StoreGroup(kv, grp, grpKey)
-	if err != nil {
-		return nil, errors.WithMessage(err, "Failed to store cMix group")
-	}
-
-	return s, s.save()
-}
-
-// LoadStore loads the cMix storage object.
-func LoadStore(kv *versioned.KV) (*Store, error) {
-	kv = kv.Prefix(prefix)
-	s := &Store{
-		nodes: make(map[id.ID]*key),
-		kv:    kv,
-	}
-
-	obj, err := kv.Get(storeKey, currentKeyVersion)
-	if err != nil {
-		return nil, err
-	}
-
-	err = s.unmarshal(obj.Data)
-
-	if err != nil {
-		return nil, err
-	}
-
-	return s, nil
-}
-
-// Add adds the key for a round to the cMix storage object. Saves the updated
-// list of nodes and the key to disk.
-func (s *Store) Add(nid *id.ID, k *cyclic.Int,
-	validUntil uint64, keyId []byte) {
-	s.mux.Lock()
-	defer s.mux.Unlock()
-
-	nodeKey := newKey(s.kv, k, nid, validUntil, keyId)
-
-	s.nodes[*nid] = nodeKey
-	if err := s.save(); err != nil {
-		jww.FATAL.Panicf("Failed to save nodeKey list for %s: %+v", nid, err)
-	}
-}
-
-// Returns if the store has the node
-func (s *Store) Has(nid *id.ID) bool {
-	s.mux.RLock()
-	_, exists := s.nodes[*nid]
-	s.mux.RUnlock()
-	return exists
-}
-
-// Remove removes a node key from the nodes map and saves.
-func (s *Store) Remove(nid *id.ID) {
-	s.mux.Lock()
-	defer s.mux.Unlock()
-
-	nodeKey, ok := s.nodes[*nid]
-	if !ok {
-		return
-	}
-
-	nodeKey.delete(s.kv, nid)
-
-	delete(s.nodes, *nid)
-
-	if err := s.save(); err != nil {
-		jww.FATAL.Panicf("Failed to make nodeKey for %s: %+v", nid, err)
-	}
-}
-
-// GetRoundKeys returns a RoundKeys for the topology and a list of nodes it did
-// not have a key for. If there are missing keys, then returns nil RoundKeys.
-func (s *Store) GetRoundKeys(topology *connect.Circuit) (*RoundKeys, []*id.ID) {
-	s.mux.RLock()
-	defer s.mux.RUnlock()
-
-	var missingNodes []*id.ID
-
-	keys := make([]*key, topology.Len())
-
-	for i := 0; i < topology.Len(); i++ {
-		nid := topology.GetNodeAtIndex(i)
-		k, ok := s.nodes[*nid]
-		if !ok {
-			missingNodes = append(missingNodes, nid)
-		} else {
-			keys[i] = k
-		}
-	}
-
-	// Handle missing keys case
-	if len(missingNodes) > 0 {
-		return nil, missingNodes
-	}
-
-	rk := &RoundKeys{
-		keys: keys,
-		g:    s.grp,
-	}
-
-	return rk, missingNodes
-}
-
-// GetGroup returns the cyclic group used for cMix.
-func (s *Store) GetGroup() *cyclic.Group {
-	return s.grp
-}
-
-func (s *Store) IsRegistered(nid *id.ID) bool {
-	s.mux.RLock()
-	defer s.mux.RUnlock()
-
-	_, ok := s.nodes[*nid]
-	return ok
-}
-
-// Count returns the number of registered nodes.
-func (s *Store) Count() int {
-	s.mux.RLock()
-	defer s.mux.RUnlock()
-	return len(s.nodes)
-}
-
-// save stores the cMix store.
-func (s *Store) save() error {
-	now := netTime.Now()
-
-	data, err := s.marshal()
-	if err != nil {
-		return err
-	}
-
-	obj := versioned.Object{
-		Version:   currentStoreVersion,
-		Timestamp: now,
-		Data:      data,
-	}
-
-	return s.kv.Set(storeKey, currentKeyVersion, &obj)
-}
-
-// marshal builds a byte representation of the Store.
-func (s *Store) marshal() ([]byte, error) {
-	nodes := make([]id.ID, len(s.nodes))
-
-	index := 0
-	for nid := range s.nodes {
-		nodes[index] = nid
-		index++
-	}
-
-	return json.Marshal(&nodes)
-}
-
-// unmarshal restores the data for a Store from the byte representation of the
-// Store
-func (s *Store) unmarshal(b []byte) error {
-	var nodes []id.ID
-
-	err := json.Unmarshal(b, &nodes)
-	if err != nil {
-		return err
-	}
-
-	for _, nid := range nodes {
-		k, err := loadKey(s.kv, &nid)
-		if err != nil {
-			return errors.WithMessagef(err, "could not load node key for %s", &nid)
-		}
-		s.nodes[nid] = k
-	}
-
-	s.grp, err = utility.LoadGroup(s.kv, grpKey)
-	if err != nil {
-		return errors.WithMessage(err, "Failed to load cMix group")
-	}
-
-	return nil
-}
diff --git a/storage/conversation/partner_test.go b/storage/conversation/partner_test.go
index b2381e77bf6ced1f871c949d79bc59fb943e2680..1e4d2097b50ab988a9f87e269ab9daff6bfdc476 100644
--- a/storage/conversation/partner_test.go
+++ b/storage/conversation/partner_test.go
@@ -19,7 +19,7 @@ import (
 
 // Tests happy path of LoadOrMakeConversation() when making a new Conversation.
 func TestLoadOrMakeConversation_Make(t *testing.T) {
-	// Uncomment to print keys that Set and Get are called on
+	// Uncomment to print keys that Set and get are called on
 	jww.SetStdoutThreshold(jww.LevelTrace)
 	// Set up test values
 	kv := versioned.NewKV(make(ekv.Memstore))
diff --git a/storage/conversation/ring_test.go b/storage/conversation/ring_test.go
index 5b1c02a0711c52ed19906ead6bb18ac25970c0d3..76624bc5ac56e881f75c2b11afa36ed5baa29459 100644
--- a/storage/conversation/ring_test.go
+++ b/storage/conversation/ring_test.go
@@ -176,12 +176,12 @@ func TestBuff_Get(t *testing.T) {
 		id:        0,
 	}
 
-	// Retrieve newly inserted value using Get()
+	// Retrieve newly inserted value using get()
 	received := testBuff.Get()
 
 	// Check that retrieved value is expected
 	if !reflect.DeepEqual(received, expected) {
-		t.Fatalf("Get() did not retrieve expected value."+
+		t.Fatalf("get() did not retrieve expected value."+
 			"\n\tExpected: %v"+
 			"\n\tReceived: %v", expected, received)
 	}
@@ -200,9 +200,9 @@ func TestBuff_Get(t *testing.T) {
 		t.Fatalf("Add error: %v", err)
 	}
 
-	// Ensure newly inserted message is returned by Get()
+	// Ensure newly inserted message is returned by get()
 	if !reflect.DeepEqual(testBuff.Get(), newlyInserted) {
-		t.Fatalf("Get() did not retrieve expected value."+
+		t.Fatalf("get() did not retrieve expected value."+
 			"\n\tExpected: %v"+
 			"\n\tReceived: %v", expected, received)
 	}
diff --git a/storage/conversation/store.go b/storage/conversation/store.go
index 662e6c1f2599816258e9e75f294ae7f27dc425cb..aeaa1a42bc8339489d5e6927edb9e9673465d0ad 100644
--- a/storage/conversation/store.go
+++ b/storage/conversation/store.go
@@ -56,7 +56,7 @@ func (s *Store) Delete(partner *id.ID) {
 	s.mux.Lock()
 	defer s.mux.Unlock()
 
-	// Get contact from memory
+	// get contact from memory
 	c, exists := s.loadedConversations[*partner]
 	if !exists {
 		return
diff --git a/storage/conversation/store_test.go b/storage/conversation/store_test.go
index 7505280e1c534486b60b47b76aac4858fdc1bc4a..f4d109d98e67a504844bdd698586e2f47e74cc69 100644
--- a/storage/conversation/store_test.go
+++ b/storage/conversation/store_test.go
@@ -18,7 +18,7 @@ import (
 
 // Read jww trace output to determine if key names are ok
 func TestStore_Get_Prefix(t *testing.T) {
-	// Uncomment to print keys that Set and Get are called on
+	// Uncomment to print keys that Set and get are called on
 	jww.SetStdoutThreshold(jww.LevelTrace)
 
 	// It's a conversation with a partner, so does there need to be an additional layer of hierarchy here later?
diff --git a/storage/e2e/session.go b/storage/e2e/session.go
index 10d7c4faf6ddcdd7e46ecbece5c0447b0ed74c36..8607c2f9366d0f4af55b936c8bcde6b77c326d13 100644
--- a/storage/e2e/session.go
+++ b/storage/e2e/session.go
@@ -613,7 +613,7 @@ func (s *Session) generate(kv *versioned.KV) *versioned.KV {
 		stream := s.relationship.manager.ctx.rng.GetStream()
 		s.myPrivKey = dh.GeneratePrivateKey(len(grp.GetPBytes()),
 			grp, stream)
-		// Get the variant opposite my partners variant
+		// get the variant opposite my partners variant
 		sidhVariant := utility.GetCompatibleSIDHVariant(
 			s.partnerSIDHPubKey.Variant())
 		s.mySIDHPrivKey = utility.NewSIDHPrivateKey(sidhVariant)
diff --git a/storage/e2e/store.go b/storage/e2e/store.go
index 1aea1efe8ddff38327d44fbfc84a07a1f32db458..1c9c361106b23062a08c7710afda82889d031d4a 100644
--- a/storage/e2e/store.go
+++ b/storage/e2e/store.go
@@ -231,7 +231,7 @@ func (s *Store) GetPartnerContact(partnerID *id.ID) (contact.Contact, error) {
 	s.mux.RLock()
 	defer s.mux.RUnlock()
 
-	// Get partner
+	// get partner
 	m, exists := s.managers[*partnerID]
 	if !exists {
 		return contact.Contact{}, errors.New(NoPartnerErrorStr)
diff --git a/storage/e2e/store_test.go b/storage/e2e/store_test.go
index 229799b57de2b453b75e6c00fad35c539dd12401..8009a22a1d0b204cbfc0d495226ce606a97cca2c 100644
--- a/storage/e2e/store_test.go
+++ b/storage/e2e/store_test.go
@@ -69,7 +69,7 @@ func TestNewStore(t *testing.T) {
 
 	key, err := expectedStore.kv.Get(storeKey, 0)
 	if err != nil {
-		t.Errorf("Get() error when getting Store from KV: %v", err)
+		t.Errorf("get() error when getting Store from KV: %v", err)
 	}
 
 	if !bytes.Equal(expectedData, key.Data) {
diff --git a/storage/edge/edge.go b/storage/edge/edge.go
index e6a25fa821587393fca2e5c236e36111a7bcadd9..1f1c6c6f01a1778c81f8ce33f13b9dbe2f19c76b 100644
--- a/storage/edge/edge.go
+++ b/storage/edge/edge.go
@@ -58,7 +58,7 @@ func (s *Store) Add(preimage Preimage, identity *id.ID) {
 	s.mux.Lock()
 	defer s.mux.Unlock()
 
-	// Get the list to update, create if needed
+	// get the list to update, create if needed
 	preimages, exists := s.edge[*identity]
 	if !exists {
 		preimages = newPreimages(identity)
diff --git a/storage/edge/preimage.go b/storage/edge/preimage.go
index a8e4c89432dddc25596495fe69b59e7786ceab45..f6d62432f81db03232f4e94aaea756eb6ac96642 100644
--- a/storage/edge/preimage.go
+++ b/storage/edge/preimage.go
@@ -68,7 +68,7 @@ func (pis Preimages) remove(data []byte) {
 // loadPreimages loads a Preimages object for the given identity.
 func loadPreimages(kv *versioned.KV, identity *id.ID) (Preimages, error) {
 
-	// Get the data from storage
+	// get the data from storage
 	obj, err := kv.Get(preimagesKey(identity), preimageStoreVersion)
 	if err != nil {
 		return nil, errors.WithMessagef(err, "Failed to load edge Preimages "+
diff --git a/storage/fileTransfer/partStore.go b/storage/fileTransfer/partStore.go
index 72765fffeae536e47ec71910c888e8108beba1a5..59018ab63b506c8fb0f7d046aeea900ec3d41c6a 100644
--- a/storage/fileTransfer/partStore.go
+++ b/storage/fileTransfer/partStore.go
@@ -104,7 +104,7 @@ func (ps *partStore) getFile() ([]byte, int) {
 	ps.mux.Lock()
 	defer ps.mux.Unlock()
 
-	// Get the length of one of the parts (all parts should be the same size)
+	// get the length of one of the parts (all parts should be the same size)
 	partLength := 0
 	for _, part := range ps.parts {
 		partLength = len(part)
@@ -140,7 +140,7 @@ func (ps *partStore) len() int {
 
 // loadPartStore loads all the file parts from storage into memory.
 func loadPartStore(kv *versioned.KV) (*partStore, error) {
-	// Get list of saved file parts
+	// get list of saved file parts
 	vo, err := kv.Get(partsListKey, partsListVersion)
 	if err != nil {
 		return nil, errors.Errorf(loadPartListErr, err)
diff --git a/storage/fileTransfer/receiveFileTransfers.go b/storage/fileTransfer/receiveFileTransfers.go
index 0c7bffdc6881e96fd79026deb58c98195b05dfbf..fc293fe9cb66446366f5324ad56115dd1f73299b 100644
--- a/storage/fileTransfer/receiveFileTransfers.go
+++ b/storage/fileTransfer/receiveFileTransfers.go
@@ -224,7 +224,7 @@ func LoadReceivedFileTransfersStore(kv *versioned.KV) (
 		kv:        kv.Prefix(receivedFileTransfersStorePrefix),
 	}
 
-	// Get the list of transfer IDs corresponding to each received transfer from
+	// get the list of transfer IDs corresponding to each received transfer from
 	// storage
 	transfersList, err := rft.loadTransfersList()
 	if err != nil {
@@ -289,7 +289,7 @@ func (rft *ReceivedFileTransfersStore) saveTransfersList() error {
 // received transfer from storage.
 func (rft *ReceivedFileTransfersStore) loadTransfersList() (
 	[]ftCrypto.TransferID, error) {
-	// Get transfers list from storage
+	// get transfers list from storage
 	vo, err := rft.kv.Get(
 		receivedFileTransfersStoreKey, receivedFileTransfersStoreVersion)
 	if err != nil {
diff --git a/storage/fileTransfer/receiveFileTransfers_test.go b/storage/fileTransfer/receiveFileTransfers_test.go
index 4fd245ec4d902d99f8389a8a4a1a6393c95d1432..64c183b54441fef528bea1d988df0edd5b87bce5 100644
--- a/storage/fileTransfer/receiveFileTransfers_test.go
+++ b/storage/fileTransfer/receiveFileTransfers_test.go
@@ -197,7 +197,7 @@ func TestReceivedFileTransfersStore_GetTransfer(t *testing.T) {
 		t.Errorf("Failed to add new transfer: %+v", err)
 	}
 
-	// Get the transfer
+	// get the transfer
 	transfer, err := rft.GetTransfer(tid)
 	if err != nil {
 		t.Errorf("GetTransfer returned an error: %+v", err)
@@ -245,7 +245,7 @@ func TestReceivedFileTransfersStore_GetTransfer_NoTransferError(t *testing.T) {
 		t.Errorf("Failed to add new transfer: %+v", err)
 	}
 
-	// Get the transfer
+	// get the transfer
 	invalidTid, _ := ftCrypto.NewTransferID(prng)
 	expectedErr := fmt.Sprintf(getReceivedTransferErr, invalidTid)
 	_, err = rft.GetTransfer(invalidTid)
diff --git a/storage/fileTransfer/sentFileTransfers.go b/storage/fileTransfer/sentFileTransfers.go
index e672ce184fa4674a47b94c89bb47abdc2b420eb8..682c22defcd372bd2f94bd46bd413f78294990e1 100644
--- a/storage/fileTransfer/sentFileTransfers.go
+++ b/storage/fileTransfer/sentFileTransfers.go
@@ -149,7 +149,7 @@ func (sft *SentFileTransfersStore) GetUnsentParts() (
 	defer sft.mux.Unlock()
 	unsentParts := map[ftCrypto.TransferID][]uint16{}
 
-	// Get list of unsent part numbers for each transfer
+	// get list of unsent part numbers for each transfer
 	for tid, st := range sft.transfers {
 		unsentPartNums, err := st.GetUnsentPartNums()
 		if err != nil {
@@ -168,7 +168,7 @@ func (sft *SentFileTransfersStore) GetSentRounds() map[id.Round][]ftCrypto.Trans
 	defer sft.mux.Unlock()
 	sentRounds := map[id.Round][]ftCrypto.TransferID{}
 
-	// Get list of round IDs that transfers have in-progress rounds on
+	// get list of round IDs that transfers have in-progress rounds on
 	for tid, st := range sft.transfers {
 		for _, rid := range st.GetSentRounds() {
 			sentRounds[rid] = append(sentRounds[rid], tid)
@@ -193,7 +193,7 @@ func (sft *SentFileTransfersStore) GetUnsentPartsAndSentRounds() (
 	sentRounds := map[id.Round][]ftCrypto.TransferID{}
 
 	for tid, st := range sft.transfers {
-		// Get list of unsent part numbers for each transfer
+		// get list of unsent part numbers for each transfer
 		stUnsentParts, err := st.GetUnsentPartNums()
 		if err != nil {
 			return nil, nil, err
@@ -202,7 +202,7 @@ func (sft *SentFileTransfersStore) GetUnsentPartsAndSentRounds() (
 			unsentParts[tid] = stUnsentParts
 		}
 
-		// Get list of round IDs that transfers have in-progress rounds on
+		// get list of round IDs that transfers have in-progress rounds on
 		for _, rid := range st.GetSentRounds() {
 			sentRounds[rid] = append(sentRounds[rid], tid)
 		}
@@ -223,7 +223,7 @@ func LoadSentFileTransfersStore(kv *versioned.KV) (*SentFileTransfersStore, erro
 		kv:        kv.Prefix(sentFileTransfersStorePrefix),
 	}
 
-	// Get the list of transfer IDs corresponding to each sent transfer from
+	// get the list of transfer IDs corresponding to each sent transfer from
 	// storage
 	transfersList, err := sft.loadTransfersList()
 	if err != nil {
@@ -288,7 +288,7 @@ func (sft *SentFileTransfersStore) saveTransfersList() error {
 // sent transfer from storage.
 func (sft *SentFileTransfersStore) loadTransfersList() ([]ftCrypto.TransferID,
 	error) {
-	// Get transfers list from storage
+	// get transfers list from storage
 	vo, err := sft.kv.Get(
 		sentFileTransfersStoreKey, sentFileTransfersStoreVersion)
 	if err != nil {
diff --git a/storage/fileTransfer/sentFileTransfers_test.go b/storage/fileTransfer/sentFileTransfers_test.go
index 5fb3bdc2f9df5aaac90ccb7aca70a348977a0371..0de6b1f5ed30a7e088946d2ed28ff8bfaf8ace0e 100644
--- a/storage/fileTransfer/sentFileTransfers_test.go
+++ b/storage/fileTransfer/sentFileTransfers_test.go
@@ -629,7 +629,7 @@ func TestSentFileTransfersStore_saveTransfersList_loadTransfersList(t *testing.T
 		t.Errorf("saveTransfersList returned an error: %+v", err)
 	}
 
-	// Get list from storage
+	// get list from storage
 	list, err := sft.loadTransfersList()
 	if err != nil {
 		t.Errorf("loadTransfersList returned an error: %+v", err)
diff --git a/storage/fileTransfer/sentTransfer.go b/storage/fileTransfer/sentTransfer.go
index 115eee1de2d8a95ef302edec84d6271e1ddce4ce..768aae51e5c2b672d04c2024d072c328f5c2f887 100644
--- a/storage/fileTransfer/sentTransfer.go
+++ b/storage/fileTransfer/sentTransfer.go
@@ -460,7 +460,7 @@ func (st *SentTransfer) GetEncryptedPart(partNum uint16, contentsSize int) (encP
 		return nil, nil, format.Fingerprint{}, MaxRetriesErr
 	}
 
-	// Get next unused fingerprint number and mark it as used
+	// get next unused fingerprint number and mark it as used
 	nextKey, err := st.fpVector.Next()
 	if err != nil {
 		return nil, nil, format.Fingerprint{},
@@ -517,7 +517,7 @@ func (st *SentTransfer) UnsetInProgress(rid id.Round) ([]uint16, error) {
 	st.mux.Lock()
 	defer st.mux.Unlock()
 
-	// Get the list of part numbers to be removed from list
+	// get the list of part numbers to be removed from list
 	partNums, _ := st.inProgressTransfers.getPartNums(rid)
 
 	// The part status is set in partStats before the parts and round ID so that
@@ -544,7 +544,7 @@ func (st *SentTransfer) FinishTransfer(rid id.Round) (bool, error) {
 	st.mux.Lock()
 	defer st.mux.Unlock()
 
-	// Get the parts in-progress for the round ID or return an error if none
+	// get the parts in-progress for the round ID or return an error if none
 	// exist
 	partNums, exists := st.inProgressTransfers.getPartNums(rid)
 	if !exists {
@@ -585,7 +585,7 @@ func (st *SentTransfer) GetUnsentPartNums() ([]uint16, error) {
 	st.mux.RLock()
 	defer st.mux.RUnlock()
 
-	// Get list of parts with a status of unsent
+	// get list of parts with a status of unsent
 	unsentPartNums, err := st.partStats.GetKeys(unsent)
 	if err != nil {
 		return nil, errors.Errorf(getUnsentPartsErr, err)
diff --git a/storage/fileTransfer/sentTransfer_test.go b/storage/fileTransfer/sentTransfer_test.go
index ea4302b47a857125522b97be4cc13c4503e2d39c..aab3d2a6ff1272cdceeee0d90b630a3d9cca79d5 100644
--- a/storage/fileTransfer/sentTransfer_test.go
+++ b/storage/fileTransfer/sentTransfer_test.go
@@ -998,7 +998,7 @@ func TestSentTransfer_GetInProgress(t *testing.T) {
 			expectedPartNums[:3], err)
 	}
 
-	// Get the in-progress parts
+	// get the in-progress parts
 	receivedPartNums, exists := st.GetInProgress(rid)
 	if !exists {
 		t.Errorf("Failed to find parts for round %d that should exist.", rid)
@@ -1254,7 +1254,7 @@ func TestSentTransfer_GetSentRounds(t *testing.T) {
 		}
 	}
 
-	// Get the sent
+	// get the sent
 	sentRounds := st.GetSentRounds()
 	sort.SliceStable(sentRounds,
 		func(i, j int) bool { return sentRounds[i] < sentRounds[j] })
diff --git a/storage/fileTransfer/transferredBundle.go b/storage/fileTransfer/transferredBundle.go
index 639c8a096fdd8bf6cb8fd8d111e40d27b8d85491..dff0c2a240daf93e488c5e7a1667e112b5660a91 100644
--- a/storage/fileTransfer/transferredBundle.go
+++ b/storage/fileTransfer/transferredBundle.go
@@ -165,10 +165,10 @@ func (tb *transferredBundle) unmarshal(b []byte) {
 
 	// Iterate over all map entries
 	for n := buff.Next(8); len(n) == 8; n = buff.Next(8) {
-		// Get the round ID from the first 8 bytes
+		// get the round ID from the first 8 bytes
 		rid := id.Round(binary.LittleEndian.Uint64(n))
 
-		// Get number of part numbers listed
+		// get number of part numbers listed
 		partNumsLen := binary.LittleEndian.Uint16(buff.Next(2))
 
 		// Increment number of parts
diff --git a/storage/fileTransfer/transferredBundle_test.go b/storage/fileTransfer/transferredBundle_test.go
index 62b3916e53608f7a60994a8a6a2f9a125d5659e3..36e618778072601a134a5daf0c3b9dc3446bbcd4 100644
--- a/storage/fileTransfer/transferredBundle_test.go
+++ b/storage/fileTransfer/transferredBundle_test.go
@@ -137,7 +137,7 @@ func Test_transferredBundle_getNumParts(t *testing.T) {
 		}
 	}
 
-	// Get number of parts
+	// get number of parts
 	receivedNumParts := tb.getNumParts()
 
 	if expectedNumParts != receivedNumParts {
diff --git a/storage/hostList/hostList_test.go b/storage/hostList/hostList_test.go
index 32780fae0a09db487520596e3748611a1bc5636c..1371370cc226dfa01eb52b963d36122c2ce2a902 100644
--- a/storage/hostList/hostList_test.go
+++ b/storage/hostList/hostList_test.go
@@ -55,7 +55,7 @@ func TestStore_Store_Get(t *testing.T) {
 
 	newList, err := s.Get()
 	if err != nil {
-		t.Errorf("Get returned an error: %+v", err)
+		t.Errorf("get returned an error: %+v", err)
 	}
 
 	if !reflect.DeepEqual(list, newList) {
@@ -72,7 +72,7 @@ func TestStore_Get_StorageError(t *testing.T) {
 
 	_, err := s.Get()
 	if err == nil || !strings.Contains(err.Error(), expectedErr) {
-		t.Errorf("Get failed to return the expected error."+
+		t.Errorf("get failed to return the expected error."+
 			"\nexpected: %s\nreceived: %+v", expectedErr, err)
 	}
 }
diff --git a/storage/partition/multiPartMessage_test.go b/storage/partition/multiPartMessage_test.go
index 0fa14f3294eef6efa0ff1362e0eca7d1f97864fa..8d39165a74f129a956205cd2f4c0a86b87b5b9c2 100644
--- a/storage/partition/multiPartMessage_test.go
+++ b/storage/partition/multiPartMessage_test.go
@@ -48,7 +48,7 @@ func Test_loadOrCreateMultiPartMessage_Create(t *testing.T) {
 
 	obj, err := mpm.kv.Get(messageKey, 0)
 	if err != nil {
-		t.Errorf("Get() failed to get multiPartMessage from key value store: %v", err)
+		t.Errorf("get() failed to get multiPartMessage from key value store: %v", err)
 	}
 
 	if !bytes.Equal(expectedData, obj.Data) {
@@ -144,7 +144,7 @@ func TestMultiPartMessage_Add(t *testing.T) {
 
 	obj, err := mpm.kv.Get(messageKey, 0)
 	if err != nil {
-		t.Errorf("Get() failed to get multiPartMessage from key value store: %v", err)
+		t.Errorf("get() failed to get multiPartMessage from key value store: %v", err)
 	}
 
 	if !bytes.Equal(expectedData, obj.Data) {
diff --git a/storage/partition/part_test.go b/storage/partition/part_test.go
index b1db602f7932a505a877e8c34a54ed61173cf1ab..b421d6af31f6f06236805ac6b472ca310b669cce 100644
--- a/storage/partition/part_test.go
+++ b/storage/partition/part_test.go
@@ -35,7 +35,7 @@ func Test_savePart(t *testing.T) {
 	// Attempt to get from key value store
 	obj, err := kv.Get(key, 0)
 	if err != nil {
-		t.Errorf("Get() produced an error: %v", err)
+		t.Errorf("get() produced an error: %v", err)
 	}
 
 	// Check if the data is correct
diff --git a/storage/reception/store_test.go b/storage/reception/store_test.go
index b969c9680a0f4e0885808df8b9144db6ca82d819..87e00d1623c786673cb21241299bfe8412fb3f22 100644
--- a/storage/reception/store_test.go
+++ b/storage/reception/store_test.go
@@ -97,7 +97,7 @@ func TestStore_save(t *testing.T) {
 
 	obj, err := kv.Prefix(receptionPrefix).Get(receptionStoreStorageKey, 0)
 	if err != nil {
-		t.Errorf("Get() produced an error: %+v", err)
+		t.Errorf("get() produced an error: %+v", err)
 	}
 
 	expectedData, err := json.Marshal(expected)
diff --git a/storage/rounds/checkedRounds.go b/storage/rounds/checkedRounds.go
index df17faa3ad38c7ea84d67e44aee01feb92230925..620d4b023a90006863bcbec80fe74b625feb3ddf 100644
--- a/storage/rounds/checkedRounds.go
+++ b/storage/rounds/checkedRounds.go
@@ -60,7 +60,7 @@ func newCheckedRounds(maxRounds int, store *utility.BlockStore) *CheckedRounds {
 
 // LoadCheckedRounds restores the list from storage.
 func LoadCheckedRounds(maxRounds int, kv *versioned.KV) (*CheckedRounds, error) {
-	// Get rounds from storage
+	// get rounds from storage
 	store, rounds, err := utility.LoadBlockStore(kv)
 	if err != nil {
 		return nil, errors.Errorf("failed to load CheckedRounds from storage: %+v", err)
diff --git a/storage/rounds/uncheckedRounds.go b/storage/rounds/uncheckedRounds.go
index 58140e461bcc1f9603a8f8eef2e23d598da26ba4..5d951fc0da0adaa95a9589937bff9ccca93fbd7a 100644
--- a/storage/rounds/uncheckedRounds.go
+++ b/storage/rounds/uncheckedRounds.go
@@ -353,7 +353,7 @@ func (s *UncheckedRoundStore) marshal() ([]byte, error) {
 func (s *UncheckedRoundStore) unmarshal(data []byte) error {
 	buff := bytes.NewBuffer(data)
 
-	// Get number of rounds in list
+	// get number of rounds in list
 	length := binary.BigEndian.Uint32(buff.Next(8))
 
 	for i := 0; i < int(length); i++ {
diff --git a/storage/rounds/unknownRounds.go b/storage/rounds/unknownRounds.go
index 98e863d2b911c5ad7cd7cd9d1eed68ba9e4edc2b..ba2661c17c9cb1f2b6ae3a4ffe4d115d2ed189e6 100644
--- a/storage/rounds/unknownRounds.go
+++ b/storage/rounds/unknownRounds.go
@@ -91,7 +91,7 @@ func LoadUnknownRounds(kv *versioned.KV,
 
 	urs := newUnknownRounds(kv, params)
 
-	// Get the versioned data from the kv
+	// get the versioned data from the kv
 	obj, err := kv.Get(unknownRoundsStorageKey, unknownRoundsStorageVersion)
 	if err != nil {
 		jww.FATAL.Panicf("Failed to load UnknownRounds: %+v", err)
diff --git a/storage/rounds/unknownRounds_test.go b/storage/rounds/unknownRounds_test.go
index 7611579bf84dc6cb1e23c67f8b0c7e68ea765c2e..95537ded8f722850c81448793f55d2031157c656 100644
--- a/storage/rounds/unknownRounds_test.go
+++ b/storage/rounds/unknownRounds_test.go
@@ -46,7 +46,7 @@ func TestNewUnknownRoundsStore(t *testing.T) {
 
 	key, err := store.kv.Get(unknownRoundsStorageKey, unknownRoundsStorageVersion)
 	if err != nil {
-		t.Fatalf("Get() encoutnered an error when getting Store from KV: %v", err)
+		t.Fatalf("get() encoutnered an error when getting Store from KV: %v", err)
 	}
 
 	// Check that the stored data is the data outputted by marshal
diff --git a/storage/session.go b/storage/session.go
index 2ad3042ed7c76758227a42f751f146ae15cc58b4..921e3792a9e680c964b55886a1a5cf70f86539ef 100644
--- a/storage/session.go
+++ b/storage/session.go
@@ -10,11 +10,7 @@
 package storage
 
 import (
-	"gitlab.com/elixxir/client/storage/edge"
-	"gitlab.com/elixxir/client/storage/hostList"
-	"gitlab.com/elixxir/client/storage/rounds"
-	"gitlab.com/elixxir/client/storage/ud"
-	"gitlab.com/xx_network/primitives/rateLimiting"
+	"gitlab.com/elixxir/client/storage/utility"
 	"sync"
 	"testing"
 	"time"
@@ -22,22 +18,13 @@ import (
 	"github.com/pkg/errors"
 	jww "github.com/spf13/jwalterweatherman"
 	userInterface "gitlab.com/elixxir/client/interfaces/user"
-	"gitlab.com/elixxir/client/storage/auth"
 	"gitlab.com/elixxir/client/storage/clientVersion"
-	"gitlab.com/elixxir/client/storage/cmix"
-	"gitlab.com/elixxir/client/storage/conversation"
-	"gitlab.com/elixxir/client/storage/e2e"
-	"gitlab.com/elixxir/client/storage/partition"
-	"gitlab.com/elixxir/client/storage/reception"
 	"gitlab.com/elixxir/client/storage/user"
-	"gitlab.com/elixxir/client/storage/utility"
 	"gitlab.com/elixxir/client/storage/versioned"
 	"gitlab.com/elixxir/crypto/cyclic"
 	"gitlab.com/elixxir/crypto/fastRNG"
 	"gitlab.com/elixxir/ekv"
 	"gitlab.com/elixxir/primitives/version"
-	"gitlab.com/xx_network/crypto/csprng"
-	"gitlab.com/xx_network/crypto/large"
 	"gitlab.com/xx_network/crypto/signature/rsa"
 	"gitlab.com/xx_network/primitives/id"
 	"gitlab.com/xx_network/primitives/ndf"
@@ -46,6 +33,8 @@ import (
 // Number of rounds to store in the CheckedRound buffer
 const CheckRoundsMaxSize = 1000000 / 64
 const currentSessionVersion = 0
+const cmixGroupKey = "cmixGroup"
+const e2eGroupKey = "e2eGroup"
 
 // Session object, backed by encrypted filestore
 type Session struct {
@@ -56,26 +45,12 @@ type Session struct {
 	//memoized data
 	regStatus RegistrationStatus
 	ndf       *ndf.NetworkDefinition
+	cmixGroup *cyclic.Group
+	e2eGroup  *cyclic.Group
 
 	//sub-stores
-	e2e                 *e2e.Store
-	cmix                *cmix.Store
-	user                *user.User
-	conversations       *conversation.Store
-	partition           *partition.Store
-	auth                *auth.Store
-	criticalMessages    *utility.E2eMessageBuffer
-	criticalRawMessages *utility.CmixMessageBuffer
-	bucketStore         *rateLimiting.Bucket
-	bucketParamStore    *utility.BucketParamStore
-	garbledMessages     *utility.MeteredCmixMessageBuffer
-	reception           *reception.Store
-	clientVersion       *clientVersion.Store
-	uncheckedRounds     *rounds.UncheckedRoundStore
-	hostList            *hostList.Store
-	edgeCheck           *edge.Store
-	ringBuff            *conversation.Buff
-	ud                  *ud.Store
+	user          *user.User
+	clientVersion *clientVersion.Store
 }
 
 // Initialize a new Session object
@@ -97,8 +72,7 @@ func initStore(baseDir, password string) (*Session, error) {
 // Creates new UserData in the session
 func New(baseDir, password string, u userInterface.User,
 	currentVersion version.Version, cmixGrp, e2eGrp *cyclic.Group,
-	rng *fastRNG.StreamGenerator,
-	rateLimitParams ndf.RateLimiting) (*Session, error) {
+) (*Session, error) {
 
 	s, err := initStore(baseDir, password)
 	if err != nil {
@@ -116,75 +90,19 @@ func New(baseDir, password string, u userInterface.User,
 	if err != nil {
 		return nil, errors.WithMessage(err, "Failed to create user")
 	}
-	uid := s.user.GetCryptographicIdentity().GetReceptionID()
-
-	s.cmix, err = cmix.NewStore(cmixGrp, s.kv)
-	if err != nil {
-		return nil, errors.WithMessage(err, "Failed to create cmix store")
-	}
-
-	s.e2e, err = e2e.NewStore(e2eGrp, s.kv, u.E2eDhPrivateKey, uid, rng)
-	if err != nil {
-		return nil, errors.WithMessage(err, "Failed to create e2e store")
-	}
-
-	s.auth, err = auth.NewStore(s.kv, e2eGrp, []*cyclic.Int{u.E2eDhPrivateKey})
-	if err != nil {
-		return nil, errors.WithMessage(err, "Failed to create auth store")
-	}
-
-	s.garbledMessages, err = utility.NewMeteredCmixMessageBuffer(s.kv, garbledMessagesKey)
-	if err != nil {
-		return nil, errors.WithMessage(err, "Failed to create garbledMessages buffer")
-	}
-
-	s.criticalMessages, err = utility.NewE2eMessageBuffer(s.kv, criticalMessagesKey)
-	if err != nil {
-		return nil, errors.WithMessage(err, "Failed to create e2e critical message buffer")
-	}
-
-	s.criticalRawMessages, err = utility.NewCmixMessageBuffer(s.kv, criticalRawMessagesKey)
-	if err != nil {
-		return nil, errors.WithMessage(err, "Failed to create raw critical message buffer")
-	}
-
-	s.conversations = conversation.NewStore(s.kv)
-	s.partition = partition.New(s.kv)
-
-	s.reception = reception.NewStore(s.kv)
 
 	s.clientVersion, err = clientVersion.NewStore(currentVersion, s.kv)
-	if err != nil {
-		return nil, errors.WithMessage(err, "Failed to create client version store.")
-	}
-
-	s.uncheckedRounds, err = rounds.NewUncheckedStore(s.kv)
-	if err != nil {
-		return nil, errors.WithMessage(err, "Failed to create unchecked round store")
-	}
-
-	s.hostList = hostList.NewStore(s.kv)
-
-	s.edgeCheck, err = edge.NewStore(s.kv, u.ReceptionID)
-	if err != nil {
-		return nil, errors.WithMessage(err, "Failed to create edge check store")
-	}
 
-	s.bucketParamStore, err = utility.NewBucketParamsStore(
-		uint32(rateLimitParams.Capacity), uint32(rateLimitParams.LeakedTokens),
-		time.Duration(rateLimitParams.LeakDuration), s.kv)
-	if err != nil {
-		return nil, errors.WithMessage(err, "Failed to create bucket params store")
+	if err = utility.StoreGroup(s.kv, cmixGrp, cmixGroupKey); err != nil {
+		return nil, err
 	}
 
-	s.bucketStore = utility.NewStoredBucket(uint32(rateLimitParams.Capacity), uint32(rateLimitParams.LeakedTokens),
-		time.Duration(rateLimitParams.LeakDuration), s.kv)
-
-	s.ud, err = ud.NewStore(s.kv)
-	if err != nil {
-		return nil, errors.WithMessage(err, "Failed to create ud store")
+	if err = utility.StoreGroup(s.kv, e2eGrp, e2eGroupKey); err != nil {
+		return nil, err
 	}
 
+	s.cmixGroup = cmixGrp
+	s.e2eGroup = e2eGrp
 	return s, nil
 }
 
@@ -218,75 +136,16 @@ func Load(baseDir, password string, currentVersion version.Version,
 		return nil, errors.WithMessage(err, "Failed to load Session")
 	}
 
-	s.cmix, err = cmix.LoadStore(s.kv)
+	s.cmixGroup, err = utility.LoadGroup(s.kv, cmixGroupKey)
 	if err != nil {
 		return nil, errors.WithMessage(err, "Failed to load Session")
 	}
 
-	uid := s.user.GetCryptographicIdentity().GetReceptionID()
-
-	s.e2e, err = e2e.LoadStore(s.kv, uid, rng)
+	s.e2eGroup, err = utility.LoadGroup(s.kv, e2eGroupKey)
 	if err != nil {
 		return nil, errors.WithMessage(err, "Failed to load Session")
 	}
 
-	s.auth, err = auth.LoadStore(s.kv, s.e2e.GetGroup(),
-		[]*cyclic.Int{s.e2e.GetDHPrivateKey()})
-	if err != nil {
-		return nil, errors.WithMessage(err, "Failed to load auth store")
-	}
-
-	s.criticalMessages, err = utility.LoadE2eMessageBuffer(s.kv, criticalMessagesKey)
-	if err != nil {
-		return nil, errors.WithMessage(err, "Failed to load session")
-	}
-
-	s.criticalRawMessages, err = utility.LoadCmixMessageBuffer(s.kv, criticalRawMessagesKey)
-	if err != nil {
-		return nil, errors.WithMessage(err, "Failed to load raw critical message buffer")
-	}
-
-	s.garbledMessages, err = utility.LoadMeteredCmixMessageBuffer(s.kv, garbledMessagesKey)
-	if err != nil {
-		return nil, errors.WithMessage(err, "Failed to load session")
-	}
-
-	s.conversations = conversation.NewStore(s.kv)
-	s.partition = partition.Load(s.kv)
-
-	s.reception = reception.LoadStore(s.kv)
-
-	s.uncheckedRounds, err = rounds.LoadUncheckedStore(s.kv)
-	if err != nil {
-		return nil, errors.WithMessage(err, "Failed to load unchecked round store")
-	}
-
-	s.hostList = hostList.NewStore(s.kv)
-
-	s.edgeCheck, err = edge.LoadStore(s.kv)
-	if err != nil {
-		return nil, errors.WithMessage(err, "Failed to load edge check store")
-	}
-
-	s.bucketParamStore, err = utility.LoadBucketParamsStore(s.kv)
-	if err != nil {
-		return nil, errors.WithMessage(err,
-			"Failed to load bucket params store")
-	}
-
-	params := s.bucketParamStore.Get()
-	s.bucketStore, err = utility.LoadBucket(params.Capacity, params.LeakedTokens,
-		params.LeakDuration, s.kv)
-	if err != nil {
-		return nil, errors.WithMessage(err,
-			"Failed to load bucket store")
-	}
-
-	s.ud, err = ud.NewOrLoadStore(s.kv)
-	if err != nil {
-		return nil, errors.WithMessage(err, "Failed to load ud store")
-	}
-
 	return s, nil
 }
 
@@ -296,48 +155,6 @@ func (s *Session) User() *user.User {
 	return s.user
 }
 
-func (s *Session) Cmix() *cmix.Store {
-	s.mux.RLock()
-	defer s.mux.RUnlock()
-	return s.cmix
-}
-
-func (s *Session) E2e() *e2e.Store {
-	s.mux.RLock()
-	defer s.mux.RUnlock()
-	return s.e2e
-}
-
-func (s *Session) Auth() *auth.Store {
-	s.mux.RLock()
-	defer s.mux.RUnlock()
-	return s.auth
-}
-
-func (s *Session) Reception() *reception.Store {
-	s.mux.RLock()
-	defer s.mux.RUnlock()
-	return s.reception
-}
-
-func (s *Session) GetCriticalMessages() *utility.E2eMessageBuffer {
-	s.mux.RLock()
-	defer s.mux.RUnlock()
-	return s.criticalMessages
-}
-
-func (s *Session) GetCriticalRawMessages() *utility.CmixMessageBuffer {
-	s.mux.RLock()
-	defer s.mux.RUnlock()
-	return s.criticalRawMessages
-}
-
-func (s *Session) GetGarbledMessages() *utility.MeteredCmixMessageBuffer {
-	s.mux.RLock()
-	defer s.mux.RUnlock()
-	return s.garbledMessages
-}
-
 // GetClientVersion returns the version of the client storage.
 func (s *Session) GetClientVersion() version.Version {
 	s.mux.RLock()
@@ -345,56 +162,6 @@ func (s *Session) GetClientVersion() version.Version {
 	return s.clientVersion.Get()
 }
 
-func (s *Session) Conversations() *conversation.Store {
-	s.mux.RLock()
-	defer s.mux.RUnlock()
-	return s.conversations
-}
-
-func (s *Session) Partition() *partition.Store {
-	s.mux.RLock()
-	defer s.mux.RUnlock()
-	return s.partition
-}
-
-func (s *Session) UncheckedRounds() *rounds.UncheckedRoundStore {
-	s.mux.RLock()
-	defer s.mux.RUnlock()
-	return s.uncheckedRounds
-}
-
-func (s *Session) HostList() *hostList.Store {
-	s.mux.RLock()
-	defer s.mux.RUnlock()
-	return s.hostList
-}
-
-// GetEdge returns the edge preimage store.
-func (s *Session) GetEdge() *edge.Store {
-	s.mux.RLock()
-	defer s.mux.RUnlock()
-	return s.edgeCheck
-}
-
-func (s *Session) GetUd() *ud.Store {
-	s.mux.RLock()
-	defer s.mux.RUnlock()
-	return s.ud
-}
-
-// GetBucketParams returns the bucket params store.
-func (s *Session) GetBucketParams() *utility.BucketParamStore {
-	s.mux.RLock()
-	defer s.mux.RUnlock()
-	return s.bucketParamStore
-}
-
-func (s *Session) GetBucket() *rateLimiting.Bucket {
-	s.mux.RLock()
-	defer s.mux.RUnlock()
-	return s.bucketStore
-}
-
 // Get an object from the session
 func (s *Session) Get(key string) (*versioned.Object, error) {
 	return s.kv.Get(key, currentSessionVersion)
@@ -417,6 +184,16 @@ func (s *Session) GetKV() *versioned.KV {
 	return s.kv
 }
 
+// GetCmixGrouo returns cMix Group
+func (s *Session) GetCmixGroup() *cyclic.Group {
+	return s.cmixGroup
+}
+
+// GetE2EGrouo returns cMix Group
+func (s *Session) GetE2EGroup() *cyclic.Group {
+	return s.e2eGroup
+}
+
 // Initializes a Session object wrapped around a MemStore object.
 // FOR TESTING ONLY
 func InitTestingSession(i interface{}) *Session {
@@ -446,91 +223,6 @@ func InitTestingSession(i interface{}) *Session {
 	u.SetRegistrationTimestamp(testTime.UnixNano())
 
 	s.user = u
-	cmixGrp := cyclic.NewGroup(
-		large.NewIntFromString("9DB6FB5951B66BB6FE1E140F1D2CE5502374161FD6538DF1648218642F0B5C48"+
-			"C8F7A41AADFA187324B87674FA1822B00F1ECF8136943D7C55757264E5A1A44F"+
-			"FE012E9936E00C1D3E9310B01C7D179805D3058B2A9F4BB6F9716BFE6117C6B5"+
-			"B3CC4D9BE341104AD4A80AD6C94E005F4B993E14F091EB51743BF33050C38DE2"+
-			"35567E1B34C3D6A5C0CEAA1A0F368213C3D19843D0B4B09DCB9FC72D39C8DE41"+
-			"F1BF14D4BB4563CA28371621CAD3324B6A2D392145BEBFAC748805236F5CA2FE"+
-			"92B871CD8F9C36D3292B5509CA8CAA77A2ADFC7BFD77DDA6F71125A7456FEA15"+
-			"3E433256A2261C6A06ED3693797E7995FAD5AABBCFBE3EDA2741E375404AE25B", 16),
-		large.NewIntFromString("5C7FF6B06F8F143FE8288433493E4769C4D988ACE5BE25A0E24809670716C613"+
-			"D7B0CEE6932F8FAA7C44D2CB24523DA53FBE4F6EC3595892D1AA58C4328A06C4"+
-			"6A15662E7EAA703A1DECF8BBB2D05DBE2EB956C142A338661D10461C0D135472"+
-			"085057F3494309FFA73C611F78B32ADBB5740C361C9F35BE90997DB2014E2EF5"+
-			"AA61782F52ABEB8BD6432C4DD097BC5423B285DAFB60DC364E8161F4A2A35ACA"+
-			"3A10B1C4D203CC76A470A33AFDCBDD92959859ABD8B56E1725252D78EAC66E71"+
-			"BA9AE3F1DD2487199874393CD4D832186800654760E1E34C09E4D155179F9EC0"+
-			"DC4473F996BDCE6EED1CABED8B6F116F7AD9CF505DF0F998E34AB27514B0FFE7", 16))
-	cmixStore, err := cmix.NewStore(cmixGrp, kv)
-	if err != nil {
-		jww.FATAL.Panicf("InitTestingSession failed to create dummy cmix session: %+v", err)
-	}
-	s.cmix = cmixStore
-
-	s.bucketParamStore, err = utility.NewBucketParamsStore(10, 11, 12, kv)
-	if err != nil {
-		jww.FATAL.Panicf("InitTestingSession failed to create NewBucketParamsStore session: %+v", err)
-	}
-	s.bucketStore = utility.NewStoredBucket(10, 11, 12, kv)
-
-	e2eStore, err := e2e.NewStore(cmixGrp, kv, cmixGrp.NewInt(2), uid,
-		fastRNG.NewStreamGenerator(7, 3, csprng.NewSystemRNG))
-	if err != nil {
-		jww.FATAL.Panicf("InitTestingSession failed to create dummy cmix session: %+v", err)
-	}
-	s.e2e = e2eStore
-
-	s.criticalMessages, err = utility.NewE2eMessageBuffer(s.kv, criticalMessagesKey)
-	if err != nil {
-		jww.FATAL.Panicf("InitTestingSession failed to create dummy critical messages: %+v", err)
-	}
-
-	s.garbledMessages, err = utility.NewMeteredCmixMessageBuffer(s.kv, garbledMessagesKey)
-	if err != nil {
-		jww.FATAL.Panicf("Failed to create garbledMessages buffer: %+v", err)
-	}
-
-	s.conversations = conversation.NewStore(s.kv)
-	s.partition = partition.New(s.kv)
-
-	s.reception = reception.NewStore(s.kv)
-
-	s.uncheckedRounds, err = rounds.NewUncheckedStore(s.kv)
-	if err != nil {
-		jww.FATAL.Panicf("Failed to create uncheckRound store: %v", err)
-	}
-
-	s.hostList = hostList.NewStore(s.kv)
-
-	privKeys := make([]*cyclic.Int, 10)
-	pubKeys := make([]*cyclic.Int, 10)
-	for i := range privKeys {
-		privKeys[i] = cmixGrp.NewInt(5)
-		pubKeys[i] = cmixGrp.ExpG(privKeys[i], cmixGrp.NewInt(1))
-	}
-
-	s.auth, err = auth.NewStore(s.kv, cmixGrp, privKeys)
-	if err != nil {
-		jww.FATAL.Panicf("Failed to create auth store: %v", err)
-	}
-
-	s.edgeCheck, err = edge.NewStore(s.kv, uid)
-	if err != nil {
-		jww.FATAL.Panicf("Failed to create new edge Store: %+v", err)
-	}
-
-	// todo: uncomment once NewBuff has been added properly
-	//s.ringBuff, err = conversation.NewBuff(s.kv, 100)
-	//if err != nil {
-	//	jww.FATAL.Panicf("Failed to create ring buffer store: %+v", err)
-	//}
-
-	s.ud, err = ud.NewStore(s.kv)
-	if err != nil {
-		jww.FATAL.Panicf("Failed to create ud store: %v", err)
-	}
 
 	return s
 }
diff --git a/storage/session_test.go b/storage/session_test.go
index 73fe66a252cabc444a9c6c325f9c582dff7d1705..27a09e603ab719071a8265e4ae96a03a92517c7a 100644
--- a/storage/session_test.go
+++ b/storage/session_test.go
@@ -33,7 +33,7 @@ func TestSession_Smoke(t *testing.T) {
 	if err != nil {
 		t.Errorf("Failed to set: %+v", err)
 	}
-	o, err := s.Get("testkey")
+	o, err := s.get("testkey")
 	if err != nil {
 		t.Errorf("Failed to get key")
 	}
diff --git a/storage/ud/store_test.go b/storage/ud/store_test.go
index 977aba8ef641029199bf186d4e9a1af2fc692131..ffe058f51c7b3cf41799c28207eda5253a0ab8ad 100644
--- a/storage/ud/store_test.go
+++ b/storage/ud/store_test.go
@@ -66,7 +66,7 @@ func TestStore_MarshalUnmarshal_ConfirmedFacts(t *testing.T) {
 
 	data, err := expectedStore.kv.Get(confirmedFactKey, version)
 	if err != nil {
-		t.Errorf("Get() error when getting Store from KV: %v", err)
+		t.Errorf("get() error when getting Store from KV: %v", err)
 	}
 
 	expectedData, err := expectedStore.marshalConfirmedFacts()
@@ -102,7 +102,7 @@ func TestStore_MarshalUnmarshal_UnconfirmedFacts(t *testing.T) {
 
 	data, err := expectedStore.kv.Get(unconfirmedFactKey, version)
 	if err != nil {
-		t.Errorf("Get() error when getting Store from KV: %v", err)
+		t.Errorf("get() error when getting Store from KV: %v", err)
 	}
 
 	expectedData, err := expectedStore.marshalUnconfirmedFacts()
diff --git a/storage/utility/blockStore.go b/storage/utility/blockStore.go
index b29dcd12d56037d6e7d0622b1fbc47f8faea62b9..053e015dd2171e41755afeb6c0e9674d4a2daf78 100644
--- a/storage/utility/blockStore.go
+++ b/storage/utility/blockStore.go
@@ -72,7 +72,7 @@ func NewBlockStore(numBlocks, blockSize int, kv *versioned.KV) (*BlockStore, err
 func LoadBlockStore(kv *versioned.KV) (*BlockStore, [][]byte, error) {
 	bs := &BlockStore{kv: kv}
 
-	// Get BlockStore parameters from storage
+	// get BlockStore parameters from storage
 	err := bs.load()
 	if err != nil {
 		return nil, nil, err
@@ -81,7 +81,7 @@ func LoadBlockStore(kv *versioned.KV) (*BlockStore, [][]byte, error) {
 	// LoadBlockStore each block from storage and join together into single slice
 	var data, block [][]byte
 	for i := bs.firstSaved; i <= bs.lastSaved; i++ {
-		// Get the block from storage
+		// get the block from storage
 		block, err = bs.loadBlock(i)
 		if err != nil {
 			return nil, nil, err
@@ -165,7 +165,7 @@ func (bs *BlockStore) saveBlock() error {
 
 // loadBlock loads the block with the index from storage.
 func (bs *BlockStore) loadBlock(i int) ([][]byte, error) {
-	// Get the data from the kv
+	// get the data from the kv
 	obj, err := bs.kv.Get(bs.getKey(i), blockVersion)
 	if err != nil {
 		return nil, errors.Errorf(bKvLoadErr, i, err)
@@ -230,7 +230,7 @@ func (bs *BlockStore) save() error {
 
 // load loads BlockStore parameters from storage.
 func (bs *BlockStore) load() error {
-	// Get the data from the kv
+	// get the data from the kv
 	obj, err := bs.kv.Get(blockStoreKey, blockStoreVersion)
 	if err != nil {
 		return errors.Errorf(bsKvLoadErr, err)
diff --git a/storage/utility/cmixMessageBuffer_test.go b/storage/utility/cmixMessageBuffer_test.go
index b015cb2c66f028be8472b3281603f0b9e026b335..237d734eb4b7cd2ee770da4172fc34f6f2c48ef8 100644
--- a/storage/utility/cmixMessageBuffer_test.go
+++ b/storage/utility/cmixMessageBuffer_test.go
@@ -43,7 +43,7 @@ func TestCmixMessageHandler_SaveMessage(t *testing.T) {
 		// Try to get message
 		obj, err := kv.Get(key, 0)
 		if err != nil {
-			t.Errorf("Get() returned an error: %v", err)
+			t.Errorf("get() returned an error: %v", err)
 		}
 
 		// Test if message retrieved matches expected
diff --git a/storage/utility/e2eMessageBuffer_test.go b/storage/utility/e2eMessageBuffer_test.go
index 6eda44ba0cdca36ed43e9332739b968e92ed6ea9..53bd84db46b50bfc9fe5daaf862f37b7c5f50d46 100644
--- a/storage/utility/e2eMessageBuffer_test.go
+++ b/storage/utility/e2eMessageBuffer_test.go
@@ -41,7 +41,7 @@ func TestE2EMessageHandler_SaveMessage(t *testing.T) {
 		// Try to get message
 		obj, err := kv.Get(key, 0)
 		if err != nil {
-			t.Errorf("Get() returned an error: %v", err)
+			t.Errorf("get() returned an error: %v", err)
 		}
 
 		// Test if message retrieved matches expected
diff --git a/storage/utility/knownRounds.go b/storage/utility/knownRounds.go
index 85203145b7fead0131b3c861539c2c89cabd475b..2788a5f556b54699e5595734db225255457ae53f 100644
--- a/storage/utility/knownRounds.go
+++ b/storage/utility/knownRounds.go
@@ -85,7 +85,7 @@ func (kr *KnownRounds) save() error {
 func (kr *KnownRounds) load() error {
 
 	// Load the versioned object
-	vo, err := kr.kv.Get(kr.key)
+	vo, err := kr.kv.get(kr.key)
 	if err != nil {
 		return err
 	}
diff --git a/storage/utility/knownRounds_test.go b/storage/utility/knownRounds_test.go
index 2f67d1d90a0272e47fc640d2e8f9781c43eac782..80f8b43582c44c156e6af64536b64f55714521aa 100644
--- a/storage/utility/knownRounds_test.go
+++ b/storage/utility/knownRounds_test.go
@@ -99,9 +99,9 @@ func TestKnownRounds_save(t *testing.T) {
 		t.Errorf("save() returned an error: %v", err)
 	}
 
-	obj, err := expectedKR.kv.Get(expectedKR.key)
+	obj, err := expectedKR.kv.get(expectedKR.key)
 	if err != nil {
-		t.Errorf("Get() returned an error: %v", err)
+		t.Errorf("get() returned an error: %v", err)
 	}
 
 	if !reflect.DeepEqual(expectedData, obj.Data) {
diff --git a/storage/utility/messageBuffer_test.go b/storage/utility/messageBuffer_test.go
index 6cb9f3660ba7c1f7433d9beb94edfd9a9515c674..f9afe57c1e9d5c98ca98c56d59bd6cdc7c805ceb 100644
--- a/storage/utility/messageBuffer_test.go
+++ b/storage/utility/messageBuffer_test.go
@@ -276,7 +276,7 @@ func TestMessageBuffer_Succeeded(t *testing.T) {
 		testMB.Add(m)
 	}
 
-	// Get message
+	// get message
 	m, _ := testMB.Next()
 
 	testMB.Succeeded(m)
@@ -302,7 +302,7 @@ func TestMessageBuffer_Failed(t *testing.T) {
 		testMB.Add(m)
 	}
 
-	// Get message
+	// get message
 	m, _ := testMB.Next()
 
 	testMB.Failed(m)
diff --git a/storage/utility/meteredCmixMessageBuffer_test.go b/storage/utility/meteredCmixMessageBuffer_test.go
index a8116a7235dd7f64c701d04d3e655bef2237bc5a..be5a937d376778a23f6b95f5811868346fdabbcf 100644
--- a/storage/utility/meteredCmixMessageBuffer_test.go
+++ b/storage/utility/meteredCmixMessageBuffer_test.go
@@ -39,7 +39,7 @@ func Test_meteredCmixMessageHandler_SaveMessage(t *testing.T) {
 		// Try to get message
 		obj, err := kv.Get(key, 0)
 		if err != nil {
-			t.Errorf("Get() returned an error: %v", err)
+			t.Errorf("get() returned an error: %v", err)
 		}
 
 		msgData, err := json.Marshal(&msg)
@@ -113,7 +113,7 @@ func Test_meteredCmixMessageHandler_DeleteMessage(t *testing.T) {
 		// Try to get message
 		_, err = kv.Get(key, 0)
 		if err == nil {
-			t.Error("Get() did not return an error.")
+			t.Error("get() did not return an error.")
 		}
 	}
 }
diff --git a/storage/utility/multiStateVector.go b/storage/utility/multiStateVector.go
index 77cf24ad1435c6c83ce431a13080a4d9d27cae68..caeeb347f0593852be4ea3bcbdc4c0c2fb558ced 100644
--- a/storage/utility/multiStateVector.go
+++ b/storage/utility/multiStateVector.go
@@ -225,7 +225,7 @@ func (msv *MultiStateVector) set(keyNum uint16, state uint8) error {
 		return errors.Errorf(stateMaxErr, state, msv.numStates-1)
 	}
 
-	// Get the current state
+	// get the current state
 	oldState, err := msv.get(keyNum)
 	if err != nil {
 		return errors.Errorf(setGetStateErr, keyNum, err)
@@ -385,7 +385,7 @@ func checkStateMap(numStates uint8, stateMap [][]bool) error {
 // state bit size. The masks for each state is found by right shifting
 // bitSize * keyNum.
 func getSelectionMask(keyNum uint16, bitSize uint8) uint64 {
-	// Get the mask at the zeroth position at the bit size; these masks look
+	// get the mask at the zeroth position at the bit size; these masks look
 	// like the following for bit sizes 1 through 4
 	//	0b1000000000000000000000000000000000000000000000000000000000000000
 	//	0b1100000000000000000000000000000000000000000000000000000000000000
diff --git a/storage/utility/multiStateVector_test.go b/storage/utility/multiStateVector_test.go
index 080e6e3b594cd34b0418e1065cf2db4e0cf14f89..3e25cdac8855205c9ef554e4cdb450598d2ea24f 100644
--- a/storage/utility/multiStateVector_test.go
+++ b/storage/utility/multiStateVector_test.go
@@ -108,7 +108,7 @@ func TestMultiStateVector_Get(t *testing.T) {
 	for keyNum := uint16(0); keyNum < msv.numKeys; keyNum++ {
 		state, err := msv.Get(keyNum)
 		if err != nil {
-			t.Errorf("Get returned an error for key %d: %+v", keyNum, err)
+			t.Errorf("get returned an error for key %d: %+v", keyNum, err)
 		}
 		if state != 0 {
 			t.Errorf("Key %d has unexpected state.\nexpected: %d\nreceived: %d",
@@ -151,7 +151,7 @@ func TestMultiStateVector_Get(t *testing.T) {
 	for keyNum, expectedState := range expectedStates {
 		state, err := msv.Get(uint16(keyNum))
 		if err != nil {
-			t.Errorf("Get returned an error for key %d: %+v", keyNum, err)
+			t.Errorf("get returned an error for key %d: %+v", keyNum, err)
 		}
 
 		if expectedState != state {
diff --git a/storage/versioned/kv.go b/storage/versioned/kv.go
index 1e4267c5f330b6a3815b1c5ed0abafc810eda409..3e05b1b052d8a2713b9c9227e209f990c9c3f41d 100644
--- a/storage/versioned/kv.go
+++ b/storage/versioned/kv.go
@@ -53,8 +53,8 @@ func NewKV(data ekv.KeyValue) *KV {
 // Make sure to inspect the version returned in the versioned object
 func (v *KV) Get(key string, version uint64) (*Object, error) {
 	key = v.makeKey(key, version)
-	jww.TRACE.Printf("Get %p with key %v", v.r.data, key)
-	// Get raw data
+	jww.TRACE.Printf("get %p with key %v", v.r.data, key)
+	// get raw data
 	result := Object{}
 	err := v.r.data.Get(key, &result)
 	if err != nil {
@@ -88,9 +88,9 @@ func (v *KV) GetAndUpgrade(key string, ut UpgradeTable) (*Object, error) {
 	for version != 0 {
 		version--
 		key = v.makeKey(baseKey, version)
-		jww.TRACE.Printf("Get %p with key %v", v.r.data, key)
+		jww.TRACE.Printf("get %p with key %v", v.r.data, key)
 
-		// Get raw data
+		// get raw data
 		result = &Object{}
 		err := v.r.data.Get(key, result)
 		// Break when we find the *newest* version of the object
diff --git a/storage/versioned/kv_test.go b/storage/versioned/kv_test.go
index 393078152ab91f82045108c0eee3fa5f4706ed66..88cc0fcb8faaffca1886d8dc2b95e6c62c540c58 100644
--- a/storage/versioned/kv_test.go
+++ b/storage/versioned/kv_test.go
@@ -15,7 +15,7 @@ import (
 	"testing"
 )
 
-// KV Get should call the Upgrade function when it's available
+// KV get should call the Upgrade function when it's available
 func TestVersionedKV_Get_Err(t *testing.T) {
 	kv := make(ekv.Memstore)
 	vkv := NewKV(kv)
@@ -141,7 +141,7 @@ func TestVersionedKV_Delete(t *testing.T) {
 	}
 }
 
-// Test Get without Upgrade path
+// Test get without Upgrade path
 func TestVersionedKV_Get(t *testing.T) {
 	// Set up a dummy KV with the required data
 	kv := make(ekv.Memstore)
diff --git a/ud/addFact.go b/ud/addFact.go
index 81734a2bdca3e1e0f73c3943b6330fede685228b..1985970ff976eeb25d9c437a187287cf61fe7c8a 100644
--- a/ud/addFact.go
+++ b/ud/addFact.go
@@ -61,7 +61,7 @@ func (m *Manager) addFact(inFact fact.Fact, uid *id.ID, aFC addFactComms) (strin
 		FactSig: fSig,
 	}
 
-	// Get UD host
+	// get UD host
 	host, err := m.getHost()
 	if err != nil {
 		return "", err
diff --git a/ud/confirmFact.go b/ud/confirmFact.go
index af71eb7a43cc811839e360420dbdca96c7a5e812..7432911b2458e5744afacc77640b78eb2637153d 100644
--- a/ud/confirmFact.go
+++ b/ud/confirmFact.go
@@ -29,7 +29,7 @@ func (m *Manager) confirmFact(confirmationID, code string, comm confirmFactComm)
 			"client is not registered")
 	}
 
-	// Get UD host
+	// get UD host
 	host, err := m.getHost()
 	if err != nil {
 		return err
diff --git a/ud/lookup.go b/ud/lookup.go
index 1769b5f34d5cca735eb96097f34e8a3f2ed70e42..2ba65223404fc234380a31b60774d5ce2cdbcd0c 100644
--- a/ud/lookup.go
+++ b/ud/lookup.go
@@ -59,7 +59,7 @@ func (m *Manager) lookup(uid *id.ID, callback lookupCallback, timeout time.Durat
 		m.lookupResponseProcess(uid, callback, payload, err)
 	}
 
-	// Get UD contact
+	// get UD contact
 	c, err := m.getContact()
 	if err != nil {
 		return err
diff --git a/ud/manager.go b/ud/manager.go
index 4306743ff91bdf0dd6b2d36ab4e8064735cd75ee..e0c0d8ea3dd6349e7e7b961a694d5bd5d592fdd4 100644
--- a/ud/manager.go
+++ b/ud/manager.go
@@ -94,7 +94,7 @@ func NewManager(client *api.Client, single *single.Manager) (*Manager, error) {
 
 	m.myID = m.storage.User().GetCryptographicIdentity().GetReceptionID()
 
-	// Get the commonly used data from storage
+	// get the commonly used data from storage
 	m.privKey = m.storage.GetUser().ReceptionRSA
 
 	// Load if the client is registered
diff --git a/ud/register.go b/ud/register.go
index f6b205a069fa054708f75c591c147a7660f8cfb3..55e62c1f804dd7f18de75b0135f8b789f9992a53 100644
--- a/ud/register.go
+++ b/ud/register.go
@@ -81,7 +81,7 @@ func (m *Manager) register(username string, comm registerUserComms) error {
 		FactSig: signedFact,
 	}
 
-	// Get UD host
+	// get UD host
 	host, err := m.getHost()
 	if err != nil {
 		return err
diff --git a/ud/remove.go b/ud/remove.go
index 85547373fc064da7e424640683af4cc74663ae76..07670d7386cefbe089fd47e58fc671df212a303d 100644
--- a/ud/remove.go
+++ b/ud/remove.go
@@ -53,7 +53,7 @@ func (m *Manager) removeFact(fact fact.Fact, rFC removeFactComms) error {
 		FactSig:     fSig,
 	}
 
-	// Get UD host
+	// get UD host
 	host, err := m.getHost()
 	if err != nil {
 		return err
@@ -109,7 +109,7 @@ func (m *Manager) removeUser(fact fact.Fact, rFC removeUserComms) error {
 		FactSig:     fsig,
 	}
 
-	// Get UD host
+	// get UD host
 	host, err := m.getHost()
 	if err != nil {
 		return err
diff --git a/ud/search.go b/ud/search.go
index e8db5749ace91b445f56b7f71ace9c8b5165b886..ac978a438383c381973c4b4e57e174649a24d7ed 100644
--- a/ud/search.go
+++ b/ud/search.go
@@ -42,7 +42,7 @@ func (m *Manager) Search(list fact.FactList, callback searchCallback, timeout ti
 		m.searchResponseHandler(factMap, callback, payload, err)
 	}
 
-	// Get UD contact
+	// get UD contact
 	c, err := m.getContact()
 	if err != nil {
 		return err