diff --git a/configure_postgres.sh b/configure_postgres.sh
old mode 100644
new mode 100755
diff --git a/globals/user.go b/globals/user.go
index 90ea4919aa2bb08183064cce0c24247a6057334a..dc78f21c82c5b8162b98e009491fbc9ecb774b26 100644
--- a/globals/user.go
+++ b/globals/user.go
@@ -9,6 +9,7 @@ package globals
 import (
 	pb "gitlab.com/privategrity/comms/mixmessages"
 	"gitlab.com/privategrity/crypto/cyclic"
+	"github.com/spf13/jwalterweatherman"
 )
 
 // Globally initiated UserRegistry
@@ -78,6 +79,7 @@ func (u *User) DeepCopy() *User {
 
 	nu.Id = u.Id
 	nu.Address = u.Address
+	nu.Nick = u.Nick
 
 	nu.Transmission = *u.Transmission.DeepCopy()
 
@@ -93,7 +95,7 @@ func (u *User) DeepCopy() *User {
 // NewUser creates a new User object with default fields and given address.
 func (m *UserMap) NewUser(address string) *User {
 	idCounter++
-	return &User{Id: idCounter - 1, Address: address,
+	return &User{Id: idCounter - 1, Address: address, Nick: "",
 		// TODO: each user should have unique base and secret keys
 		Transmission: ForwardKey{BaseKey: cyclic.NewIntFromString(
 			"c1248f42f8127999e07c657896a26b56fd9a499c6199e1265053132451128f52", 16),
@@ -135,6 +137,7 @@ func (m *UserMap) CountUsers() int {
 }
 
 func (m *UserMap) GetNickList() (ids []uint64, nicks []string) {
+
 	userCount := m.CountUsers()
 
 	nicks = make([]string, 0, userCount)
@@ -143,6 +146,8 @@ func (m *UserMap) GetNickList() (ids []uint64, nicks []string) {
 		if user != nil {
 			nicks = append(nicks, user.Nick)
 			ids = append(ids, user.Id)
+		} else {
+			jwalterweatherman.FATAL.Panicf("A user was nil.")
 		}
 	}
 
diff --git a/globals/userDatabase.go b/globals/userDatabase.go
index 5cba1fd30b2bc19ae02e8ccff97a3fbcec5e1b75..36ae007b66dd079eb4a6b4c911608baee8e83d74 100644
--- a/globals/userDatabase.go
+++ b/globals/userDatabase.go
@@ -136,6 +136,7 @@ func (m *UserDatabase) UpsertUser(user *User) {
 		// On conflict, update the user's fields
 		OnConflict("(id) DO UPDATE").
 		Set("address = EXCLUDED.address," +
+			"nick = EXCLUDED.nick," +
 			"transmission_base_key = EXCLUDED.transmission_base_key," +
 			"transmission_recursive_key = EXCLUDED.transmission_recursive_key," +
 			"reception_base_key = EXCLUDED.reception_base_key," +
@@ -144,8 +145,7 @@ func (m *UserDatabase) UpsertUser(user *User) {
 		// Otherwise, insert the new user
 		Insert()
 	if err != nil {
-		jww.FATAL.Printf("Unable to upsert user %d!", user.Id)
-		panic(err)
+		jww.FATAL.Panicf("Unable to upsert user %d! %s", user.Id, err.Error())
 	}
 }
 
@@ -153,8 +153,7 @@ func (m *UserDatabase) UpsertUser(user *User) {
 func (m *UserDatabase) CountUsers() int {
 	count, err := m.db.Model(&UserDB{}).Count()
 	if err != nil {
-		jww.FATAL.Println("Unable to count users!")
-		panic(err)
+		jww.FATAL.Panicf("Unable to count users! %s", err.Error())
 	}
 	return count
 }
@@ -167,8 +166,7 @@ func (m *UserDatabase) GetNickList() (ids []uint64, nicks []string) {
 	err := m.db.Model(&model).Column("id", "nick").Select(&ids, &nicks)
 
 	if err != nil {
-		jww.FATAL.Println("Unable to get contact list!")
-		panic(err)
+		jww.FATAL.Panicf("Unable to get contact list! %s", err.Error())
 	}
 
 	return ids, nicks
diff --git a/globals/user_test.go b/globals/user_test.go
index 11e76970ba29cb4166ebef45001897124b48c8e9..0f329934ec48b8505f2b3a6f98f83a71fcc1a433 100644
--- a/globals/user_test.go
+++ b/globals/user_test.go
@@ -15,6 +15,7 @@ import (
 func TestUserRegistry(t *testing.T) {
 
 	testUser := Users.NewUser("Someplace")
+	testUser.Nick = "Me"
 	numUsers := Users.CountUsers()
 	Users.DeleteUser(testUser.Id)
 	Users.UpsertUser(testUser)
@@ -25,13 +26,17 @@ func TestUserRegistry(t *testing.T) {
 	}
 
 	getUser.Transmission.RecursiveKey.SetInt64(5)
+	getUser.Nick = "Michael"
 
 	Users.UpsertUser(getUser)
 
 	getUser2, _ := Users.GetUser(testUser.Id)
 
-	if getUser2.Transmission.RecursiveKey.Int64() != 5 {
-		t.Errorf("UpsertUser: User did not save!")
+	if getUser2.Transmission.RecursiveKey.Int64() != 5 || getUser2.
+		Nick != "Michael" {
+		t.Errorf("UpsertUser: User did not save! Got: %v, %v; expected: %v, " +
+			"%v", getUser2.Transmission.RecursiveKey.Int64(), getUser2.Nick,
+				5, "Michael")
 	}
 
 	Users.DeleteUser(testUser.Id)
diff --git a/io/clientGetContactList.go b/io/requestContactList.go
similarity index 86%
rename from io/clientGetContactList.go
rename to io/requestContactList.go
index f2c60083065b57760ff417b988fa8af4f7d3a451..e228a5f538299ec24bf1b2aa30afb508462badf6 100644
--- a/io/clientGetContactList.go
+++ b/io/requestContactList.go
@@ -12,7 +12,7 @@ import (
 )
 
 func (s ServerImpl) RequestContactList(inputMsg *pb.
-	ContactPoll) *pb.ContactMessage {
+ContactPoll) *pb.ContactMessage {
 	userCount := globals.Users.CountUsers()
 
 	contactList := pb.ContactMessage{
@@ -22,8 +22,8 @@ func (s ServerImpl) RequestContactList(inputMsg *pb.
 	idList, nickList := globals.Users.GetNickList()
 
 	for i := 0; i < userCount; i++ {
-		contactList.Contacts[i].Nick = nickList[i]
-		contactList.Contacts[i].UserID = idList[i]
+		contactList.Contacts[i] = &pb.Contact{Nick: nickList[i],
+			UserID: idList[i]}
 	}
 
 	return &contactList
diff --git a/io/requestContactList_test.go b/io/requestContactList_test.go
new file mode 100644
index 0000000000000000000000000000000000000000..51f6b51561ea4adecf43edb41ca0b210ff58d6be
--- /dev/null
+++ b/io/requestContactList_test.go
@@ -0,0 +1,43 @@
+////////////////////////////////////////////////////////////////////////////////
+// Copyright © 2018 Privategrity Corporation                                   /
+//                                                                             /
+// All rights reserved.                                                        /
+////////////////////////////////////////////////////////////////////////////////
+
+package io
+
+import (
+	"testing"
+	"gitlab.com/privategrity/server/globals"
+	pb "gitlab.com/privategrity/comms/mixmessages"
+	"gitlab.com/privategrity/comms/mixclient"
+)
+
+// MARK
+func TestRequestContactList(t *testing.T) {
+	// empty user registry from previous tests so we can make sure that our
+	// user's first in the map
+	globals.Users.DeleteUser(1)
+	user := globals.Users.NewUser("test") // Create user
+	user.Nick = "Michael"
+	globals.Users.UpsertUser(user)        // Insert user into registry
+	user = globals.Users.NewUser("test")
+	user.Nick = "Me"
+	globals.Users.UpsertUser(user)
+
+	// Currently we just return all the nicks
+	contacts, err := mixclient.RequestContactList(NextServer, &pb.ContactPoll{})
+	if err != nil {
+		t.Errorf("RequestContactList() returned an error: %v", err.Error())
+	}
+
+	expectedNicks := []string{"Michael", "Me"}
+	for i := 0; i < len(expectedNicks); i++ {
+		if contacts.Contacts[i] == nil {
+			t.Errorf("Got a nil nick at index %v.", i)
+		} else if expectedNicks[i] != contacts.Contacts[i].Nick {
+			t.Errorf("Got an unexpected nick at index %v. Got: %v, " +
+				"expected: %v", i, contacts.Contacts[i].Nick, expectedNicks[i])
+		}
+	}
+}
\ No newline at end of file