diff --git a/channels/adminListener.go b/channels/adminListener.go
index 8a4d5cabd5c5f9e140e257b8a729dd4fd349ddab..8ee876bc2e6937b05432074c1ff0b85f96ecadec 100644
--- a/channels/adminListener.go
+++ b/channels/adminListener.go
@@ -44,9 +44,9 @@ func (al *adminListener) Listen(payload []byte,
 
 	// check the round to ensure the message is not a replay
 	if id.Round(cm.RoundID) != round.ID {
-		jww.WARN.Printf("The round message %s send on %d referenced "+
+		jww.WARN.Printf("The round message %s send on %s referenced "+
 			"(%d) was not the same as the round the message was found on (%d)",
-			msgID, al.chID, cm.RoundID, round.ID, al.chID)
+			msgID, al.chID, cm.RoundID, round.ID)
 		return
 	}
 
diff --git a/channels/emoji.go b/channels/emoji.go
index d65844745e2c81ea549a962a81999fefc09e7214..c3a9f7456f54b56a36ceca3b5daa4b8eff8a4556 100644
--- a/channels/emoji.go
+++ b/channels/emoji.go
@@ -1,8 +1,8 @@
 package channels
 
 import (
-	"github.com/forPelevin/gomoji"
 	"github.com/pkg/errors"
+	jww "github.com/spf13/jwalterweatherman"
 )
 
 var InvalidReaction = errors.New("The reaction is not valid, " +
@@ -10,13 +10,6 @@ var InvalidReaction = errors.New("The reaction is not valid, " +
 
 // ValidateReaction checks that the reaction only contains a single Emoji
 func ValidateReaction(reaction string) error {
-	if len(gomoji.RemoveEmojis(reaction)) > 0 {
-		return InvalidReaction
-	}
-
-	if len(gomoji.FindAll(reaction)) != 1 {
-		return InvalidReaction
-	}
-
+	jww.WARN.Printf("Reaction Validation Not Yet Implemented")
 	return nil
 }
diff --git a/channels/messages.go b/channels/messages.go
index cc071a74c92ba452deb4f353d6eb783c2e9f6cee..15ec90f8a3291cc85c067ccc61caa70cbfd4cb2b 100644
--- a/channels/messages.go
+++ b/channels/messages.go
@@ -30,7 +30,7 @@ func NewUserMessageInternal(ursMsg *UserMessage) (*UserMessageInternal, error) {
 	return &UserMessageInternal{
 		userMessage:    ursMsg,
 		channelMessage: channelMessage,
-		messageID:      channel.MakeMessageID(channelMessage.Payload),
+		messageID:      channel.MakeMessageID(ursMsg.Message),
 	}, nil
 }
 
diff --git a/channels/messages_test.go b/channels/messages_test.go
index 27101a1c26e15bbdb58aef297ee88022a8bd9e60..afcb89d56261df9495aba13c3cabc76548c04918 100644
--- a/channels/messages_test.go
+++ b/channels/messages_test.go
@@ -8,14 +8,18 @@
 package channels
 
 import (
-	"bytes"
 	"github.com/golang/protobuf/proto"
+	"gitlab.com/elixxir/crypto/channel"
+	"reflect"
 	"testing"
 )
 
 func TestUserMessageInternal_GetChannelMessage(t *testing.T) {
 	channelMsg := &ChannelMessage{
-		Payload: []byte("ban_badUSer"),
+		Lease:       69,
+		RoundID:     42,
+		PayloadType: 7,
+		Payload:     []byte("ban_badUSer"),
 	}
 
 	serialized, err := proto.Marshal(channelMsg)
@@ -33,10 +37,121 @@ func TestUserMessageInternal_GetChannelMessage(t *testing.T) {
 	internal, _ := NewUserMessageInternal(usrMsg)
 	received := internal.GetChannelMessage()
 
-	if !bytes.Equal(received.Payload, channelMsg.Payload) {
+	if !reflect.DeepEqual(received.Payload, channelMsg.Payload) ||
+		received.Lease != channelMsg.Lease ||
+		received.RoundID != channelMsg.RoundID ||
+		received.PayloadType != channelMsg.PayloadType {
 		t.Fatalf("GetChannelMessage did not return expected data."+
 			"\nExpected: %v"+
 			"\nReceived: %v", channelMsg, received)
 	}
+}
+
+func TestUserMessageInternal_GetUserMessage(t *testing.T) {
+	channelMsg := &ChannelMessage{
+		Lease:       69,
+		RoundID:     42,
+		PayloadType: 7,
+		Payload:     []byte("ban_badUSer"),
+	}
+
+	serialized, err := proto.Marshal(channelMsg)
+	if err != nil {
+		t.Fatalf("Marshal error: %v", err)
+	}
+
+	usrMsg := &UserMessage{
+		Message:             serialized,
+		ValidationSignature: []byte("sig"),
+		Signature:           []byte("sig2"),
+		Username:            "hunter2",
+		ECCPublicKey:        []byte("key"),
+		UsernameLease:       666,
+	}
+
+	internal, _ := NewUserMessageInternal(usrMsg)
+	received := internal.GetUserMessage()
+
+	if !reflect.DeepEqual(received.Message, usrMsg.Message) ||
+		received.Username != usrMsg.Username ||
+		received.UsernameLease != usrMsg.UsernameLease ||
+		!reflect.DeepEqual(received.Signature, usrMsg.Signature) ||
+		!reflect.DeepEqual(received.ValidationSignature, usrMsg.ValidationSignature) ||
+		!reflect.DeepEqual(received.ECCPublicKey, usrMsg.ECCPublicKey) {
+		t.Fatalf("GetUserMessage did not return expected data."+
+			"\nExpected: %v"+
+			"\nReceived: %v", usrMsg, received)
+	}
+}
+
+func TestUserMessageInternal_GetMessageID(t *testing.T) {
+	channelMsg := &ChannelMessage{
+		Lease:       69,
+		RoundID:     42,
+		PayloadType: 7,
+		Payload:     []byte("ban_badUSer"),
+	}
+
+	serialized, err := proto.Marshal(channelMsg)
+	if err != nil {
+		t.Fatalf("Marshal error: %v", err)
+	}
+
+	usrMsg := &UserMessage{
+		Message:             serialized,
+		ValidationSignature: []byte("sig"),
+		Signature:           []byte("sig2"),
+		Username:            "hunter2",
+		ECCPublicKey:        []byte("key"),
+		UsernameLease:       666,
+	}
+
+	internal, _ := NewUserMessageInternal(usrMsg)
+	received := internal.GetMessageID()
+
+	expected := channel.MakeMessageID(usrMsg.Message)
+
+	if !reflect.DeepEqual(expected, received) {
+		t.Fatalf("GetMessageID did not return expected data."+
+			"\nExpected: %v"+
+			"\nReceived: %v", expected, received)
+	}
+}
+
+// Ensures the serialization hasn't changed, changing the message IDs. The
+// protocol is tolerant of this because only the sender seralizes, but
+// it would be good to know when this changes. If this test breaks, report it,
+// but it should be safe to update the expected
+func TestUserMessageInternal_GetMessageID_Consistency(t *testing.T) {
+	expected := "ChMsgID-cfw4O6M47N9pqdtTcQjm/SSVqehTPGQd7cAMrNP9bcc="
+
+	channelMsg := &ChannelMessage{
+		Lease:       69,
+		RoundID:     42,
+		PayloadType: 7,
+		Payload:     []byte("ban_badUSer"),
+	}
 
+	serialized, err := proto.Marshal(channelMsg)
+	if err != nil {
+		t.Fatalf("Marshal error: %v", err)
+	}
+
+	usrMsg := &UserMessage{
+		Message:             serialized,
+		ValidationSignature: []byte("sig"),
+		Signature:           []byte("sig2"),
+		Username:            "hunter2",
+		ECCPublicKey:        []byte("key"),
+		UsernameLease:       666,
+	}
+
+	internal, _ := NewUserMessageInternal(usrMsg)
+	received := internal.GetMessageID()
+
+	if expected != received.String() {
+		t.Fatalf("GetMessageID did not return expected data."+
+			"\nExpected: %v"+
+			"\nReceived: %v", expected, received)
+	}
 }
diff --git a/channels/userListener.go b/channels/userListener.go
index d81c5485701e28be109abb04523b3c291eb1afca..366342457fcc5426a1949205703f64ab1405d319 100644
--- a/channels/userListener.go
+++ b/channels/userListener.go
@@ -48,7 +48,7 @@ func (gul *userListener) Listen(payload []byte,
 	if id.Round(cm.RoundID) != round.ID {
 		jww.WARN.Printf("The round message %s send on %d referenced "+
 			"(%d) was not the same as the round the message was found on (%d)",
-			msgID, gul.chID, cm.RoundID, round.ID, gul.chID)
+			msgID, gul.chID, cm.RoundID, round.ID)
 		return
 	}