diff --git a/channels/nickname.go b/channels/nickname.go
index 7d3ef4c8df37b086275f80b1d27f5675c074acb7..5116b597f754c09ce1b6bae06ec878c5192debfe 100644
--- a/channels/nickname.go
+++ b/channels/nickname.go
@@ -77,8 +77,8 @@ func (nm *nicknameManager) DeleteNickname(ch *id.ID) error {
 // channelIDToNickname is a serialization structure. This is used by the save
 // and load functions to serialize the nicknameManager's byChannel map.
 type channelIDToNickname struct {
-	channelId id.ID
-	nickname  string
+	ChannelId id.ID
+	Nickname  string
 }
 
 // save stores the nickname manager to disk. The caller of this must
@@ -87,8 +87,8 @@ func (nm *nicknameManager) save() error {
 	list := make([]channelIDToNickname, 0)
 	for chId, nickname := range nm.byChannel {
 		list = append(list, channelIDToNickname{
-			channelId: chId,
-			nickname:  nickname,
+			ChannelId: chId,
+			Nickname:  nickname,
 		})
 	}
 
@@ -120,7 +120,7 @@ func (nm *nicknameManager) load() error {
 
 	for i := range list {
 		current := list[i]
-		nm.byChannel[current.channelId] = current.nickname
+		nm.byChannel[current.ChannelId] = current.Nickname
 	}
 
 	return nil
diff --git a/channels/nickname_test.go b/channels/nickname_test.go
index dc0cad8f05fd5a24d2e033160f308a23bab68e08..d8c5786e3e7e14c5dd55c06a3f2c9c0079bf3819 100644
--- a/channels/nickname_test.go
+++ b/channels/nickname_test.go
@@ -29,7 +29,37 @@ func TestNicknameManager_SetGetNickname(t *testing.T) {
 				"\nReceived: %s", nickname, received)
 		}
 	}
+}
+
+// Unit test. Tests that once you set a nickname with SetNickname, you can
+// retrieve the nickname using GetNickname after a reload.
+func TestNicknameManager_SetGetNickname_Reload(t *testing.T) {
+	kv := versioned.NewKV(ekv.MakeMemstore())
+	nm := loadOrNewNicknameManager(kv)
+
+	for i := 0; i < numTests; i++ {
+		chId := id.NewIdFromUInt(uint64(i), id.User, t)
+		nickname := "nickname#" + strconv.Itoa(i)
+		err := nm.SetNickname(nickname, chId)
+		if err != nil {
+			t.Fatalf("SetNickname error when setting %s: %+v", nickname, err)
+		}
+	}
+
+	nm2 := loadOrNewNicknameManager(kv)
 
+	for i := 0; i < numTests; i++ {
+		chId := id.NewIdFromUInt(uint64(i), id.User, t)
+		// nickname := "nickname#" + strconv.Itoa(i)
+		nick, exists := nm2.GetNickname(chId)
+		if !exists {
+			t.Fatalf("Nickname %d not found  ", i)
+		}
+		expected := "nickname#" + strconv.Itoa(i)
+		if nick != expected {
+			t.Fatalf("Nickname %d not found, expected: %s, received: %s ", i, expected, nick)
+		}
+	}
 }
 
 // Error case: Tests that nicknameManager.GetNickname returns a false boolean