diff --git a/channels/adminListener_test.go b/channels/adminListener_test.go
index f52e8fbec8669053afd0d791e28bdbed9fc2cb77..bd5f7c459b937ec43afa84f93e871cd86187c89b 100644
--- a/channels/adminListener_test.go
+++ b/channels/adminListener_test.go
@@ -9,6 +9,7 @@ package channels
 
 import (
 	"bytes"
+	"gitlab.com/xx_network/primitives/netTime"
 	"testing"
 	"time"
 
@@ -54,7 +55,7 @@ func TestAdminListener_Listen(t *testing.T) {
 	chID[0] = 1
 
 	r := rounds.Round{ID: 420, Timestamps: make(map[states.Round]time.Time)}
-	r.Timestamps[states.QUEUED] = time.Now()
+	r.Timestamps[states.QUEUED] = netTime.Now()
 
 	cm := &ChannelMessage{
 		Lease:       int64(time.Hour),
@@ -116,7 +117,7 @@ func TestAdminListener_Listen_BadRound(t *testing.T) {
 	chID[0] = 1
 
 	r := rounds.Round{ID: 420, Timestamps: make(map[states.Round]time.Time)}
-	r.Timestamps[states.QUEUED] = time.Now()
+	r.Timestamps[states.QUEUED] = netTime.Now()
 
 	cm := &ChannelMessage{
 		Lease: int64(time.Hour),
@@ -159,7 +160,7 @@ func TestAdminListener_Listen_BadChannelMessage(t *testing.T) {
 	chID[0] = 1
 
 	r := rounds.Round{ID: 420, Timestamps: make(map[states.Round]time.Time)}
-	r.Timestamps[states.QUEUED] = time.Now()
+	r.Timestamps[states.QUEUED] = netTime.Now()
 
 	cmSerial := []byte("blarg")
 
@@ -192,7 +193,7 @@ func TestAdminListener_Listen_BadSizedBroadcast(t *testing.T) {
 	chID[0] = 1
 
 	r := rounds.Round{ID: 420, Timestamps: make(map[states.Round]time.Time)}
-	r.Timestamps[states.QUEUED] = time.Now()
+	r.Timestamps[states.QUEUED] = netTime.Now()
 
 	cm := &ChannelMessage{
 		Lease: int64(time.Hour),
diff --git a/channels/dummyNameServer_test.go b/channels/dummyNameServer_test.go
index 79b6dc93610b47cb149529ac9b165e8c6e50d450..183da2abaa10cbd811048023c6447f61f3261ae4 100644
--- a/channels/dummyNameServer_test.go
+++ b/channels/dummyNameServer_test.go
@@ -10,8 +10,8 @@ package channels
 import (
 	"crypto/ed25519"
 	"gitlab.com/xx_network/crypto/csprng"
+	"gitlab.com/xx_network/primitives/netTime"
 	"testing"
-	"time"
 )
 
 const numTests = 10
@@ -100,7 +100,7 @@ func TestDummyNameService_ValidateChannelMessage(t *testing.T) {
 	}
 
 	for i := 0; i < numTests; i++ {
-		if !ns.ValidateChannelMessage(username, time.Now(), nil, nil) {
+		if !ns.ValidateChannelMessage(username, netTime.Now(), nil, nil) {
 			t.Errorf("ValidateChannelMessage returned false. This should " +
 				"only ever return true.")
 		}
diff --git a/channels/eventModel_test.go b/channels/eventModel_test.go
index 4e39fe96e6e01b50ff7dac4766ee580e9b30ddd1..60ec58fcd4bee882d612dd6f5d20cae4ba571b0b 100644
--- a/channels/eventModel_test.go
+++ b/channels/eventModel_test.go
@@ -17,6 +17,7 @@ import (
 	cryptoChannel "gitlab.com/elixxir/crypto/channel"
 	"gitlab.com/elixxir/primitives/states"
 	"gitlab.com/xx_network/primitives/id"
+	"gitlab.com/xx_network/primitives/netTime"
 	"math/rand"
 	"reflect"
 	"runtime"
@@ -243,10 +244,10 @@ func TestEvents_triggerEvents(t *testing.T) {
 	umi, _, _ := builtTestUMI(t, mt)
 
 	r := rounds.Round{ID: 420, Timestamps: make(map[states.Round]time.Time)}
-	r.Timestamps[states.QUEUED] = time.Now()
+	r.Timestamps[states.QUEUED] = netTime.Now()
 
 	//call the trigger
-	_, err = e.triggerEvent(chID, umi, time.Now(), receptionID.EphemeralIdentity{}, r, Delivered)
+	_, err = e.triggerEvent(chID, umi, netTime.Now(), receptionID.EphemeralIdentity{}, r, Delivered)
 	if err != nil {
 		t.Fatalf(err.Error())
 	}
@@ -314,10 +315,10 @@ func TestEvents_triggerEvents_noChannel(t *testing.T) {
 	umi, _, _ := builtTestUMI(t, mt)
 
 	r := rounds.Round{ID: 420, Timestamps: make(map[states.Round]time.Time)}
-	r.Timestamps[states.QUEUED] = time.Now()
+	r.Timestamps[states.QUEUED] = netTime.Now()
 
 	//call the trigger
-	_, err := e.triggerEvent(chID, umi, time.Now(), receptionID.EphemeralIdentity{}, r, Delivered)
+	_, err := e.triggerEvent(chID, umi, netTime.Now(), receptionID.EphemeralIdentity{}, r, Delivered)
 	if err != nil {
 		t.Fatalf(err.Error())
 	}
@@ -350,12 +351,12 @@ func TestEvents_triggerAdminEvents(t *testing.T) {
 	u, _, cm := builtTestUMI(t, mt)
 
 	r := rounds.Round{ID: 420, Timestamps: make(map[states.Round]time.Time)}
-	r.Timestamps[states.QUEUED] = time.Now()
+	r.Timestamps[states.QUEUED] = netTime.Now()
 
 	msgID := cryptoChannel.MakeMessageID(u.userMessage.Message)
 
 	//call the trigger
-	_, err = e.triggerAdminEvent(chID, cm, time.Now(), msgID, receptionID.EphemeralIdentity{}, r,
+	_, err = e.triggerAdminEvent(chID, cm, netTime.Now(), msgID, receptionID.EphemeralIdentity{}, r,
 		Delivered)
 	if err != nil {
 		t.Fatalf(err.Error())
@@ -425,12 +426,12 @@ func TestEvents_triggerAdminEvents_noChannel(t *testing.T) {
 	u, _, cm := builtTestUMI(t, mt)
 
 	r := rounds.Round{ID: 420, Timestamps: make(map[states.Round]time.Time)}
-	r.Timestamps[states.QUEUED] = time.Now()
+	r.Timestamps[states.QUEUED] = netTime.Now()
 
 	msgID := cryptoChannel.MakeMessageID(u.userMessage.Message)
 
 	//call the trigger
-	_, err := e.triggerAdminEvent(chID, cm, time.Now(), msgID, receptionID.EphemeralIdentity{}, r,
+	_, err := e.triggerAdminEvent(chID, cm, netTime.Now(), msgID, receptionID.EphemeralIdentity{}, r,
 		Delivered)
 	if err != nil {
 		t.Fatalf(err.Error())
@@ -472,12 +473,12 @@ func TestEvents_receiveTextMessage_Message(t *testing.T) {
 	}
 
 	senderNickname := "Alice"
-	ts := time.Now()
+	ts := netTime.Now()
 
 	lease := 69 * time.Minute
 
 	r := rounds.Round{ID: 420, Timestamps: make(map[states.Round]time.Time)}
-	r.Timestamps[states.QUEUED] = time.Now()
+	r.Timestamps[states.QUEUED] = netTime.Now()
 
 	//call the handler
 	e.receiveTextMessage(chID, msgID, 0, senderNickname,
@@ -545,12 +546,12 @@ func TestEvents_receiveTextMessage_Reply(t *testing.T) {
 	msgID := cryptoChannel.MakeMessageID(textMarshaled)
 
 	senderUsername := "Alice"
-	ts := time.Now()
+	ts := netTime.Now()
 
 	lease := 69 * time.Minute
 
 	r := rounds.Round{ID: 420, Timestamps: make(map[states.Round]time.Time)}
-	r.Timestamps[states.QUEUED] = time.Now()
+	r.Timestamps[states.QUEUED] = netTime.Now()
 
 	rng := rand.New(rand.NewSource(64))
 
@@ -625,12 +626,12 @@ func TestEvents_receiveTextMessage_Reply_BadReply(t *testing.T) {
 	msgID := cryptoChannel.MakeMessageID(textMarshaled)
 
 	senderUsername := "Alice"
-	ts := time.Now()
+	ts := netTime.Now()
 
 	lease := 69 * time.Minute
 
 	r := rounds.Round{ID: 420, Timestamps: make(map[states.Round]time.Time)}
-	r.Timestamps[states.QUEUED] = time.Now()
+	r.Timestamps[states.QUEUED] = netTime.Now()
 
 	rng := rand.New(rand.NewSource(64))
 
@@ -705,12 +706,12 @@ func TestEvents_receiveReaction(t *testing.T) {
 	msgID := cryptoChannel.MakeMessageID(textMarshaled)
 
 	senderUsername := "Alice"
-	ts := time.Now()
+	ts := netTime.Now()
 
 	lease := 69 * time.Minute
 
 	r := rounds.Round{ID: 420, Timestamps: make(map[states.Round]time.Time)}
-	r.Timestamps[states.QUEUED] = time.Now()
+	r.Timestamps[states.QUEUED] = netTime.Now()
 
 	rng := rand.New(rand.NewSource(64))
 
@@ -785,12 +786,12 @@ func TestEvents_receiveReaction_InvalidReactionMessageID(t *testing.T) {
 	msgID := cryptoChannel.MakeMessageID(textMarshaled)
 
 	senderUsername := "Alice"
-	ts := time.Now()
+	ts := netTime.Now()
 
 	lease := 69 * time.Minute
 
 	r := rounds.Round{ID: 420, Timestamps: make(map[states.Round]time.Time)}
-	r.Timestamps[states.QUEUED] = time.Now()
+	r.Timestamps[states.QUEUED] = netTime.Now()
 
 	rng := rand.New(rand.NewSource(64))
 
@@ -855,12 +856,12 @@ func TestEvents_receiveReaction_InvalidReactionContent(t *testing.T) {
 	msgID := cryptoChannel.MakeMessageID(textMarshaled)
 
 	senderUsername := "Alice"
-	ts := time.Now()
+	ts := netTime.Now()
 
 	lease := 69 * time.Minute
 
 	r := rounds.Round{ID: 420, Timestamps: make(map[states.Round]time.Time)}
-	r.Timestamps[states.QUEUED] = time.Now()
+	r.Timestamps[states.QUEUED] = netTime.Now()
 
 	rng := rand.New(rand.NewSource(64))
 
diff --git a/channels/mutateTimestamp_test.go b/channels/mutateTimestamp_test.go
index 759053ed9353c9c7b30e21d63d8435961cc5c004..120fd44156c2c1616a876d60db27725caebd6eaf 100644
--- a/channels/mutateTimestamp_test.go
+++ b/channels/mutateTimestamp_test.go
@@ -8,6 +8,7 @@
 package channels
 
 import (
+	"gitlab.com/xx_network/primitives/netTime"
 	"math/rand"
 	"testing"
 	"time"
@@ -33,10 +34,10 @@ func abs(n int64) int64 {
 
 func TestMutateTimestampDeltaAverage(t *testing.T) {
 	samples := 10000
-	t1 := time.Now()
+	t1 := netTime.Now()
 	sum := int64(0)
 
-	rng := rand.New(rand.NewSource(time.Now().UnixNano()))
+	rng := rand.New(rand.NewSource(netTime.Now().UnixNano()))
 
 	for i := 0; i < samples; i++ {
 		var msgID channel.MessageID
diff --git a/channels/nickname_test.go b/channels/nickname_test.go
index d8c5786e3e7e14c5dd55c06a3f2c9c0079bf3819..cf535245f82bb1e4b5c4caf5ac0b65f6355b4653 100644
--- a/channels/nickname_test.go
+++ b/channels/nickname_test.go
@@ -50,7 +50,6 @@ func TestNicknameManager_SetGetNickname_Reload(t *testing.T) {
 
 	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)
diff --git a/channels/sendTracker.go b/channels/sendTracker.go
index 69fe04a1968d3c9157e47df2a257fe4e02f9dfb7..4de21d4221f2ef3be1bedec5105d6f537f4a2e12 100644
--- a/channels/sendTracker.go
+++ b/channels/sendTracker.go
@@ -18,6 +18,7 @@ import (
 	cryptoChannel "gitlab.com/elixxir/crypto/channel"
 	"gitlab.com/elixxir/primitives/states"
 	"gitlab.com/xx_network/primitives/id"
+	"gitlab.com/xx_network/primitives/netTime"
 	"sync"
 	"time"
 )
@@ -139,7 +140,7 @@ func (st *sendTracker) storeSent() error {
 	}
 	return st.kv.Set(sendTrackerStorageKey, &versioned.Object{
 		Version:   sendTrackerStorageVersion,
-		Timestamp: time.Now(),
+		Timestamp: netTime.Now(),
 		Data:      data,
 	})
 }
@@ -154,7 +155,7 @@ func (st *sendTracker) storeUnsent() error {
 
 	return st.kv.Set(sendTrackerUnsentStorageKey, &versioned.Object{
 		Version:   sendTrackerUnsentStorageVersion,
-		Timestamp: time.Now(),
+		Timestamp: netTime.Now(),
 		Data:      data,
 	})
 }
@@ -198,7 +199,7 @@ func (st *sendTracker) denotePendingSend(channelID *id.ID,
 	umi *userMessageInternal) (uint64, error) {
 	// for a timestamp for the message, use 1 second from now to
 	// approximate the lag due to round submission
-	ts := time.Now().Add(oneSecond)
+	ts := netTime.Now().Add(oneSecond)
 
 	// submit the message to the UI
 	uuid, err := st.trigger(channelID, umi, ts, receptionID.EphemeralIdentity{},
@@ -219,7 +220,7 @@ func (st *sendTracker) denotePendingAdminSend(channelID *id.ID,
 	cm *ChannelMessage) (uint64, error) {
 	// for a timestamp for the message, use 1 second from now to
 	// approximate the lag due to round submission
-	ts := time.Now().Add(oneSecond)
+	ts := netTime.Now().Add(oneSecond)
 
 	// submit the message to the UI
 	uuid, err := st.adminTrigger(channelID, cm, ts, cryptoChannel.MessageID{},
diff --git a/channels/sendTracker_test.go b/channels/sendTracker_test.go
index fdcd9f86cf66b52b373ebd78dccec70022a69537..e3e90b6180358f02e5e4ce2fd4500dc39982fdf0 100644
--- a/channels/sendTracker_test.go
+++ b/channels/sendTracker_test.go
@@ -10,6 +10,7 @@ import (
 	"gitlab.com/elixxir/ekv"
 	"gitlab.com/xx_network/primitives/id"
 	"gitlab.com/xx_network/primitives/id/ephemeral"
+	"gitlab.com/xx_network/primitives/netTime"
 	"testing"
 	"time"
 )
@@ -69,7 +70,7 @@ func TestSendTracker_MessageReceive(t *testing.T) {
 	uuid, err := st.denotePendingSend(cid, &userMessageInternal{
 		userMessage: &UserMessage{},
 		channelMessage: &ChannelMessage{
-			Lease:       time.Now().UnixNano(),
+			Lease:       netTime.Now().UnixNano(),
 			RoundID:     uint64(rid),
 			PayloadType: 0,
 			Payload:     []byte("hello"),
@@ -94,7 +95,7 @@ func TestSendTracker_MessageReceive(t *testing.T) {
 	uuid2, err := st.denotePendingSend(cid2, &userMessageInternal{
 		userMessage: &UserMessage{},
 		channelMessage: &ChannelMessage{
-			Lease:       time.Now().UnixNano(),
+			Lease:       netTime.Now().UnixNano(),
 			RoundID:     uint64(rid),
 			PayloadType: 0,
 			Payload:     []byte("hello again"),
diff --git a/channels/send_test.go b/channels/send_test.go
index 4312a7a163e3883b9985884a32fcfd805bbaceb1..4df520e0fd676d916698f31382ddeaab6a1ed83d 100644
--- a/channels/send_test.go
+++ b/channels/send_test.go
@@ -18,6 +18,7 @@ import (
 	"gitlab.com/elixxir/crypto/rsa"
 	"gitlab.com/elixxir/ekv"
 	"gitlab.com/xx_network/crypto/csprng"
+	"gitlab.com/xx_network/primitives/netTime"
 	"math/rand"
 	"testing"
 	"time"
@@ -121,7 +122,7 @@ func (m *mockNameService) GetUsername() string {
 }
 
 func (m *mockNameService) GetChannelValidationSignature() (signature []byte, lease time.Time) {
-	return []byte("fake validation sig"), time.Now()
+	return []byte("fake validation sig"), netTime.Now()
 }
 
 func (m *mockNameService) GetChannelPubkey() ed25519.PublicKey {
diff --git a/channels/userListener_test.go b/channels/userListener_test.go
index 143ebfeb40fe1c150afd94d2590668d590a64b8a..081048252623e8a63f51855f3f102d66ec1917e0 100644
--- a/channels/userListener_test.go
+++ b/channels/userListener_test.go
@@ -10,6 +10,7 @@ package channels
 import (
 	"bytes"
 	"crypto/ed25519"
+	"gitlab.com/xx_network/primitives/netTime"
 	"math/rand"
 	"testing"
 	"time"
@@ -55,7 +56,7 @@ func TestUserListener_Listen(t *testing.T) {
 	chID[0] = 1
 
 	r := rounds.Round{ID: 420, Timestamps: make(map[states.Round]time.Time)}
-	r.Timestamps[states.QUEUED] = time.Now()
+	r.Timestamps[states.QUEUED] = netTime.Now()
 
 	rng := rand.New(rand.NewSource(42))
 	pub, priv, err := ed25519.GenerateKey(rng)
@@ -137,7 +138,7 @@ func TestUserListener_Listen_BadUserSig(t *testing.T) {
 	chID[0] = 1
 
 	r := rounds.Round{ID: 420, Timestamps: make(map[states.Round]time.Time)}
-	r.Timestamps[states.QUEUED] = time.Now()
+	r.Timestamps[states.QUEUED] = netTime.Now()
 
 	rng := rand.New(rand.NewSource(42))
 	pub, _, err := ed25519.GenerateKey(rng)
@@ -204,7 +205,7 @@ func TestUserListener_Listen_BadRound(t *testing.T) {
 	chID[0] = 1
 
 	r := rounds.Round{ID: 420, Timestamps: make(map[states.Round]time.Time)}
-	r.Timestamps[states.QUEUED] = time.Now()
+	r.Timestamps[states.QUEUED] = netTime.Now()
 
 	rng := rand.New(rand.NewSource(42))
 	pub, priv, err := ed25519.GenerateKey(rng)
@@ -266,7 +267,7 @@ func TestUserListener_Listen_BadMessage(t *testing.T) {
 	chID[0] = 1
 
 	r := rounds.Round{ID: 420, Timestamps: make(map[states.Round]time.Time)}
-	r.Timestamps[states.QUEUED] = time.Now()
+	r.Timestamps[states.QUEUED] = netTime.Now()
 
 	ns := &mockNameService{validChMsg: true}
 
@@ -299,7 +300,7 @@ func TestUserListener_Listen_BadSizedBroadcast(t *testing.T) {
 	chID[0] = 1
 
 	r := rounds.Round{ID: 420, Timestamps: make(map[states.Round]time.Time)}
-	r.Timestamps[states.QUEUED] = time.Now()
+	r.Timestamps[states.QUEUED] = netTime.Now()
 
 	rng := rand.New(rand.NewSource(42))
 	pub, priv, err := ed25519.GenerateKey(rng)
diff --git a/ud/channelIDTracking.go b/ud/channelIDTracking.go
index 25a870ee2995a9c6385568a0a04615fc989c3ce1..e40f4a1e33cbfb5519f7f0bc4964df04c9cd01b8 100644
--- a/ud/channelIDTracking.go
+++ b/ud/channelIDTracking.go
@@ -4,6 +4,7 @@ import (
 	"crypto/ed25519"
 	"encoding/json"
 	"errors"
+	"gitlab.com/xx_network/primitives/netTime"
 	"sync"
 	"time"
 
@@ -46,7 +47,7 @@ func saveRegistrationDisk(kv *versioned.KV, reg registrationDisk) error {
 	}
 	obj := versioned.Object{
 		Version:   registrationDiskVersion,
-		Timestamp: time.Now(),
+		Timestamp: netTime.Now(),
 		Data:      regBytes,
 	}
 	return kv.Set(registrationDiskKey, &obj)
@@ -241,7 +242,7 @@ func (c *clientIDTracker) registrationWorker(stopper *stoppable.Single) {
 	waitTime := time.Second
 	maxBackoff := 300
 	for {
-		if time.Now().After(c.registrationDisk.GetLease().Add(-graceDuration)) {
+		if netTime.Now().After(c.registrationDisk.GetLease().Add(-graceDuration)) {
 			err := c.register()
 			if err != nil {
 				backoffSeconds := pow(base, exponent)
@@ -259,7 +260,7 @@ func (c *clientIDTracker) registrationWorker(stopper *stoppable.Single) {
 		select {
 		case <-stopper.Quit():
 			return
-		case <-time.After(c.registrationDisk.GetLease().Add(-graceDuration).Sub(time.Now())):
+		case <-time.After(c.registrationDisk.GetLease().Add(-graceDuration).Sub(netTime.Now())):
 		}
 
 		// Avoid spamming the server in the event that it's service is down.
@@ -317,7 +318,7 @@ func (c *clientIDTracker) register() error {
 // requestChannelLease requests a new channel lease
 // from the user discovery server.
 func (c *clientIDTracker) requestChannelLease() (int64, []byte, error) {
-	ts := time.Now().UnixNano()
+	ts := netTime.Now().UnixNano()
 	privKey, err := c.receptionIdentity.GetRSAPrivateKey()
 	if err != nil {
 		return 0, nil, err