From 2a955a9f52df4b0da3e7cfcb346cd67a7b4fdd4c Mon Sep 17 00:00:00 2001
From: Benjamin Wenger <ben@elixxir.ioo>
Date: Tue, 8 Sep 2020 10:05:30 -0700
Subject: [PATCH] io->network

---
 api/client.go                             | 18 +++++++++---------
 api/client_test.go                        | 12 ++++++------
 api/connect.go                            | 12 ++++++------
 api/mockserver.go                         |  2 +-
 api/mockserver_test.go                    |  8 ++++----
 api/private.go                            |  4 ++--
 api/register_test.go                      |  6 +++---
 bindings/client_test.go                   | 22 +++++++++++-----------
 bots/bots.go                              |  8 ++++----
 bots/userDiscovery.go                     |  2 +-
 cmd/root.go                               |  6 +++---
 {io => network}/collate.go                |  2 +-
 {io => network}/collate_test.go           |  2 +-
 {io => network}/interface.go              |  2 +-
 {io => network}/keyExchange/generate.sh   |  0
 {io => network}/keyExchange/init.go       |  0
 {io => network}/keyExchange/rekey.go      |  0
 {io => network}/keyExchange/trigger.go    |  0
 {io => network}/keyExchange/xchange.pb.go |  0
 {io => network}/keyExchange/xchange.proto |  0
 network/manager.go                        |  1 +
 {io => network}/parse/firstMessagePart.go |  0
 {io => network}/parse/messagePart.go      |  0
 {io => network}/parse/partition.go        |  0
 {io => network}/processingrounds.go       |  2 +-
 {io => network}/processingrounds_test.go  |  2 +-
 {io => network}/receive.go                |  4 ++--
 {io => network}/receptionManager.go       |  2 +-
 {io => network}/receptionManager_test.go  |  2 +-
 {io => network}/send.go                   |  4 ++--
 network/sendCmix.go                       |  1 +
 {io => network}/threads.go                |  2 +-
 rekey/rekey.go                            |  8 ++++----
 rekey/rekey_test.go                       |  2 +-
 34 files changed, 69 insertions(+), 67 deletions(-)
 rename {io => network}/collate.go (99%)
 rename {io => network}/collate_test.go (99%)
 rename {io => network}/interface.go (98%)
 rename {io => network}/keyExchange/generate.sh (100%)
 rename {io => network}/keyExchange/init.go (100%)
 rename {io => network}/keyExchange/rekey.go (100%)
 rename {io => network}/keyExchange/trigger.go (100%)
 rename {io => network}/keyExchange/xchange.pb.go (100%)
 rename {io => network}/keyExchange/xchange.proto (100%)
 create mode 100644 network/manager.go
 rename {io => network}/parse/firstMessagePart.go (100%)
 rename {io => network}/parse/messagePart.go (100%)
 rename {io => network}/parse/partition.go (100%)
 rename {io => network}/processingrounds.go (97%)
 rename {io => network}/processingrounds_test.go (98%)
 rename {io => network}/receive.go (99%)
 rename {io => network}/receptionManager.go (99%)
 rename {io => network}/receptionManager_test.go (99%)
 rename {io => network}/send.go (99%)
 create mode 100644 network/sendCmix.go
 rename {io => network}/threads.go (99%)

