diff --git a/api/client.go b/api/client.go
index 9344478f885becc3be47a312c3fc581d3fa0409c..623bb204fa277438aaf22b3a927b6eb047d0a3ab 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 56179e68a0da3c946754eb1684bc1c61f0929d86..d70f90f23c85cb7e98e26debc4966a9d0c53bd24 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 992bba9893a71ed2a1ec130b818df1413464ef9c..68f398c006df5ec7f442ef90198422db4014e036 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 9d0de5000345256ffa40f738169e258657d000ea..b03fbb2ad4a91e409955f9c41171e29d6235cb50 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 89cad54aee31423c4715015000a53cb0e91bafb5..b35ad3efc27a5dac8174dbe89db9260971cc7665 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 78903ceff8f3e16bd4c9489a939e6160d9bbfb47..0a592507e2c73ea9957123736075827449cec52a 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 6fa3bddf001fdb8a520b208b28f5674587a158e7..3f7718340364b014e746a701bfffb18693ff08bc 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 71975246acd7ebabb21c3c55538b3f338118a994..2bc5073acd8d96e5d6a87207573da89cdbad7dc8 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 2af12fcee1cb7c33833a1f126e30ef03a6a7d066..089e1e93d75dcf0a6d74be473b9b9f1891291673 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 bc474d92bf9594c67e1354160d5faa7d44975d26..8803f9ab5f99e7a6c4adfbc98db4338430be0e9c 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 928473fbe031959be6e6da372a6b98c3e0921c89..f4de36d5f2e17a1d2df6284132fda3503f192140 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 ae8edda7b2897d4b2563de0d089021581377570f..e628eb4406815e78a2e894389f4eb54d191b72c4 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 31d78c3f1627d47d5a8035acd2e026686d99ef4e..b4c7714e1c1ef2a99d24d5889fa4bd140e965a19 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 b2e6a6c8c2e4c3c5c2d4e9879ef075a664bd569a..5ce575fe2168d31597089634a2d899b95608f0e4 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 0000000000000000000000000000000000000000..1ae2e9d505591696853ae1c2f171bd6c7edcfbe1
--- /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 3c7d09201651b98c2af9e8a27f6c2fc38b218fb7..55e1aae0750f23e89c39602d7e9ba1c0727a0bfb 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 2b86976aff6a0ac12a8adb1e5ca34cc7aab9876e..14a5563b1c0530ee548992d978a78e74bc5630c8 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 af0d66fb53c84f81386965a58247d3b3d192ccc0..068d729f93a3c20c16d6ed5d34111fddd882100e 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 0f28b8fe1d0e5e25e8c6b4479ae75bad185578ac..9f7cc4d623c7f40f18bc537b65f4bf25dc9d641a 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 28f444a4516cf8f891c4894fb7ce8d5d707dfb9c..2b61d77faffebacc7091aa38e1070864a9c6e146 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 80aa9d19a473c2aa469816a4ff4075ac9da97197..3779da1247a4f68ad2cb05b3380c82ec9d77f442 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 0000000000000000000000000000000000000000..1ae2e9d505591696853ae1c2f171bd6c7edcfbe1
--- /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 98d0d43a0c23709608158a01785f8b6436c89d84..14406c3eccc7e4e4e1e74219a94857cd292fdc33 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 09554a0fe0370b1cde586fc75f85c6bae094448a..72a6eae0080c4fbb19d52e5294ceb645ddc705e8 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 119ad6f5c2538c1da4729cda647b67fc19445a3c..9d05632f693d4b7f11e90b82fb085bf36fa5d438 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"