diff --git a/bindings/client_test.go b/bindings/client_test.go
index 059477ba783d9e4fa385d0077cca519586d21cf0..5537028f60297571a42bdfd86542e6ab3847823c 100644
--- a/bindings/client_test.go
+++ b/bindings/client_test.go
@@ -402,7 +402,7 @@ func TestLoginLogout(t *testing.T) {
 
 type MockListener bool
 
-func (m *MockListener) Hear(msg Message, isHeardElsewhere bool) {
+func (m *MockListener) Hear(msg Message, isHeardElsewhere bool, i ...interface{}) {
 	*m = true
 }
 
@@ -442,6 +442,7 @@ func TestListen(t *testing.T) {
 		Sender:   id.ZeroID,
 		Receiver: client.client.GetCurrentUser(),
 	})
+	time.Sleep(time.Second)
 	if !listener {
 		t.Error("Message not received")
 	}
diff --git a/bindings/interfaces.go b/bindings/interfaces.go
index 6b60841eb2ba4374c2d8e548f066dd8fc9bb74e3..88ea9ad7fc85743d066bb2e68a5da0b4b0a7f8de 100644
--- a/bindings/interfaces.go
+++ b/bindings/interfaces.go
@@ -60,7 +60,7 @@ type storageProxy struct {
 // gets a message of the type that the registerer specified at registration
 // time.
 type Listener interface {
-	Hear(msg Message, isHeardElsewhere bool)
+	Hear(msg Message, isHeardElsewhere bool, i ...interface{})
 }
 
 // Translate a bindings listener to a switchboard listener
@@ -70,9 +70,9 @@ type listenerProxy struct {
 	proxy Listener
 }
 
-func (lp *listenerProxy) Hear(msg switchboard.Item, isHeardElsewhere bool) {
+func (lp *listenerProxy) Hear(msg switchboard.Item, isHeardElsewhere bool, i ...interface{}) {
 	msgInterface := &parse.BindingsMessageProxy{Proxy: msg.(*parse.Message)}
-	lp.proxy.Hear(msgInterface, isHeardElsewhere)
+	lp.proxy.Hear(msgInterface, isHeardElsewhere, i)
 }
 
 // Interface used to receive a callback on searching for a user
diff --git a/bots/bots.go b/bots/bots.go
index 8433deeb1c51ce460c30e4eebf005f33e3cb5c0d..b40537aa4beba5ad0f60caa04fff2a2ab57e600b 100644
--- a/bots/bots.go
+++ b/bots/bots.go
@@ -21,7 +21,7 @@ var UdbID *id.User
 
 type channelResponseListener chan string
 
-func (l *channelResponseListener) Hear(msg switchboard.Item, isHeardElsewhere bool) {
+func (l *channelResponseListener) Hear(msg switchboard.Item, isHeardElsewhere bool, i ...interface{}) {
 	m := msg.(*parse.Message)
 	*l <- string(m.Body)
 }
@@ -36,7 +36,7 @@ var nicknameResponseListener channelResponseListener
 type nickReqListener struct{}
 
 // Nickname listener simply replies with message containing user's nick
-func (l *nickReqListener) Hear(msg switchboard.Item, isHeardElsewhere bool) {
+func (l *nickReqListener) Hear(msg switchboard.Item, isHeardElsewhere bool, i ...interface{}) {
 	m := msg.(*parse.Message)
 	nick := session.GetCurrentUser().Username
 	resp := parse.Pack(&parse.TypedBody{
diff --git a/cmd/root.go b/cmd/root.go
index f08c5310bee4999a0be299ce97184ad47a6f6ace..a6fa1266df87df67f5c8c8c16bbdd29cb298269b 100644
--- a/cmd/root.go
+++ b/cmd/root.go
@@ -298,7 +298,7 @@ type FallbackListener struct {
 	MessagesReceived int64
 }
 
-func (l *FallbackListener) Hear(item switchboard.Item, isHeardElsewhere bool) {
+func (l *FallbackListener) Hear(item switchboard.Item, isHeardElsewhere bool, i ...interface{}) {
 	if !isHeardElsewhere {
 		message := item.(*parse.Message)
 		sender, ok := user.Users.GetUser(message.Sender)
@@ -319,7 +319,7 @@ type TextListener struct {
 	MessagesReceived int64
 }
 
-func (l *TextListener) Hear(item switchboard.Item, isHeardElsewhere bool) {
+func (l *TextListener) Hear(item switchboard.Item, isHeardElsewhere bool, i ...interface{}) {
 	message := item.(*parse.Message)
 	globals.Log.INFO.Println("Hearing a text message")
 	result := cmixproto.TextMessage{}
diff --git a/go.mod b/go.mod
index 0c8b19111dc2a5e06e526432040f9e0d08cf14b9..bff70d2eb577101eda11cb918ce6ab3c2016de3c 100644
--- a/go.mod
+++ b/go.mod
@@ -16,9 +16,9 @@ require (
 	github.com/spf13/jwalterweatherman v1.1.0
 	github.com/spf13/pflag v1.0.5 // indirect
 	github.com/spf13/viper v1.6.1
-	gitlab.com/elixxir/comms v0.0.0-20200108001710-b5feabd13539
+	gitlab.com/elixxir/comms v0.0.0-20200108181118-c0b7fae36425
 	gitlab.com/elixxir/crypto v0.0.0-20200108005412-8159c60663f9
-	gitlab.com/elixxir/primitives v0.0.0-20200107180006-ed32faae3625
+	gitlab.com/elixxir/primitives v0.0.0-20200108174340-0922447aec92
 	golang.org/x/crypto v0.0.0-20191227163750-53104e6ec876
 	golang.org/x/sys v0.0.0-20200107162124-548cf772de50 // indirect
 	gopkg.in/ini.v1 v1.51.1 // indirect
diff --git a/go.sum b/go.sum
index d0d6dc68d1c99f52447723a12c9cf625b70e6653..6993361b5add8582d97d26d772d84c0feb5531c0 100644
--- a/go.sum
+++ b/go.sum
@@ -224,8 +224,8 @@ github.com/ugorji/go v1.1.4/go.mod h1:uQMGLiO92mf5W77hV/PUCpI3pbzQx3CRekS0kk+RGr
 github.com/ugorji/go/codec v0.0.0-20181204163529-d75b2dcb6bc8/go.mod h1:VFNgLljTbGfSG7qAOspJ7OScBnGdDN/yBr0sguwnwf0=
 github.com/xiang90/probing v0.0.0-20190116061207-43a291ad63a2/go.mod h1:UETIi67q53MR2AWcXfiuqkDkRtnGDLqkBTpCHuJHxtU=
 github.com/xordataexchange/crypt v0.0.3-0.20170626215501-b2862e3d0a77/go.mod h1:aYKd//L2LvnjZzWKhF00oedf4jCCReLcmhLdhm1A27Q=
-gitlab.com/elixxir/comms v0.0.0-20200108001710-b5feabd13539 h1:LlC7HOZZhY+glXXSDImoOGGJkIN1nEvXWhQ+9gw17II=
-gitlab.com/elixxir/comms v0.0.0-20200108001710-b5feabd13539/go.mod h1:DblaR0msnWpNGzNK2fXvXbfGZQNPH4KPiBl4YkkGF4Y=
+gitlab.com/elixxir/comms v0.0.0-20200108181118-c0b7fae36425 h1:k3XivtPenqSFGDd+1UyFef8kpQVh1Wi9NPQwxHXElDo=
+gitlab.com/elixxir/comms v0.0.0-20200108181118-c0b7fae36425/go.mod h1:DblaR0msnWpNGzNK2fXvXbfGZQNPH4KPiBl4YkkGF4Y=
 gitlab.com/elixxir/crypto v0.0.0-20191121235352-86d305a9b253 h1:BqgqJ0mLANRjhAFLvGAcB5AWdgAnFZhsGx0qTk5G+3Y=
 gitlab.com/elixxir/crypto v0.0.0-20191121235352-86d305a9b253/go.mod h1:+46Zj/NE6JEkXExYnzdvvDokPpDbA+fJsRszvrezK9k=
 gitlab.com/elixxir/crypto v0.0.0-20200108005412-8159c60663f9 h1:MJ87g3yMIvA9MTDMojuqaw1tCxU6LIKzxMaH3oEiP4M=
@@ -233,8 +233,8 @@ gitlab.com/elixxir/crypto v0.0.0-20200108005412-8159c60663f9/go.mod h1:+46Zj/NE6
 gitlab.com/elixxir/primitives v0.0.0-20191028233752-882c08b8f095 h1:fnRh0PUwgy0qlWM7xMdk2w5MXh7gvQ0v/xyedn2gbcY=
 gitlab.com/elixxir/primitives v0.0.0-20191028233752-882c08b8f095/go.mod h1:+UiRRWzNpl/WoWUuQtJSoimfXImJAJ5lrrmg0pQKY3g=
 gitlab.com/elixxir/primitives v0.0.0-20200106183011-a68f1e6f188e/go.mod h1:g9v3S34ZUeqGRiOTV7esByK8a5TovJ3YgTv/328ny6w=
-gitlab.com/elixxir/primitives v0.0.0-20200107180006-ed32faae3625 h1:zkCgjA9/OkL0kgufYeK1nLJlLJZJY9ANJ8IEgd7B0eQ=
-gitlab.com/elixxir/primitives v0.0.0-20200107180006-ed32faae3625/go.mod h1:g9v3S34ZUeqGRiOTV7esByK8a5TovJ3YgTv/328ny6w=
+gitlab.com/elixxir/primitives v0.0.0-20200108174340-0922447aec92 h1:2+gzW9Fy2JIaKlirX+db4+X+Pip36Dt6Z5fC1XYF958=
+gitlab.com/elixxir/primitives v0.0.0-20200108174340-0922447aec92/go.mod h1:g9v3S34ZUeqGRiOTV7esByK8a5TovJ3YgTv/328ny6w=
 go.etcd.io/bbolt v1.3.2/go.mod h1:IbVyRI1SCnLcuJnV2u8VeU0CEYM7e686BmAb1XKL+uU=
 go.opencensus.io v0.21.0/go.mod h1:mSImk1erAIZhrmZN+AvHh14ztQfjbGwt4TtuofqLduU=
 go.opencensus.io v0.22.2/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw=
diff --git a/rekey/rekey.go b/rekey/rekey.go
index c0f60a59d65f5a09d5d34d0eda50e3ffeb47b542..c67d42a8ec215cb4fba3930c7c794d9e21e0b33e 100644
--- a/rekey/rekey.go
+++ b/rekey/rekey.go
@@ -34,7 +34,7 @@ type rekeyTriggerListener struct {
 	err error
 }
 
-func (l *rekeyTriggerListener) Hear(msg switchboard.Item, isHeardElsewhere bool) {
+func (l *rekeyTriggerListener) Hear(msg switchboard.Item, isHeardElsewhere bool, i ...interface{}) {
 	m := msg.(*parse.Message)
 	partner := m.GetRecipient()
 	globals.Log.DEBUG.Printf("Received RekeyTrigger message for user %v", *partner)
@@ -51,7 +51,7 @@ type rekeyListener struct {
 	err error
 }
 
-func (l *rekeyListener) Hear(msg switchboard.Item, isHeardElsewhere bool) {
+func (l *rekeyListener) Hear(msg switchboard.Item, isHeardElsewhere bool, i ...interface{}) {
 	m := msg.(*parse.Message)
 	partner := m.GetSender()
 	partnerPubKey := m.GetPayload()
@@ -73,7 +73,7 @@ type rekeyConfirmListener struct {
 	err error
 }
 
-func (l *rekeyConfirmListener) Hear(msg switchboard.Item, isHeardElsewhere bool) {
+func (l *rekeyConfirmListener) Hear(msg switchboard.Item, isHeardElsewhere bool, i ...interface{}) {
 	m := msg.(*parse.Message)
 	partner := m.GetSender()
 	baseKeyHash := m.GetPayload()
diff --git a/rekey/rekey_test.go b/rekey/rekey_test.go
index 603db5645313817b19b0b919346e744c62d682ff..c0767b8ea56c36aebbd87dff228abbf77f324019 100644
--- a/rekey/rekey_test.go
+++ b/rekey/rekey_test.go
@@ -176,7 +176,7 @@ func TestRekeyTrigger(t *testing.T) {
 		Receiver:     partnerID,
 	}
 	session.GetSwitchboard().Speak(msg)
-
+	time.Sleep(time.Second)
 	// Check that error occurred in rekeytrigger for repeated message
 	if rekeyTriggerList.err == nil {
 		t.Errorf("RekeyTrigger should have returned error")
@@ -199,7 +199,7 @@ func TestRekeyConfirm(t *testing.T) {
 		Receiver:     session.GetCurrentUser().User,
 	}
 	session.GetSwitchboard().Speak(msg)
-
+	time.Sleep(time.Second)
 	// Check that error occurred in RekeyConfirm when hash is wrong
 	if rekeyConfirmList.err == nil {
 		t.Errorf("RekeyConfirm should have returned error")
@@ -218,7 +218,7 @@ func TestRekeyConfirm(t *testing.T) {
 		Receiver:     session.GetCurrentUser().User,
 	}
 	session.GetSwitchboard().Speak(msg)
-
+	time.Sleep(time.Second)
 	// Check no error occurred in rekeyConfirm processing
 	if rekeyConfirmList.err != nil {
 		t.Errorf("RekeyConfirm returned error: %v", rekeyConfirmList.err.Error())
@@ -244,7 +244,7 @@ func TestRekeyConfirm(t *testing.T) {
 		Receiver:     session.GetCurrentUser().User,
 	}
 	session.GetSwitchboard().Speak(msg)
-
+	time.Sleep(time.Second)
 	// Check that error occurred in RekeyConfirm for repeated message
 	if rekeyConfirmList.err == nil {
 		t.Errorf("RekeyConfirm should have returned error")
@@ -345,7 +345,7 @@ func TestRekey_Errors(t *testing.T) {
 		Receiver:     session.GetCurrentUser().User,
 	}
 	session.GetSwitchboard().Speak(msg)
-
+	time.Sleep(time.Second)
 	// Check error occurred on Rekey
 	if rekeyList.err == nil {
 		t.Errorf("Rekey should have returned error")