diff --git a/api/client.go b/api/client.go
index 9344478f8..623bb204f 100644
--- a/api/client.go
+++ b/api/client.go
@@ -19,7 +19,7 @@ import (
 	"gitlab.com/elixxir/client/cmixproto"
 	clientcrypto "gitlab.com/elixxir/client/crypto"
 	"gitlab.com/elixxir/client/globals"
-	"gitlab.com/elixxir/client/io"
+	"gitlab.com/elixxir/client/network"
 	"gitlab.com/elixxir/client/keyStore"
 	"gitlab.com/elixxir/client/parse"
 	"gitlab.com/elixxir/client/rekey"
@@ -46,7 +46,7 @@ type Client struct {
 	storage             globals.Storage
 	session             user.Session
 	sessionV2           *storage.Session
-	receptionManager    *io.ReceptionManager
+	receptionManager    *network.ReceptionManager
 	switchboard         *switchboard.Switchboard
 	ndf                 *ndf.NetworkDefinition
 	topology            *connect.Circuit
@@ -61,7 +61,7 @@ type Client struct {
 }
 
 // Type that defines what the default and any testing send functions should look like
-type sender func(message parse.MessageInterface, rm *io.ReceptionManager, session user.Session, topology *connect.Circuit, host *connect.Host) error
+type sender func(message parse.MessageInterface, rm *network.ReceptionManager, session user.Session, topology *connect.Circuit, host *connect.Host) error
 
 //used to report the state of registration
 type OperationProgressCallback func(int)
@@ -93,13 +93,13 @@ func (cl *Client) setStorage(locA, password string) error {
 	dirname := filepath.Dir(locA)
 	//FIXME: We need to accept the user's password here!
 	var err error
-	io.SessionV2, err = storage.Init(dirname, password)
+	network.SessionV2, err = storage.Init(dirname, password)
 	if err != nil {
 		return errors.Wrapf(err, "could not initialize v2 "+
 			"storage at %s", locA)
 	}
-	clientcrypto.SessionV2 = io.SessionV2
-	cl.sessionV2 = io.SessionV2
+	clientcrypto.SessionV2 = network.SessionV2
+	cl.sessionV2 = network.SessionV2
 
 	// FIXME: Client storage must have regstate set
 	_, err = cl.sessionV2.GetRegState()
@@ -211,7 +211,7 @@ func (cl *Client) Login(password string) (*id.ID, error) {
 			"completed registration ")
 	}
 
-	newRm, err := io.NewReceptionManager(cl.rekeyChan, cl.quitChan,
+	newRm, err := network.NewReceptionManager(cl.rekeyChan, cl.quitChan,
 		userData.ThisUser.User,
 		rsa.CreatePrivateKeyPem(userData.RSAPrivateKey),
 		rsa.CreatePublicKeyPem(userData.RSAPublicKey),
@@ -431,7 +431,7 @@ func (cl *Client) Send(message parse.MessageInterface) error {
 }
 
 // Send prepares and sends a message to the cMix network
-func send(message parse.MessageInterface, rm *io.ReceptionManager, session user.Session, topology *connect.Circuit, host *connect.Host) error {
+func send(message parse.MessageInterface, rm *network.ReceptionManager, session user.Session, topology *connect.Circuit, host *connect.Host) error {
 	recipientID := message.GetRecipient()
 	cryptoType := message.GetCryptoType()
 	return rm.SendMessage(session, topology, recipientID, cryptoType, message.Pack(), host)
@@ -687,7 +687,7 @@ func (cl *Client) GetSessionV2() *storage.Session {
 
 // ReceptionManager returns the comm manager object for external access.  Access
 // at your own risk
-func (cl *Client) GetCommManager() *io.ReceptionManager {
+func (cl *Client) GetCommManager() *network.ReceptionManager {
 	return cl.receptionManager
 }
 
diff --git a/api/client_test.go b/api/client_test.go
index 56179e68a..d70f90f23 100644
--- a/api/client_test.go
+++ b/api/client_test.go
@@ -10,8 +10,8 @@ import (
 	"github.com/golang/protobuf/proto"
 	"gitlab.com/elixxir/client/cmixproto"
 	"gitlab.com/elixxir/client/globals"
-	"gitlab.com/elixxir/client/io"
-	"gitlab.com/elixxir/client/io/keyExchange"
+	"gitlab.com/elixxir/client/network"
+	"gitlab.com/elixxir/client/network/keyExchange"
 	"gitlab.com/elixxir/client/keyStore"
 	"gitlab.com/elixxir/client/parse"
 	"gitlab.com/elixxir/client/storage"
@@ -603,7 +603,7 @@ func TestClient_GetCommManager(t *testing.T) {
 	//Start client
 	testClient, _ := NewClient(&globals.RamStorage{}, ".ekv-getcommmanager/a", "", def)
 
-	testClient.receptionManager = &io.ReceptionManager{}
+	testClient.receptionManager = &network.ReceptionManager{}
 
 	if !reflect.DeepEqual(testClient.GetCommManager(), testClient.receptionManager) {
 		t.Error("Received session not the same as the real session")
@@ -617,7 +617,7 @@ func TestClient_LogoutHappyPath(t *testing.T) {
 	tc, _ := NewClient(&d, ".ekv-logouthappypath/a", "", def)
 
 	uid := id.NewIdFromString("kk", id.User, t)
-	tc.receptionManager, _ = io.NewReceptionManager(tc.rekeyChan,
+	tc.receptionManager, _ = network.NewReceptionManager(tc.rekeyChan,
 		tc.quitChan,
 		uid, nil, nil, nil, tc.switchboard)
 
@@ -695,7 +695,7 @@ func TestClient_LogoutTimeout(t *testing.T) {
 	tc, _ := NewClient(&d, ".ekv-logouttimeout/a", "", def)
 
 	uid := id.NewIdFromString("kk", id.User, t)
-	tc.receptionManager, _ = io.NewReceptionManager(tc.rekeyChan,
+	tc.receptionManager, _ = network.NewReceptionManager(tc.rekeyChan,
 		tc.quitChan, uid, nil, nil, nil, tc.switchboard)
 
 	err := tc.InitNetwork()
@@ -763,7 +763,7 @@ func TestClient_LogoutAndLoginAgain(t *testing.T) {
 	}
 
 	uid := id.NewIdFromString("kk", id.User, t)
-	tc.receptionManager, _ = io.NewReceptionManager(tc.rekeyChan,
+	tc.receptionManager, _ = network.NewReceptionManager(tc.rekeyChan,
 		tc.quitChan, uid, nil, nil, nil, tc.switchboard)
 
 	err = tc.InitNetwork()
diff --git a/api/connect.go b/api/connect.go
index 992bba989..68f398c00 100644
--- a/api/connect.go
+++ b/api/connect.go
@@ -10,7 +10,7 @@ import (
 	"fmt"
 	"github.com/pkg/errors"
 	"gitlab.com/elixxir/client/globals"
-	"gitlab.com/elixxir/client/io"
+	"gitlab.com/elixxir/client/network"
 	"gitlab.com/elixxir/primitives/version"
 	"gitlab.com/xx_network/comms/connect"
 	"gitlab.com/xx_network/primitives/id"
@@ -27,7 +27,7 @@ func (cl *Client) InitNetwork() error {
 	if cl.receptionManager == nil {
 		// Start reception manager with a dummy user,
 		// so we can connect to things
-		cl.receptionManager, err = io.NewReceptionManager(cl.rekeyChan,
+		cl.receptionManager, err = network.NewReceptionManager(cl.rekeyChan,
 			cl.quitChan, &id.DummyUser, nil, nil, nil,
 			cl.switchboard)
 		if err != nil {
@@ -72,7 +72,7 @@ func (cl *Client) InitNetwork() error {
 }
 
 // AddNotificationBotHost adds notification bot as a host within the reception manager
-func addNotificationBotHost(rm *io.ReceptionManager, definition *ndf.NetworkDefinition) error {
+func addNotificationBotHost(rm *network.ReceptionManager, definition *ndf.NetworkDefinition) error {
 
 	err := addHost(rm, &id.NotificationBot, definition.Notification.Address,
 		definition.Notification.TlsCertificate, false, true)
@@ -161,7 +161,7 @@ func (cl *Client) setupPermissioning() error {
 
 // Connects to gateways using tls filepaths to create credential information
 // for connection establishment
-func addGatewayHosts(rm *io.ReceptionManager, definition *ndf.NetworkDefinition) error {
+func addGatewayHosts(rm *network.ReceptionManager, definition *ndf.NetworkDefinition) error {
 	if len(definition.Gateways) < 1 {
 		return errors.New("could not connect due to invalid number of nodes")
 	}
@@ -194,7 +194,7 @@ func addGatewayHosts(rm *io.ReceptionManager, definition *ndf.NetworkDefinition)
 	return errs
 }
 
-func addHost(rm *io.ReceptionManager, id *id.ID, address, cert string, disableTimeout, enableAuth bool) error {
+func addHost(rm *network.ReceptionManager, id *id.ID, address, cert string, disableTimeout, enableAuth bool) error {
 	var creds []byte
 	if cert != "" && rm.Tls {
 		creds = []byte(cert)
@@ -209,7 +209,7 @@ func addHost(rm *io.ReceptionManager, id *id.ID, address, cert string, disableTi
 // There's currently no need to keep connected to permissioning constantly,
 // so we have functions to connect to and disconnect from it when a connection
 // to permissioning is needed
-func addPermissioningHost(rm *io.ReceptionManager, definition *ndf.NetworkDefinition) error {
+func addPermissioningHost(rm *network.ReceptionManager, definition *ndf.NetworkDefinition) error {
 	if definition.Registration.Address != "" {
 		err := addHost(rm, &id.Permissioning, definition.Registration.Address,
 			definition.Registration.TlsCertificate, false, false)
diff --git a/api/mockserver.go b/api/mockserver.go
index 9d0de5000..b03fbb2ad 100644
--- a/api/mockserver.go
+++ b/api/mockserver.go
@@ -12,7 +12,7 @@ import (
 	"fmt"
 	"github.com/pkg/errors"
 	"gitlab.com/elixxir/client/globals"
-	"gitlab.com/elixxir/client/io/keyExchange"
+	"gitlab.com/elixxir/client/network/keyExchange"
 	"gitlab.com/elixxir/client/parse"
 	pb "gitlab.com/elixxir/comms/mixmessages"
 	"gitlab.com/elixxir/crypto/cyclic"
diff --git a/api/mockserver_test.go b/api/mockserver_test.go
index 89cad54ae..b35ad3efc 100644
--- a/api/mockserver_test.go
+++ b/api/mockserver_test.go
@@ -10,7 +10,7 @@ package api
 import (
 	"fmt"
 	jww "github.com/spf13/jwalterweatherman"
-	"gitlab.com/elixxir/client/io"
+	"gitlab.com/elixxir/client/network"
 	"gitlab.com/elixxir/client/storage"
 	user2 "gitlab.com/elixxir/client/storage/user"
 	"gitlab.com/elixxir/client/user"
@@ -161,7 +161,7 @@ func TestRegister_ValidPrecannedRegCodeReturnsZeroID(t *testing.T) {
 	if err != nil {
 		t.Errorf("Could not generate Keys: %+v", err)
 	}
-	io.SessionV2.SetRegState(user.KeyGenComplete)
+	network.SessionV2.SetRegState(user.KeyGenComplete)
 	// Register precanned user with all gateways
 	regRes, err := client.RegisterWithPermissioning(true, ValidRegCode)
 
@@ -311,7 +311,7 @@ func TestSend(t *testing.T) {
 	}
 
 	err = client.GenerateKeys(nil, "password")
-	io.SessionV2.SetRegState(user.KeyGenComplete)
+	network.SessionV2.SetRegState(user.KeyGenComplete)
 	// Register with a valid registration code
 	userID, err := client.RegisterWithPermissioning(true, ValidRegCode)
 
@@ -412,7 +412,7 @@ func TestLogout(t *testing.T) {
 		t.Errorf("Could not generate Keys: %+v", err)
 	}
 
-	io.SessionV2.SetRegState(user.KeyGenComplete)
+	network.SessionV2.SetRegState(user.KeyGenComplete)
 
 	// Register with a valid registration code
 	_, err = client.RegisterWithPermissioning(true, ValidRegCode)
diff --git a/api/private.go b/api/private.go
index 78903ceff..0a592507e 100644
--- a/api/private.go
+++ b/api/private.go
@@ -11,7 +11,7 @@ import (
 	"fmt"
 	"github.com/pkg/errors"
 	"gitlab.com/elixxir/client/globals"
-	"gitlab.com/elixxir/client/io"
+	"gitlab.com/elixxir/client/network"
 	"gitlab.com/elixxir/client/keyStore"
 	"gitlab.com/elixxir/client/storage"
 	user2 "gitlab.com/elixxir/client/storage/user"
@@ -340,7 +340,7 @@ func (cl *Client) GenerateKeys(rsaPrivKey *rsa.PrivateKey,
 		return err
 	}
 
-	newRm, err := io.NewReceptionManager(cl.rekeyChan, cl.quitChan,
+	newRm, err := network.NewReceptionManager(cl.rekeyChan, cl.quitChan,
 		usr.User,
 		rsa.CreatePrivateKeyPem(privKey),
 		rsa.CreatePublicKeyPem(pubKey),
diff --git a/api/register_test.go b/api/register_test.go
index 6fa3bddf0..3f7718340 100644
--- a/api/register_test.go
+++ b/api/register_test.go
@@ -6,7 +6,7 @@
 package api
 
 import (
-	"gitlab.com/elixxir/client/io"
+	"gitlab.com/elixxir/client/network"
 	user2 "gitlab.com/elixxir/client/storage/user"
 	"gitlab.com/elixxir/client/user"
 	"gitlab.com/xx_network/primitives/id"
@@ -31,7 +31,7 @@ func TestRegistrationGob(t *testing.T) {
 		t.Errorf("Could not generate Keys: %+v", err)
 	}
 
-	io.SessionV2.SetRegState(user.KeyGenComplete)
+	network.SessionV2.SetRegState(user.KeyGenComplete)
 
 	// populate a gob in the store
 	_, err = testClient.RegisterWithPermissioning(true, "WTROXJ33")
@@ -118,7 +118,7 @@ func TestRegister_ValidRegParams___(t *testing.T) {
 		t.Errorf("%+v", err)
 	}
 
-	io.SessionV2.SetRegState(user.KeyGenComplete)
+	network.SessionV2.SetRegState(user.KeyGenComplete)
 	// Register precanned user with all gateways
 	regRes, err := client.RegisterWithPermissioning(false, ValidRegCode)
 	if err != nil {
diff --git a/bindings/client_test.go b/bindings/client_test.go
index 71975246a..2bc5073ac 100644
--- a/bindings/client_test.go
+++ b/bindings/client_test.go
@@ -14,8 +14,8 @@ import (
 	"encoding/json"
 	"fmt"
 	"gitlab.com/elixxir/client/globals"
-	"gitlab.com/elixxir/client/io"
-	"gitlab.com/elixxir/client/io/keyExchange"
+	"gitlab.com/elixxir/client/network"
+	"gitlab.com/elixxir/client/network/keyExchange"
 	"gitlab.com/elixxir/client/parse"
 	"gitlab.com/elixxir/client/storage"
 	"gitlab.com/elixxir/client/user"
@@ -83,7 +83,7 @@ func (i *MockRegistration) CheckRegistration(msg *pb.RegisteredNodeCheck) (*pb.R
 
 // Setups general testing params and calls test wrapper
 func TestMain(m *testing.M) {
-	io.SessionV2, _ = storage.Init(".ekvbindings/a", "test")
+	network.SessionV2, _ = storage.Init(".ekvbindings/a", "test")
 	os.Exit(testMainWrapper(m))
 }
 
@@ -141,7 +141,7 @@ func TestRegister(t *testing.T) {
 		t.Errorf("Could not generate Keys: %+v", err)
 	}
 
-	io.SessionV2.SetRegState(user.KeyGenComplete)
+	network.SessionV2.SetRegState(user.KeyGenComplete)
 
 	regRes, err := client.RegisterWithPermissioning(true, ValidRegCode)
 	if err != nil {
@@ -308,7 +308,7 @@ func TestClient_GetRegState(t *testing.T) {
 	if err != nil {
 		t.Errorf("Could not generate Keys: %+v", err)
 	}
-	io.SessionV2.SetRegState(user.KeyGenComplete)
+	network.SessionV2.SetRegState(user.KeyGenComplete)
 
 	// Register with a valid registration code
 	_, err = testClient.RegisterWithPermissioning(true, ValidRegCode)
@@ -317,13 +317,13 @@ func TestClient_GetRegState(t *testing.T) {
 		t.Errorf("Register with permissioning failed: %s", err.Error())
 	}
 
-	regState, _ := io.SessionV2.GetRegState()
+	regState, _ := network.SessionV2.GetRegState()
 	if regState != int64(user.PermissioningComplete) {
 		t.Errorf("Unexpected reg state: Expected PermissioningComplete (%d), recieved: %d",
 			user.PermissioningComplete, testClient.GetRegState())
 	}
 
-	io.SessionV2.SetRegValidationSig([]byte("test"))
+	network.SessionV2.SetRegValidationSig([]byte("test"))
 
 	err = testClient.RegisterWithNodes()
 	if err != nil {
@@ -352,7 +352,7 @@ func TestClient_Send(t *testing.T) {
 		t.Errorf("Could not generate Keys: %+v", err)
 	}
 
-	io.SessionV2.SetRegState(user.KeyGenComplete)
+	network.SessionV2.SetRegState(user.KeyGenComplete)
 
 	// Register with a valid registration code
 	userID, err := testClient.RegisterWithPermissioning(true, ValidRegCode)
@@ -435,7 +435,7 @@ func TestLoginLogout(t *testing.T) {
 		t.Errorf("Could not generate Keys: %+v", err)
 	}
 
-	io.SessionV2.SetRegState(user.KeyGenComplete)
+	network.SessionV2.SetRegState(user.KeyGenComplete)
 	regRes, err := client.RegisterWithPermissioning(true, ValidRegCode)
 	loginRes, err2 := client.Login(regRes, "password")
 	if err2 != nil {
@@ -484,7 +484,7 @@ func TestListen(t *testing.T) {
 		t.Errorf("Could not generate Keys: %+v", err)
 	}
 
-	io.SessionV2.SetRegState(user.KeyGenComplete)
+	network.SessionV2.SetRegState(user.KeyGenComplete)
 	regRes, _ := client.RegisterWithPermissioning(true, ValidRegCode)
 	_, err = client.Login(regRes, "password")
 
@@ -532,7 +532,7 @@ func TestStopListening(t *testing.T) {
 		t.Errorf("Could not generate Keys: %+v", err)
 	}
 
-	io.SessionV2.SetRegState(user.KeyGenComplete)
+	network.SessionV2.SetRegState(user.KeyGenComplete)
 	regRes, _ := client.RegisterWithPermissioning(true, ValidRegCode)
 
 	_, err = client.Login(regRes, "password")
diff --git a/bots/bots.go b/bots/bots.go
index 2af12fcee..089e1e93d 100644
--- a/bots/bots.go
+++ b/bots/bots.go
@@ -3,8 +3,8 @@ package bots
 import (
 	"gitlab.com/elixxir/client/cmixproto"
 	"gitlab.com/elixxir/client/globals"
-	"gitlab.com/elixxir/client/io"
-	"gitlab.com/elixxir/client/io/keyExchange"
+	"gitlab.com/elixxir/client/network"
+	"gitlab.com/elixxir/client/network/keyExchange"
 	"gitlab.com/elixxir/client/parse"
 	"gitlab.com/elixxir/client/storage"
 	"gitlab.com/elixxir/client/user"
@@ -16,7 +16,7 @@ import (
 var session user.Session
 var sessionV2 storage.Session
 var topology *connect.Circuit
-var comms io.Communications
+var comms network.Communications
 var transmissionHost *connect.Host
 
 type channelResponseListener chan string
@@ -52,7 +52,7 @@ func (l *nickReqListener) Hear(msg switchboard.Item, isHeardElsewhere bool, i ..
 var nicknameRequestListener nickReqListener
 
 // InitBots is called internally by the Login API
-func InitBots(s user.Session, s2 storage.Session, m io.Communications,
+func InitBots(s user.Session, s2 storage.Session, m network.Communications,
 	top *connect.Circuit, host *connect.Host) {
 
 	userData, err := s2.GetUserData()
diff --git a/bots/userDiscovery.go b/bots/userDiscovery.go
index bc474d92b..8803f9ab5 100644
--- a/bots/userDiscovery.go
+++ b/bots/userDiscovery.go
@@ -14,7 +14,7 @@ import (
 	"fmt"
 	"github.com/pkg/errors"
 	"gitlab.com/elixxir/client/globals"
-	"gitlab.com/elixxir/client/io/keyExchange"
+	"gitlab.com/elixxir/client/network/keyExchange"
 	"gitlab.com/elixxir/client/parse"
 	"gitlab.com/elixxir/client/storage"
 	"gitlab.com/elixxir/crypto/hash"
diff --git a/cmd/root.go b/cmd/root.go
index 928473fbe..f4de36d5f 100644
--- a/cmd/root.go
+++ b/cmd/root.go
@@ -18,8 +18,8 @@ import (
 	"gitlab.com/elixxir/client/api"
 	"gitlab.com/elixxir/client/cmixproto"
 	"gitlab.com/elixxir/client/globals"
-	"gitlab.com/elixxir/client/io"
-	"gitlab.com/elixxir/client/io/keyExchange"
+	"gitlab.com/elixxir/client/network"
+	"gitlab.com/elixxir/client/network/keyExchange"
 	"gitlab.com/elixxir/client/parse"
 	"gitlab.com/elixxir/client/user"
 	"gitlab.com/elixxir/client/userRegistry"
@@ -444,7 +444,7 @@ var rootCmd = &cobra.Command{
 
 		// todo: since this is in the root cmd, would checking the regstate directly really be bad?
 		//  It's correct that it should be an error state for RegisterWithUDB, however for this, it's start up code
-		regState, err := io.SessionV2.GetRegState()
+		regState, err := network.SessionV2.GetRegState()
 		if err != nil {
 			globals.Log.FATAL.Panicf("Could not retrieve registration state: %v", err)
 		}
diff --git a/io/collate.go b/network/collate.go
similarity index 99%
rename from io/collate.go
rename to network/collate.go
index ae8edda7b..e628eb440 100644
--- a/io/collate.go
+++ b/network/collate.go
@@ -4,7 +4,7 @@
 // All rights reserved.                                                        /
 ////////////////////////////////////////////////////////////////////////////////
 
-package io
+package network
 
 import (
 	"crypto/sha256"
diff --git a/io/collate_test.go b/network/collate_test.go
similarity index 99%
rename from io/collate_test.go
rename to network/collate_test.go
index 31d78c3f1..b4c7714e1 100644
--- a/io/collate_test.go
+++ b/network/collate_test.go
@@ -4,7 +4,7 @@
 // All rights reserved.                                                        /
 ////////////////////////////////////////////////////////////////////////////////
 
-package io
+package network
 
 import (
 	"bytes"
diff --git a/io/interface.go b/network/interface.go
similarity index 98%
rename from io/interface.go
rename to network/interface.go
index b2e6a6c8c..5ce575fe2 100644
--- a/io/interface.go
+++ b/network/interface.go
@@ -4,7 +4,7 @@
 // All rights reserved.                                                        /
 ////////////////////////////////////////////////////////////////////////////////
 
-package io
+package network
 
 import (
 	"gitlab.com/elixxir/client/parse"
diff --git a/io/keyExchange/generate.sh b/network/keyExchange/generate.sh
similarity index 100%
rename from io/keyExchange/generate.sh
rename to network/keyExchange/generate.sh
diff --git a/io/keyExchange/init.go b/network/keyExchange/init.go
similarity index 100%
rename from io/keyExchange/init.go
rename to network/keyExchange/init.go
diff --git a/io/keyExchange/rekey.go b/network/keyExchange/rekey.go
similarity index 100%
rename from io/keyExchange/rekey.go
rename to network/keyExchange/rekey.go
diff --git a/io/keyExchange/trigger.go b/network/keyExchange/trigger.go
similarity index 100%
rename from io/keyExchange/trigger.go
rename to network/keyExchange/trigger.go
diff --git a/io/keyExchange/xchange.pb.go b/network/keyExchange/xchange.pb.go
similarity index 100%
rename from io/keyExchange/xchange.pb.go
rename to network/keyExchange/xchange.pb.go
diff --git a/io/keyExchange/xchange.proto b/network/keyExchange/xchange.proto
similarity index 100%
rename from io/keyExchange/xchange.proto
rename to network/keyExchange/xchange.proto
diff --git a/network/manager.go b/network/manager.go
new file mode 100644
index 000000000..1ae2e9d50
--- /dev/null
+++ b/network/manager.go
@@ -0,0 +1 @@
+package network
diff --git a/io/parse/firstMessagePart.go b/network/parse/firstMessagePart.go
similarity index 100%
rename from io/parse/firstMessagePart.go
rename to network/parse/firstMessagePart.go
diff --git a/io/parse/messagePart.go b/network/parse/messagePart.go
similarity index 100%
rename from io/parse/messagePart.go
rename to network/parse/messagePart.go
diff --git a/io/parse/partition.go b/network/parse/partition.go
similarity index 100%
rename from io/parse/partition.go
rename to network/parse/partition.go
diff --git a/io/processingrounds.go b/network/processingrounds.go
similarity index 97%
rename from io/processingrounds.go
rename to network/processingrounds.go
index 3c7d09201..55e1aae07 100644
--- a/io/processingrounds.go
+++ b/network/processingrounds.go
@@ -1,4 +1,4 @@
-package io
+package network
 
 // File for storing info about which rounds are processing
 
diff --git a/io/processingrounds_test.go b/network/processingrounds_test.go
similarity index 98%
rename from io/processingrounds_test.go
rename to network/processingrounds_test.go
index 2b86976af..14a5563b1 100644
--- a/io/processingrounds_test.go
+++ b/network/processingrounds_test.go
@@ -1,4 +1,4 @@
-package io
+package network
 
 // Testing functions for Processing Round structure
 
diff --git a/io/receive.go b/network/receive.go
similarity index 99%
rename from io/receive.go
rename to network/receive.go
index af0d66fb5..068d729f9 100644
--- a/io/receive.go
+++ b/network/receive.go
@@ -4,14 +4,14 @@
 // All rights reserved.                                                        /
 ////////////////////////////////////////////////////////////////////////////////
 
-package io
+package network
 
 import (
 	"fmt"
 	"github.com/pkg/errors"
 	"gitlab.com/elixxir/client/crypto"
 	"gitlab.com/elixxir/client/globals"
-	"gitlab.com/elixxir/client/io/keyExchange"
+	"gitlab.com/elixxir/client/network/keyExchange"
 	"gitlab.com/elixxir/client/parse"
 	"gitlab.com/elixxir/client/storage"
 	"gitlab.com/elixxir/client/user"
diff --git a/io/receptionManager.go b/network/receptionManager.go
similarity index 99%
rename from io/receptionManager.go
rename to network/receptionManager.go
index 0f28b8fe1..9f7cc4d62 100644
--- a/io/receptionManager.go
+++ b/network/receptionManager.go
@@ -7,7 +7,7 @@
 // Package io asynchronous sending functionality. This is managed by an outgoing
 // messages channel and managed by the sender thread kicked off during
 // initialization.
-package io
+package network
 
 import (
 	"github.com/pkg/errors"
diff --git a/io/receptionManager_test.go b/network/receptionManager_test.go
similarity index 99%
rename from io/receptionManager_test.go
rename to network/receptionManager_test.go
index 28f444a45..2b61d77fa 100644
--- a/io/receptionManager_test.go
+++ b/network/receptionManager_test.go
@@ -4,7 +4,7 @@
 // All rights reserved.                                                        /
 ////////////////////////////////////////////////////////////////////////////////
 
-package io
+package network
 
 import (
 	"gitlab.com/elixxir/primitives/format"
diff --git a/io/send.go b/network/send.go
similarity index 99%
rename from io/send.go
rename to network/send.go
index 80aa9d19a..3779da124 100644
--- a/io/send.go
+++ b/network/send.go
@@ -4,14 +4,14 @@
 // All rights reserved.                                                        /
 ////////////////////////////////////////////////////////////////////////////////
 
-package io
+package network
 
 import (
 	"fmt"
 	"github.com/pkg/errors"
 	"gitlab.com/elixxir/client/crypto"
 	"gitlab.com/elixxir/client/globals"
-	"gitlab.com/elixxir/client/io/keyExchange"
+	"gitlab.com/elixxir/client/network/keyExchange"
 	"gitlab.com/elixxir/client/keyStore"
 	"gitlab.com/elixxir/client/parse"
 	"gitlab.com/elixxir/client/user"
diff --git a/network/sendCmix.go b/network/sendCmix.go
new file mode 100644
index 000000000..1ae2e9d50
--- /dev/null
+++ b/network/sendCmix.go
@@ -0,0 +1 @@
+package network
diff --git a/io/threads.go b/network/threads.go
similarity index 99%
rename from io/threads.go
rename to network/threads.go
index 98d0d43a0..14406c3ec 100644
--- a/io/threads.go
+++ b/network/threads.go
@@ -4,7 +4,7 @@
 // All rights reserved.                                                        /
 ////////////////////////////////////////////////////////////////////////////////
 
-package io
+package network
 
 // threads.go handles all the long running network processing threads in client
 
diff --git a/rekey/rekey.go b/rekey/rekey.go
index 09554a0fe..72a6eae00 100644
--- a/rekey/rekey.go
+++ b/rekey/rekey.go
@@ -4,8 +4,8 @@ import (
 	"bytes"
 	"fmt"
 	"gitlab.com/elixxir/client/globals"
-	"gitlab.com/elixxir/client/io"
-	"gitlab.com/elixxir/client/io/keyExchange"
+	"gitlab.com/elixxir/client/network"
+	"gitlab.com/elixxir/client/network/keyExchange"
 	"gitlab.com/elixxir/client/keyStore"
 	"gitlab.com/elixxir/client/parse"
 	"gitlab.com/elixxir/client/storage"
@@ -23,7 +23,7 @@ import (
 var session user.Session
 var sessionV2 storage.Session
 var topology *connect.Circuit
-var comms io.Communications
+var comms network.Communications
 var transmissionHost *connect.Host
 
 var rekeyTriggerList rekeyTriggerListener
@@ -90,7 +90,7 @@ func (l *rekeyConfirmListener) Hear(msg switchboard.Item, isHeardElsewhere bool,
 }
 
 // InitRekey is called internally by the Login API
-func InitRekey(s user.Session, s2 storage.Session, m io.Communications,
+func InitRekey(s user.Session, s2 storage.Session, m network.Communications,
 	t *connect.Circuit, host *connect.Host, rekeyChan2 chan struct{}) {
 
 	rekeyTriggerList = rekeyTriggerListener{}
diff --git a/rekey/rekey_test.go b/rekey/rekey_test.go
index 119ad6f5c..9d05632f6 100644
--- a/rekey/rekey_test.go
+++ b/rekey/rekey_test.go
@@ -5,7 +5,7 @@ import (
 	"encoding/binary"
 	"fmt"
 	"gitlab.com/elixxir/client/globals"
-	"gitlab.com/elixxir/client/io/keyExchange"
+	"gitlab.com/elixxir/client/network/keyExchange"
 	"gitlab.com/elixxir/client/keyStore"
 	"gitlab.com/elixxir/client/parse"
 	"gitlab.com/elixxir/client/storage"
-- 
GitLab