diff --git a/api/client.go b/api/client.go
index a8e641a491dd0fd1438f920ecc08d5bf87c85650..7145b1f802768a86e376aa9090175754322265b8 100644
--- a/api/client.go
+++ b/api/client.go
@@ -9,6 +9,7 @@ package api
 
 import (
 	"encoding/json"
+	"gitlab.com/xx_network/primitives/netTime"
 	"math"
 	"time"
 
@@ -94,10 +95,10 @@ func NewClient(ndfJSON, storageDir string, password []byte,
 	}
 
 	cmixGrp, e2eGrp := decodeGroups(def)
-	start := time.Now()
+	start := netTime.Now()
 	protoUser := createNewUser(rngStreamGen, cmixGrp, e2eGrp)
 	jww.DEBUG.Printf("PortableUserInfo generation took: %s",
-		time.Now().Sub(start))
+		netTime.Now().Sub(start))
 
 	_, err = checkVersionAndSetupStorage(def, storageDir, password,
 		protoUser, cmixGrp, e2eGrp, rngStreamGen,
diff --git a/auth/store/store_test.go b/auth/store/store_test.go
index 882ac6ac1c31aaf8c40954a56a6634f460d8eb9b..e6b14e7e08a40724668ce252054cc4d7591c4e85 100644
--- a/auth/store/store_test.go
+++ b/auth/store/store_test.go
@@ -25,6 +25,7 @@ import (
 	"gitlab.com/xx_network/crypto/csprng"
 	"gitlab.com/xx_network/crypto/large"
 	"gitlab.com/xx_network/primitives/id"
+	"gitlab.com/xx_network/primitives/netTime"
 	"io"
 	"math/rand"
 	"reflect"
@@ -923,7 +924,7 @@ func makeTestRound(t *testing.T) rounds.Round {
 			State:                      2,
 			BatchSize:                  5,
 			Topology:                   [][]byte{[]byte("one"), []byte("two")},
-			Timestamps:                 []uint64{uint64(time.Now().UnixNano()), uint64(time.Now().UnixNano())},
+			Timestamps:                 []uint64{uint64(netTime.Now().UnixNano()), uint64(netTime.Now().UnixNano())},
 			Errors:                     nil,
 			ClientErrors:               nil,
 			ResourceQueueTimeoutMillis: 0,
diff --git a/auth/utils_test.go b/auth/utils_test.go
index 2a6c16ecca08536668bbebcc35bc4c63bde9aabe..da9f6d7c00c9f8a79dd87aa33b7a32987e8825ac 100644
--- a/auth/utils_test.go
+++ b/auth/utils_test.go
@@ -9,9 +9,9 @@ import (
 	"gitlab.com/xx_network/comms/connect"
 	"gitlab.com/xx_network/crypto/large"
 	"gitlab.com/xx_network/primitives/id"
+	"gitlab.com/xx_network/primitives/netTime"
 	"math/rand"
 	"testing"
-	"time"
 )
 
 type mockSentRequestHandler struct{}
@@ -75,7 +75,7 @@ func makeTestRound(t *testing.T) rounds.Round {
 			State:                      2,
 			BatchSize:                  5,
 			Topology:                   [][]byte{[]byte("test"), []byte("test")},
-			Timestamps:                 []uint64{uint64(time.Now().UnixNano()), uint64(time.Now().UnixNano())},
+			Timestamps:                 []uint64{uint64(netTime.Now().UnixNano()), uint64(netTime.Now().UnixNano())},
 			Errors:                     nil,
 			ClientErrors:               nil,
 			ResourceQueueTimeoutMillis: 0,
diff --git a/cmix/identity/tracker.go b/cmix/identity/tracker.go
index 1022940eec62f13f2b2b2358a54029856fe4bee8..51f324b67f88c6a01512391817cb3554b04117d8 100644
--- a/cmix/identity/tracker.go
+++ b/cmix/identity/tracker.go
@@ -189,13 +189,18 @@ func (t *manager) track(stop *stoppable.Single) {
 
 		// Sleep until the last ID has expired
 		select {
-		case <-time.NewTimer(nextUpdate.Sub(nextUpdate)).C:
+		case <-time.After(nextUpdate.Sub(nextUpdate)):
 		case newIdentity := <-t.newIdentity:
+			jww.DEBUG.Printf("Receiving new identity %s :%+v",
+				newIdentity.Source, newIdentity)
+
 			// If the identity is old, then update its properties
 			isOld := false
 			for i := range t.tracked {
 				inQuestion := t.tracked[i]
 				if inQuestion.Source.Cmp(newIdentity.Source) {
+					jww.DEBUG.Printf(
+						"Updating old identity %s", newIdentity.Source)
 					inQuestion.Persistent = newIdentity.Persistent
 					inQuestion.ValidUntil = newIdentity.ValidUntil
 					isOld = true
@@ -203,6 +208,7 @@ func (t *manager) track(stop *stoppable.Single) {
 				}
 			}
 			if !isOld {
+				jww.DEBUG.Printf("Tracking new identity %s", newIdentity.Source)
 				// Otherwise, add it to the list and run
 				t.tracked = append(t.tracked, newIdentity)
 			}
diff --git a/cmix/identity/tracker_test.go b/cmix/identity/tracker_test.go
index ef7241c6422d163abc869121b1756aee2b8fff0a..f8b28740d7e41a00bf66eb1b55e3a459a986ff2d 100644
--- a/cmix/identity/tracker_test.go
+++ b/cmix/identity/tracker_test.go
@@ -36,7 +36,7 @@ func TestManager_processIdentities_expired(t *testing.T) {
 	// Add some expired test IDs
 	for i := uint64(0); i < 10; i++ {
 		testId := id.NewIdFromUInt(i, id.User, t)
-		validUntil := time.Now()
+		validUntil := netTime.Now()
 		m.tracked = append(m.tracked, TrackedID{
 			NextGeneration: netTime.Now().Add(-time.Second),
 			LastGeneration: time.Time{},
@@ -75,7 +75,7 @@ func TestManager_processIdentities(t *testing.T) {
 
 	// Add some expired test IDs
 	testId := id.NewIdFromUInt(0, id.User, t)
-	validUntil := time.Now().Add(time.Minute)
+	validUntil := netTime.Now().Add(time.Minute)
 	m.tracked = append(m.tracked, TrackedID{
 		NextGeneration: netTime.Now(),
 		LastGeneration: time.Time{},
diff --git a/cmix/polltracker_test.go b/cmix/polltracker_test.go
index 9b0812d04784a4c1943f1f8b2c2786284782d312..8fb6d96860d70c94f48f51843a03df44f84694be 100644
--- a/cmix/polltracker_test.go
+++ b/cmix/polltracker_test.go
@@ -3,6 +3,7 @@ package cmix
 import (
 	xxid "gitlab.com/xx_network/primitives/id"
 	"gitlab.com/xx_network/primitives/id/ephemeral"
+	"gitlab.com/xx_network/primitives/netTime"
 	"strings"
 	"testing"
 	"time"
@@ -14,11 +15,11 @@ func TestPollTracker(t *testing.T) {
 
 	// Init ID and first EID
 	id := xxid.NewIdFromString("zezima", xxid.User, t)
-	eid, _, _, err := ephemeral.GetId(id, 16, time.Now().UnixNano())
+	eid, _, _, err := ephemeral.GetId(id, 16, netTime.Now().UnixNano())
 	if err != nil {
 		t.Errorf("Failed to create eid for ID %s", id.String())
 	}
-	eid2, _, _, err := ephemeral.GetId(id, 16, time.Now().Add(time.Hour*24).UnixNano())
+	eid2, _, _, err := ephemeral.GetId(id, 16, netTime.Now().Add(time.Hour*24).UnixNano())
 	if err != nil {
 		t.Errorf("Failed to create second eid for ID %s", id.String())
 	}
diff --git a/cmix/utils_test.go b/cmix/utils_test.go
index 2d45401c6c7c010b0a61c588f48fc05d277e63f2..6fffb13db3f47dee64d71e89f6e254050d0318c0 100644
--- a/cmix/utils_test.go
+++ b/cmix/utils_test.go
@@ -227,7 +227,7 @@ func newTestClient(t *testing.T) (*client, error) {
 	}
 	pubKey := pk.GetPublic()
 
-	now := time.Now()
+	now := netTime.Now()
 	timestamps := []uint64{
 		uint64(now.Add(-30 * time.Second).UnixNano()), //PENDING
 		uint64(now.Add(-25 * time.Second).UnixNano()), //PRECOMPUTING
diff --git a/e2e/manager.go b/e2e/manager.go
index 885748a08e35a57bbabb610abf874df5180b40cc..de6f09d7812f87447ffea943d9982da08dd767d8 100644
--- a/e2e/manager.go
+++ b/e2e/manager.go
@@ -2,6 +2,7 @@ package e2e
 
 import (
 	"encoding/json"
+	"gitlab.com/xx_network/primitives/netTime"
 	"strings"
 	"time"
 
@@ -55,7 +56,7 @@ func initE2E(kv *versioned.KV, myID *id.ID, privKey *cyclic.Int,
 	}
 	err = kv.Set(e2eRekeyParamsKey, e2eRekeyParamsVer, &versioned.Object{
 		Version:   e2eRekeyParamsVer,
-		Timestamp: time.Now(),
+		Timestamp: netTime.Now(),
 		Data:      rekeyParamsData,
 	})
 	if err != nil {
@@ -101,7 +102,7 @@ func LoadLegacy(kv *versioned.KV, net cmix.Client, myID *id.ID,
 	// Store the rekey params to disk/memory
 	err = kv.Set(e2eRekeyParamsKey, e2eRekeyParamsVer, &versioned.Object{
 		Version:   e2eRekeyParamsVer,
-		Timestamp: time.Now(),
+		Timestamp: netTime.Now(),
 		Data:      rekeyParamsData,
 	})
 
diff --git a/storage/utility/bucket.go b/storage/utility/bucket.go
index 5548cdfe52321d58ca181130dbca4010d5aa4b16..46b3da9a9d7733b0ce2abb5812a451ea9ae8e419 100644
--- a/storage/utility/bucket.go
+++ b/storage/utility/bucket.go
@@ -42,7 +42,7 @@ func NewStoredBucket(capacity, leaked uint32, leakDuration time.Duration,
 		kv: kv.Prefix(bucketStorePrefix),
 	}
 
-	bs.save(0, time.Now().UnixNano())
+	bs.save(0, netTime.Now().UnixNano())
 
 	return rateLimiting.CreateBucket(capacity, leaked, leakDuration, bs.save)
 }
diff --git a/storage/utility/messageBuffer.go b/storage/utility/messageBuffer.go
index 82c8b898e14c9e9b225a5d74141ec6e61925c8bd..8f513bdb948a61d11b7486eea80848a97a9876b0 100644
--- a/storage/utility/messageBuffer.go
+++ b/storage/utility/messageBuffer.go
@@ -203,11 +203,19 @@ func (mb *MessageBuffer) Add(m interface{}) interface{} {
 	defer mb.mux.Unlock()
 
 	// Ensure message does not already exist in buffer
-	if face1, exists1 := mb.messages[h]; exists1 {
-		return face1
+	if _, exists1 := mb.messages[h]; exists1 {
+		msg, err := mb.handler.LoadMessage(mb.kv, MakeStoredMessageKey(mb.key, h))
+		if err != nil {
+			jww.FATAL.Panicf("Error loading message %s: %v", h, err)
+		}
+		return msg
 	}
-	if face2, exists2 := mb.processingMessages[h]; exists2 {
-		return face2
+	if _, exists2 := mb.processingMessages[h]; exists2 {
+		msg, err := mb.handler.LoadMessage(mb.kv, MakeStoredMessageKey(mb.key, h))
+		if err != nil {
+			jww.FATAL.Panicf("Error loading processing message %s: %v", h, err)
+		}
+		return msg
 	}
 
 	// Save message as versioned object
diff --git a/xxmutils/restoreContacts.go b/xxmutils/restoreContacts.go
index b64947418cb401ea797c99cc8c5935a60335bfb9..6b8afad7073c5d9ff7b4ad56e19515bdd596440c 100644
--- a/xxmutils/restoreContacts.go
+++ b/xxmutils/restoreContacts.go
@@ -11,6 +11,7 @@ import (
 	"encoding/json"
 	"errors"
 	"fmt"
+	"gitlab.com/xx_network/primitives/netTime"
 	"math"
 	"strings"
 	"sync"
@@ -287,7 +288,7 @@ func (s stateStore) set(user *contact.Contact, state restoreState) error {
 	data = append(data, user.Marshal()...)
 	val := &versioned.Object{
 		Version:   0,
-		Timestamp: time.Now(),
+		Timestamp: netTime.Now(),
 		Data:      data,
 	}
 	return s.apiStore.Set(key, val)