diff --git a/api/client.go b/api/client.go
index 9f4b68968c04d68c6e286eb630f881ca9095454a..0c775b99e927c4e3efaef26fb0289e9c284600e7 100644
--- a/api/client.go
+++ b/api/client.go
@@ -192,7 +192,7 @@ func NewClientFromBackup(ndfJSON, storageDir string, sessionPassword,
 
 // OpenClient session, but don't connect to the network or log in
 func OpenClient(storageDir string, password []byte,
-	parameters e2e.Params) (*Client, error) {
+	parameters Params) (*Client, error) {
 	jww.INFO.Printf("OpenClient()")
 
 	rngStreamGen := fastRNG.NewStreamGenerator(12, 1024,
@@ -222,7 +222,7 @@ func OpenClient(storageDir string, password []byte,
 		comms:              nil,
 		network:            nil,
 		followerServices:   newServices(),
-		parameters:         parameters,
+		parameters:         parameters.E2E,
 		clientErrorChannel: make(chan interfaces.ClientError, 1000),
 		events:             event.NewEventManager(),
 		backup:             &backup.Backup{},
@@ -282,7 +282,7 @@ func NewProtoClient_Unsafe(ndfJSON, storageDir string, password,
 
 // Login initializes a client object from existing storage.
 func Login(storageDir string, password []byte,
-	authCallbacks auth.Callbacks, parameters e2e.Params) (*Client, error) {
+	authCallbacks auth.Callbacks, parameters Params) (*Client, error) {
 	jww.INFO.Printf("Login()")
 
 	c, err := OpenClient(storageDir, password, parameters)
@@ -328,7 +328,7 @@ func Login(storageDir string, password []byte,
 		}
 	}
 
-	c.network, err = cmix.NewClient(parameters.Network, c.comms, c.storage,
+	c.network, err = cmix.NewClient(parameters.CMix, c.comms, c.storage,
 		c.storage.GetNDF(), c.rng, c.events)
 	if err != nil {
 		return nil, err
@@ -364,7 +364,7 @@ func Login(storageDir string, password []byte,
 // procedures and is generally unsafe.
 func LoginWithNewBaseNDF_UNSAFE(storageDir string, password []byte,
 	newBaseNdf string, authCallbacks auth.Callbacks,
-	parameters e2e.Params) (*Client, error) {
+	params Params) (*Client, error) {
 	jww.INFO.Printf("LoginWithNewBaseNDF_UNSAFE()")
 
 	def, err := parseNDF(newBaseNdf)
@@ -372,7 +372,7 @@ func LoginWithNewBaseNDF_UNSAFE(storageDir string, password []byte,
 		return nil, err
 	}
 
-	c, err := OpenClient(storageDir, password, parameters)
+	c, err := OpenClient(storageDir, password, params)
 	if err != nil {
 		return nil, err
 	}
@@ -396,7 +396,7 @@ func LoginWithNewBaseNDF_UNSAFE(storageDir string, password []byte,
 			"able to register or track network.")
 	}
 
-	c.network, err = cmix.NewClient(parameters.Network, c.comms, c.storage,
+	c.network, err = cmix.NewClient(params.CMix, c.comms, c.storage,
 		c.storage.GetNDF(), c.rng, c.events)
 	if err != nil {
 		return nil, err
@@ -412,9 +412,8 @@ func LoginWithNewBaseNDF_UNSAFE(storageDir string, password []byte,
 	// FIXME: The callbacks need to be set, so I suppose we would need to
 	//        either set them via a special type or add them
 	//        to the login call?
-	authParams := auth.GetDefaultParams()
 	c.auth, err = auth.NewState(c.storage.GetKV(), c.network, c.e2e, c.rng,
-		c.events, authParams, authCallbacks, c.backup.TriggerBackup)
+		c.events, params.Auth, authCallbacks, c.backup.TriggerBackup)
 	if err != nil {
 		return nil, err
 	}
@@ -432,7 +431,7 @@ func LoginWithNewBaseNDF_UNSAFE(storageDir string, password []byte,
 // some specific deployment procedures and is generally unsafe.
 func LoginWithProtoClient(storageDir string, password []byte,
 	protoClientJSON []byte, newBaseNdf string, authCallbacks auth.Callbacks,
-	parameters e2e.Params) (*Client, error) {
+	params Params) (*Client, error) {
 	jww.INFO.Printf("LoginWithProtoClient()")
 
 	def, err := parseNDF(newBaseNdf)
@@ -446,7 +445,7 @@ func LoginWithProtoClient(storageDir string, password []byte,
 		return nil, err
 	}
 
-	c, err := OpenClient(storageDir, password, parameters)
+	c, err := OpenClient(storageDir, password, params)
 	if err != nil {
 		return nil, err
 	}
@@ -463,7 +462,7 @@ func LoginWithProtoClient(storageDir string, password []byte,
 		return nil, err
 	}
 
-	c.network, err = cmix.NewClient(parameters.Network, c.comms, c.storage,
+	c.network, err = cmix.NewClient(params.CMix, c.comms, c.storage,
 		c.storage.GetNDF(), c.rng, c.events)
 	if err != nil {
 		return nil, err
@@ -479,9 +478,8 @@ func LoginWithProtoClient(storageDir string, password []byte,
 	// FIXME: The callbacks need to be set, so I suppose we would need to
 	//        either set them via a special type or add them
 	//        to the login call?
-	authParams := auth.GetDefaultParams()
 	c.auth, err = auth.NewState(c.storage.GetKV(), c.network, c.e2e, c.rng,
-		c.events, authParams, authCallbacks, c.backup.TriggerBackup)
+		c.events, params.Auth, authCallbacks, c.backup.TriggerBackup)
 	if err != nil {
 		return nil, err
 	}
@@ -650,12 +648,6 @@ func (c *Client) HasRunningProcessies() bool {
 	return !c.followerServices.stoppable.IsStopped()
 }
 
-// Returns the health tracker for registration and polling
-func (c *Client) GetHealth() interfaces.HealthTracker {
-	jww.INFO.Printf("GetHealth()")
-	return c.GetHealth()
-}
-
 // RegisterRoundEventsCb registers a callback for round
 // events.
 func (c *Client) GetRoundEvents() interfaces.RoundEvents {
@@ -755,7 +747,7 @@ func (c *Client) InitializeBackup(backupPass string,
 // healthy.
 func (c *Client) GetNodeRegistrationStatus() (int, int, error) {
 	// Return an error if the network is not healthy
-	if !c.GetHealth().IsHealthy() {
+	if !c.GetNetworkInterface().IsHealthy() {
 		return 0, 0, errors.New("Cannot get number of nodes " +
 			"registrations when network is not healthy")
 	}
@@ -946,9 +938,8 @@ func checkVersionAndSetupStorage(def *ndf.NetworkDefinition,
 	}
 
 	// create new E2E
-	rekeyParams := rekey.GetDefaultParams()
 	err = e2e.Init(storageSess.GetKV(), protoUser.ReceptionID,
-		protoUser.E2eDhPrivateKey, e2eGrp, rekeyParams)
+		protoUser.E2eDhPrivateKey, e2eGrp, rekey.GetDefaultParams())
 	if err != nil {
 		return nil, err
 	}
diff --git a/cmd/fileTransfer.go b/cmd/fileTransfer.go
index 3241d67cad45472c324226ca2f58678bbe8d8dc0..78442b9afd575e44a111ea3976ecb8f8ddfef3ef 100644
--- a/cmd/fileTransfer.go
+++ b/cmd/fileTransfer.go
@@ -9,6 +9,9 @@ package cmd
 
 import (
 	"fmt"
+	"io/ioutil"
+	"time"
+
 	"github.com/spf13/cobra"
 	jww "github.com/spf13/jwalterweatherman"
 	"github.com/spf13/viper"
@@ -19,8 +22,6 @@ import (
 	"gitlab.com/xx_network/primitives/id"
 	"gitlab.com/xx_network/primitives/netTime"
 	"gitlab.com/xx_network/primitives/utils"
-	"io/ioutil"
-	"time"
 )
 
 const callbackPeriod = 25 * time.Millisecond
@@ -53,7 +54,10 @@ var ftCmd = &cobra.Command{
 
 		// Wait until connected or crash on timeout
 		connected := make(chan bool, 10)
-		client.GetHealth().AddChannel(connected)
+		client.GetNetworkInterface().AddHealthCallback(
+			func(isconnected bool) {
+				connected <- isconnected
+			})
 		waitUntilConnected(connected)
 
 		// After connection, wait until registered with at least 85% of nodes
diff --git a/cmd/group.go b/cmd/group.go
index ded3a3f569c4490be08d6917009fce80545886b1..df0c3902b838a644ab7403462bc47e149b240aa8 100644
--- a/cmd/group.go
+++ b/cmd/group.go
@@ -47,7 +47,10 @@ var groupCmd = &cobra.Command{
 
 		// Wait until connected or crash on timeout
 		connected := make(chan bool, 10)
-		client.GetHealth().AddChannel(connected)
+		client.GetNetworkInterface().AddHealthCallback(
+			func(isconnected bool) {
+				connected <- isconnected
+			})
 		waitUntilConnected(connected)
 
 		// After connection, make sure we have registered with at least 85% of
diff --git a/cmd/root.go b/cmd/root.go
index 569fda28739c1fd6fe9c0539f274bebec19ab76a..7bcfff2ac30e68ab193be3a37190d8c8bb837f94 100644
--- a/cmd/root.go
+++ b/cmd/root.go
@@ -27,7 +27,6 @@ import (
 
 	"gitlab.com/elixxir/client/catalog"
 	"gitlab.com/elixxir/client/cmix"
-	"gitlab.com/elixxir/client/e2e"
 	"gitlab.com/elixxir/client/e2e/ratchet/partner/session"
 
 	"github.com/spf13/cobra"
@@ -221,7 +220,10 @@ var rootCmd = &cobra.Command{
 
 		// Wait until connected or crash on timeout
 		connected := make(chan bool, 10)
-		client.GetHealth().AddChannel(connected)
+		client.GetNetworkInterface().AddHealthCallback(
+			func(isconnected bool) {
+				connected <- isconnected
+			})
 		waitUntilConnected(connected)
 
 		// err = client.RegisterForNotifications("dJwuGGX3KUyKldWK5PgQH8:APA91bFjuvimRc4LqOyMDiy124aLedifA8DhldtaB_b76ggphnFYQWJc_fq0hzQ-Jk4iYp2wPpkwlpE1fsOjs7XWBexWcNZoU-zgMiM0Mso9vTN53RhbXUferCbAiEylucEOacy9pniN")
@@ -328,12 +330,9 @@ var rootCmd = &cobra.Command{
 		mt := catalog.MessageType(catalog.XxMessage)
 		payload := []byte(msgBody)
 		recipient := recipientID
-		paramsE2E := e2e.GetDefaultParams()
+		params := initParams()
 		wg := &sync.WaitGroup{}
 		sendCnt := int(viper.GetUint("sendCount"))
-		if viper.GetBool("splitSends") {
-			paramsE2E.CMIX.ExcludedRounds = excludedRounds.NewSet()
-		}
 		wg.Add(sendCnt)
 		go func() {
 			sendDelay := time.Duration(viper.GetUint("sendDelay"))
@@ -346,16 +345,16 @@ var rootCmd = &cobra.Command{
 						var roundIDs []id.Round
 						var roundTimeout time.Duration
 						if unsafe {
-							paramsE2E.CMIX.DebugTag = "cmd.Unsafe"
+							params.E2E.CMIXParams.DebugTag = "cmd.Unsafe"
 							roundIDs, _, err = client.SendUnsafe(
 								mt, recipient, payload,
-								paramsE2E)
-							roundTimeout = paramsE2E.CMIX.Timeout
+								params.E2E)
+							roundTimeout = params.Network.Timeout
 						} else {
-							paramsE2E.CMIX.DebugTag = "cmd.E2E"
+							params.E2E.CMIXParams.DebugTag = "cmd.E2E"
 							roundIDs, _, _, err = client.SendE2E(mt,
-								recipient, payload, paramsE2E)
-							roundTimeout = paramsE2E.CMIX.Timeout
+								recipient, payload, params.E2E)
+							roundTimeout = params.E2E.CMIXParams.Timeout
 						}
 						if err != nil {
 							jww.FATAL.Panicf("%+v", err)
@@ -553,30 +552,38 @@ func createClient() *api.Client {
 		}
 	}
 
-	netParams := e2e.GetDefaultParams()
-	sessParams := session.GetDefaultParams()
-	sessParams.MinKeys = uint16(viper.GetUint("e2eMinKeys"))
-	sessParams.MaxKeys = uint16(viper.GetUint("e2eMaxKeys"))
-	sessParams.NumRekeys = uint16(viper.GetUint("e2eNumReKeys"))
-	sessParams.RekeyThreshold = viper.GetFloat64("e2eRekeyThreshold")
-	netParams.Network.Pickup.ForceHistoricalRounds = viper.GetBool(
+	params := initParams()
+
+	client, err := api.OpenClient(storeDir, pass, params)
+	if err != nil {
+		jww.FATAL.Panicf("%+v", err)
+	}
+	return client
+}
+
+func initParams() api.Params {
+	p := api.GetDefaultParams()
+	p.Session.MinKeys = uint16(viper.GetUint("e2eMinKeys"))
+	p.Session.MaxKeys = uint16(viper.GetUint("e2eMaxKeys"))
+	p.Session.NumRekeys = uint16(viper.GetUint("e2eNumReKeys"))
+	p.Session.RekeyThreshold = viper.GetFloat64("e2eRekeyThreshold")
+	p.CMix.Pickup.ForceHistoricalRounds = viper.GetBool(
 		"forceHistoricalRounds")
-	netParams.Network.FastPolling = !viper.GetBool("slowPolling")
-	netParams.Network.Pickup.ForceMessagePickupRetry = viper.GetBool(
+	p.CMix.FastPolling = !viper.GetBool("slowPolling")
+	p.CMix.Pickup.ForceMessagePickupRetry = viper.GetBool(
 		"forceMessagePickupRetry")
-	if netParams.Network.Pickup.ForceMessagePickupRetry {
+	if p.CMix.Pickup.ForceMessagePickupRetry {
 		period := 3 * time.Second
 		jww.INFO.Printf("Setting Uncheck Round Period to %v", period)
-		netParams.Network.Pickup.UncheckRoundPeriod = period
+		p.CMix.Pickup.UncheckRoundPeriod = period
 	}
-	netParams.Network.VerboseRoundTracking = viper.GetBool(
+	p.CMix.VerboseRoundTracking = viper.GetBool(
 		"verboseRoundTracking")
-
-	client, err := api.OpenClient(storeDir, pass, netParams)
-	if err != nil {
-		jww.FATAL.Panicf("%+v", err)
+	if viper.GetBool("splitSends") {
+		p.Network.ExcludedRounds = excludedRounds.NewSet()
 	}
-	return client
+
+	return p
 }
 
 func initClient() *api.Client {
@@ -585,29 +592,13 @@ func initClient() *api.Client {
 	pass := parsePassword(viper.GetString("password"))
 	storeDir := viper.GetString("session")
 	jww.DEBUG.Printf("sessionDur: %v", storeDir)
-	netParams := e2e.GetDefaultParams()
-	sessParams := session.GetDefaultParams()
-	sessParams.MinKeys = uint16(viper.GetUint("e2eMinKeys"))
-	sessParams.MaxKeys = uint16(viper.GetUint("e2eMaxKeys"))
-	sessParams.NumRekeys = uint16(viper.GetUint("e2eNumReKeys"))
-	sessParams.RekeyThreshold = viper.GetFloat64("e2eRekeyThreshold")
-	netParams.Network.Pickup.ForceHistoricalRounds = viper.GetBool(
-		"forceHistoricalRounds")
-	netParams.Network.FastPolling = !viper.GetBool("slowPolling")
-	netParams.Network.Pickup.ForceMessagePickupRetry = viper.GetBool(
-		"forceMessagePickupRetry")
-	if netParams.Network.Pickup.ForceMessagePickupRetry {
-		period := 3 * time.Second
-		jww.INFO.Printf("Setting Uncheck Round Period to %v", period)
-		netParams.Network.Pickup.UncheckRoundPeriod = period
-	}
-	netParams.Network.VerboseRoundTracking = viper.GetBool(
-		"verboseRoundTracking")
+
+	params := initParams()
 
 	// load the client
 	authCbs := makeAuthCallbacks(nil,
 		viper.GetBool("unsafe-channel-creation"))
-	client, err := api.Login(storeDir, pass, authCbs, netParams)
+	client, err := api.Login(storeDir, pass, authCbs, params)
 	authCbs.client = client
 	if err != nil {
 		jww.FATAL.Panicf("%+v", err)
diff --git a/cmd/single.go b/cmd/single.go
index 3c72ec96b9be03483b6492dad4a6d0d8a46a0a61..ce698a01a32b79138ff80e1edefe9b4d15d7cb06 100644
--- a/cmd/single.go
+++ b/cmd/single.go
@@ -48,7 +48,10 @@ var singleCmd = &cobra.Command{
 
 		// Wait until connected or crash on timeout
 		connected := make(chan bool, 10)
-		client.GetHealth().AddChannel(connected)
+		client.GetNetworkInterface().AddHealthCallback(
+			func(isconnected bool) {
+				connected <- isconnected
+			})
 		waitUntilConnected(connected)
 
 		// get the tag
diff --git a/cmix/client.go b/cmix/client.go
index 1dd7cff35662ce48e696bd66e06c4ce4b8db4185..116d3cbc19c94bb7f1bdb102b6f30ce5208acd18 100644
--- a/cmix/client.go
+++ b/cmix/client.go
@@ -185,7 +185,7 @@ func NewClient(params Params, comms *commClient.Comms, session storage.Session,
 		session.GetKV(), c.Monitor, c.instance.GetRoundEvents(), critSender)
 
 	// Report health events
-	c.Monitor.AddHealthCallback(func(isHealthy bool) {
+	c.AddHealthCallback(func(isHealthy bool) {
 		c.events.Report(5, "health", "IsHealthy", strconv.FormatBool(isHealthy))
 	})
 
diff --git a/cmix/health/tracker.go b/cmix/health/tracker.go
index 20566459b82ea7c9a031881cdf1d5873f984a10e..3f2a932e9a1b82efdeff5f8ca2bcd1c1c5e3f8fd 100644
--- a/cmix/health/tracker.go
+++ b/cmix/health/tracker.go
@@ -12,11 +12,12 @@ package health
 
 import (
 	"errors"
+	"sync"
+	"time"
+
 	jww "github.com/spf13/jwalterweatherman"
 	"gitlab.com/elixxir/client/stoppable"
 	"gitlab.com/elixxir/comms/network"
-	"sync"
-	"time"
 )
 
 type Monitor interface {
diff --git a/cmix/interface.go b/cmix/interface.go
index f6788924f5a1064b235ec3c6b99da5ff7f6ead5b..a5e540c23b7e1d54265dcc1bb03bc578be79bd9b 100644
--- a/cmix/interface.go
+++ b/cmix/interface.go
@@ -1,18 +1,19 @@
 package cmix
 
 import (
+	"time"
+
 	"gitlab.com/elixxir/client/cmix/gateway"
-	"gitlab.com/elixxir/client/cmix/rounds"
 	"gitlab.com/elixxir/client/cmix/identity"
 	"gitlab.com/elixxir/client/cmix/message"
 	"gitlab.com/elixxir/client/cmix/nodes"
+	"gitlab.com/elixxir/client/cmix/rounds"
 	"gitlab.com/elixxir/client/stoppable"
 	"gitlab.com/elixxir/comms/network"
 	"gitlab.com/elixxir/primitives/format"
 	"gitlab.com/xx_network/comms/connect"
 	"gitlab.com/xx_network/primitives/id"
 	"gitlab.com/xx_network/primitives/id/ephemeral"
-	"time"
 )
 
 type Client interface {
diff --git a/cmix/message/services.go b/cmix/message/services.go
index c28ac6167ff0b1225d529698192a4ca97c75bcb8..ed11ce56b260e1fff0b78ceb8fa18960e31683b5 100644
--- a/cmix/message/services.go
+++ b/cmix/message/services.go
@@ -125,6 +125,10 @@ func (sm *ServicesManager) AddService(clientID *id.ID, newService Service,
 		defaultList: nil,
 	}
 
+	if _, exists := sm.tmap[*clientID]; !exists {
+		sm.tmap[*clientID] = make(map[sih.Preimage]service)
+	}
+
 	if newService.Tag == sih.Default {
 		if !bytes.Equal(newService.Identifier, clientID[:]) {
 			jww.FATAL.Panicf("Cannot accept a malformed 'Default' " +
diff --git a/e2e/critical.go b/e2e/critical.go
index 8fbcf39e859fb8ad68cb85850766d50edf8bf50c..f6ef8912426a589aa0f06b57a77b0ecc0a7da50c 100644
--- a/e2e/critical.go
+++ b/e2e/critical.go
@@ -128,7 +128,7 @@ func (c *critical) evaluate(stop *stoppable.Single) {
 		go func(mt catalog.MessageType, recipient *id.ID,
 			payload []byte, params Params) {
 
-			params.CMIX.Stop = stop
+			params.Stop = stop
 			jww.INFO.Printf("Resending critical raw message to %s "+
 				"(msgDigest: %s)", recipient,
 				format.DigestContents(payload))
diff --git a/e2e/manager.go b/e2e/manager.go
index 38756fc168d8fad2cc65fe3b23db14b494b7f3c7..7565deb402e86dec5a2b61e25ebf28f8553ff555 100644
--- a/e2e/manager.go
+++ b/e2e/manager.go
@@ -162,7 +162,7 @@ func (m *manager) StartProcesses() (stoppable.Stoppable, error) {
 		cmixParams cmix.CMIXParams) (
 		[]id.Round, e2e.MessageID, time.Time, error) {
 		par := GetDefaultParams()
-		par.CMIX = cmixParams
+		par.CMIXParams = cmixParams
 		return m.SendE2E(mt, recipient, payload, par)
 	}
 	rekeyStopper, err := rekey.Start(m.Switchboard, m.Ratchet,
diff --git a/e2e/params.go b/e2e/params.go
index 52dd2d7b59f7ad6dffe999f56af84b75ed252bba..23052727ffcc103f62e14c5d41fad2fbcabfe244 100644
--- a/e2e/params.go
+++ b/e2e/params.go
@@ -22,17 +22,11 @@ type Params struct {
 	// Delay between attempting to get kets
 	KeyGeRetryDelay time.Duration
 
-	//Underlying cmix tags.
-	// Note: if critical is true, an alternative critical messages
-	// system within e2e will be used which preserves privacy
-	CMIX cmix.CMIXParams
-
-	// cMix network params
-	Network cmix.Params
-
 	//Authorizes the message to use a key reserved for rekeying. Do not use
 	//unless sending a rekey
 	Rekey bool
+
+	cmix.CMIXParams
 }
 
 func GetDefaultParams() Params {
@@ -43,8 +37,8 @@ func GetDefaultParams() Params {
 		KeyGetRetryCount: 10,
 		KeyGeRetryDelay:  500 * time.Millisecond,
 
-		CMIX:  cmix.GetDefaultCMIXParams(),
-		Rekey: false,
+		Rekey:      false,
+		CMIXParams: cmix.GetDefaultCMIXParams(),
 	}
 }
 func (e Params) Marshal() ([]byte, error) {
diff --git a/e2e/sendE2E.go b/e2e/sendE2E.go
index 0dcd4acdc4977b2ef8c4e0c42d3d2cb9a22e438d..e2f6ddeeb40fe4e1df555d69129674c0022f3865 100644
--- a/e2e/sendE2E.go
+++ b/e2e/sendE2E.go
@@ -27,12 +27,12 @@ func (m *manager) SendE2E(mt catalog.MessageType, recipient *id.ID,
 			"sendE2E when network is not healthy")
 	}
 
-	handleCritical := params.CMIX.Critical
+	handleCritical := params.Critical
 	if handleCritical {
 		m.crit.AddProcessing(mt, recipient, payload, params)
 		// set critical to false so the network layer doesnt
 		// make the messages critical as well
-		params.CMIX.Critical = false
+		params.Critical = false
 	}
 
 	rnds, msgID, t, err := m.sendE2E(mt, recipient, payload, params)
@@ -85,7 +85,7 @@ func (m *manager) sendE2E(mt catalog.MessageType, recipient *id.ID,
 				cmixParams cmix.CMIXParams) (
 				[]id.Round, e2e.MessageID, time.Time, error) {
 				par := GetDefaultParams()
-				par.CMIX = cmixParams
+				par.CMIXParams = cmixParams
 				return m.SendE2E(mt, recipient, payload, par)
 			}
 			rekey.CheckKeyExchanges(m.net.GetInstance(), m.grp, rekeySendFunc,
@@ -102,7 +102,7 @@ func (m *manager) sendE2E(mt catalog.MessageType, recipient *id.ID,
 		// FIXME: remove this wait, it is weird. Why is it
 		// here? we cant remember.
 		key, err := waitForKey(keyGetter, params.KeyGetRetryCount,
-			params.KeyGeRetryDelay, params.CMIX.Stop, recipient,
+			params.KeyGeRetryDelay, params.Stop, recipient,
 			format.DigestContents(p), i)
 		if err != nil {
 			err = errors.WithMessagef(err,
@@ -133,7 +133,7 @@ func (m *manager) sendE2E(mt catalog.MessageType, recipient *id.ID,
 			var err error
 			roundIds[i], _, err = m.net.Send(recipient,
 				key.Fingerprint(), s, contentsEnc, mac,
-				params.CMIX)
+				params.CMIXParams)
 			if err != nil {
 				errCh <- err
 			}
diff --git a/e2e/sendUnsafe.go b/e2e/sendUnsafe.go
index db59de2d697778f1bfb277ea21f60c4aed9b8731..9ad2b48ad2191b42a97623e976a1a23d721133f8 100644
--- a/e2e/sendUnsafe.go
+++ b/e2e/sendUnsafe.go
@@ -64,7 +64,8 @@ func (m *manager) sendUnsafe(mt catalog.MessageType, recipient *id.ID,
 
 			var err error
 			roundIds[i], _, err = m.net.Send(recipient, fp,
-				srvc, payload, unencryptedMAC, params.CMIX)
+				srvc, payload, unencryptedMAC,
+				params.CMIXParams)
 			if err != nil {
 				errCh <- err
 			}
diff --git a/fileTransfer/sendE2e.go b/fileTransfer/sendE2e.go
index 647f3d905fdea3f172a94bfca8c2e7638e846cbd..2f737bcaf9093ebad765d4ec3b4b8be5ec455689 100644
--- a/fileTransfer/sendE2e.go
+++ b/fileTransfer/sendE2e.go
@@ -65,7 +65,7 @@ func (m *manager) sendNewFileTransferMessage(recipient *id.ID, fileName,
 	params := e2e.GetDefaultParams()
 	params.ServiceTag = catalog.Silent
 	params.LastServiceTag = catalog.Silent
-	params.CMIX.DebugTag = initialMessageDebugTag
+	params.DebugTag = initialMessageDebugTag
 
 	_, _, _, err = m.e2e.SendE2E(
 		catalog.NewFileTransfer, recipient, payload, params)
@@ -85,7 +85,7 @@ func (m *manager) sendEndFileTransferMessage(recipient *id.ID) {
 			if healthy {
 				params := e2e.GetDefaultParams()
 				params.LastServiceTag = catalog.EndFT
-				params.CMIX.DebugTag = lastMessageDebugTag
+				params.DebugTag = lastMessageDebugTag
 
 				_, _, _, err := m.e2e.SendE2E(
 					catalog.EndFileTransfer, recipient, nil, params)
diff --git a/groupChat/sendRequests.go b/groupChat/sendRequests.go
index 3bc201d41ecd77df369a85ba44a47056c456e22d..dba1231cde58c38d7159daadce4f7589369c2a0a 100644
--- a/groupChat/sendRequests.go
+++ b/groupChat/sendRequests.go
@@ -8,6 +8,8 @@
 package groupChat
 
 import (
+	"strings"
+
 	"github.com/golang/protobuf/proto"
 	"github.com/pkg/errors"
 	jww "github.com/spf13/jwalterweatherman"
@@ -16,7 +18,6 @@ import (
 	gs "gitlab.com/elixxir/client/groupChat/groupStore"
 	"gitlab.com/elixxir/crypto/group"
 	"gitlab.com/xx_network/primitives/id"
-	"strings"
 )
 
 // Error messages.
@@ -116,7 +117,7 @@ func (m Manager) sendRequests(g gs.Group) ([]id.Round, RequestStatus, error) {
 func (m Manager) sendRequest(memberID *id.ID, request []byte) ([]id.Round, error) {
 	p := e2e.GetDefaultParams()
 	p.LastServiceTag = catalog.GroupRq
-	p.CMIX.DebugTag = "group.Request"
+	p.DebugTag = "group.Request"
 
 	rounds, _, _, err := m.e2e.SendE2E(catalog.GroupCreationRequest, memberID, request, p)
 	if err != nil {