diff --git a/cmix/identity/tracker.go b/cmix/identity/tracker.go
index 961aac77627f0f5ef15ed35b839c2c5eaafa9b4b..3e7ece21c29df6080bcd96d8649e93f4cf2ebf76 100644
--- a/cmix/identity/tracker.go
+++ b/cmix/identity/tracker.go
@@ -51,20 +51,20 @@ type Tracker interface {
 	AddIdentity(id *id.ID, validUntil time.Time, persistent bool)
 	RemoveIdentity(id *id.ID)
 	GetEphemeralIdentity(rng io.Reader, addressSize uint8) (receptionID.IdentityUse, error)
-	GetIdentity(get *id.ID) (TrackedID, error)
+	GetIdentity(get *id.ID) (trackedID, error)
 }
 
 type manager struct {
-	tracked        []TrackedID
+	tracked        []*trackedID
 	ephemeral      *receptionID.Store
 	session        storage.Session
-	newIdentity    chan TrackedID
+	newIdentity    chan trackedID
 	deleteIdentity chan *id.ID
 	addrSpace      address.Space
 	mux            *sync.Mutex
 }
 
-type TrackedID struct {
+type trackedID struct {
 	NextGeneration time.Time
 	LastGeneration time.Time
 	Source         *id.ID
@@ -76,9 +76,9 @@ type TrackedID struct {
 func NewOrLoadTracker(session storage.Session, addrSpace address.Space) *manager {
 	// Initialization
 	t := &manager{
-		tracked:        make([]TrackedID, 0),
+		tracked:        make([]*trackedID, 0),
 		session:        session,
-		newIdentity:    make(chan TrackedID, trackedIDChanSize),
+		newIdentity:    make(chan trackedID, trackedIDChanSize),
 		deleteIdentity: make(chan *id.ID, deleteIDChanSize),
 		addrSpace:      addrSpace,
 		mux:            &sync.Mutex{},
@@ -92,7 +92,7 @@ func NewOrLoadTracker(session storage.Session, addrSpace address.Space) *manager
 			jww.WARN.Printf("No tracked identities found, creating a new " +
 				"tracked identity from legacy stored timestamp.")
 
-			t.tracked = append(t.tracked, TrackedID{
+			t.tracked = append(t.tracked, &trackedID{
 				// Make the next generation now so a generation triggers on
 				// first run
 				NextGeneration: netTime.Now(),
@@ -128,7 +128,7 @@ func (t *manager) StartProcesses() stoppable.Stoppable {
 
 // AddIdentity adds an identity to be tracked.
 func (t *manager) AddIdentity(id *id.ID, validUntil time.Time, persistent bool) {
-	t.newIdentity <- TrackedID{
+	t.newIdentity <- trackedID{
 		NextGeneration: netTime.Now().Add(-time.Second),
 		LastGeneration: netTime.Now().Add(-time.Duration(ephemeral.Period)),
 		Source:         id,
@@ -150,7 +150,7 @@ func (t *manager) GetEphemeralIdentity(rng io.Reader, addressSize uint8) (
 }
 
 // GetIdentity returns a currently tracked identity
-func (t *manager) GetIdentity(get *id.ID) (TrackedID, error) {
+func (t *manager) GetIdentity(get *id.ID) (*trackedID, error) {
 	t.mux.Lock()
 	defer t.mux.Unlock()
 	for i := range t.tracked {
@@ -158,7 +158,7 @@ func (t *manager) GetIdentity(get *id.ID) (TrackedID, error) {
 			return t.tracked[i], nil
 		}
 	}
-	return TrackedID{}, errors.Errorf("could not find id %s", get)
+	return nil, errors.Errorf("could not find id %s", get)
 }
 
 func (t *manager) track(stop *stoppable.Single) {
@@ -201,7 +201,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)
+				t.tracked = append(t.tracked, &newIdentity)
 			}
 
 			t.save()
@@ -236,7 +236,8 @@ func (t *manager) processIdentities(addressSize uint8) time.Time {
 	nextEvent := netTime.Now().Add(time.Duration(ephemeral.Period))
 
 	// Loop through every tracked ID and see if any operations are needed
-	for i, inQuestion := range t.tracked {
+	for i := range t.tracked {
+		inQuestion := t.tracked[i]
 		// Generate new ephemeral if is time for it
 		if netTime.Now().After(inQuestion.NextGeneration) {
 			nextGeneration := t.generateIdentitiesOverRange(inQuestion, addressSize)
@@ -267,7 +268,7 @@ func (t *manager) processIdentities(addressSize uint8) time.Time {
 
 	// Process any deletions
 	if len(toRemove) > 0 {
-		newTracked := make([]TrackedID, 0, len(t.tracked))
+		newTracked := make([]*trackedID, 0, len(t.tracked))
 		for i := range t.tracked {
 			if _, remove := toRemove[i]; !remove {
 				newTracked = append(newTracked, t.tracked[i])
@@ -305,7 +306,7 @@ func unmarshalTimestamp(lastTimestampObj *versioned.Object) (time.Time, error) {
 
 // generateIdentitiesOverRange generates and adds all not yet existing ephemeral Ids
 // and returns the timestamp of the next generation for the given TrackedID
-func (t *manager) generateIdentitiesOverRange(inQuestion TrackedID,
+func (t *manager) generateIdentitiesOverRange(inQuestion *trackedID,
 	addressSize uint8) time.Time {
 	// Ensure that ephemeral IDs will not be generated after the
 	// identity is invalid
@@ -370,7 +371,7 @@ func (t *manager) generateIdentitiesOverRange(inQuestion TrackedID,
 func (t *manager) save() {
 	t.mux.Lock()
 	defer t.mux.Unlock()
-	persistent := make([]TrackedID, 0, len(t.tracked))
+	persistent := make([]*trackedID, 0, len(t.tracked))
 
 	for i := range t.tracked {
 		if t.tracked[i].Persistent {
diff --git a/cmix/identity/tracker_test.go b/cmix/identity/tracker_test.go
index d16f64b5526f30e2d9719974ad1f82560b7f6b1f..ab282870d1c69f7ea66eb8672b89d0886fbfa260 100644
--- a/cmix/identity/tracker_test.go
+++ b/cmix/identity/tracker_test.go
@@ -67,9 +67,9 @@ func TestManager_processIdentities(t *testing.T) {
 	addrSpace.UpdateAddressSpace(18)
 	session := storage.InitTestingSession(t)
 	m := &manager{
-		tracked:        make([]TrackedID, 0),
+		tracked:        make([]*trackedID, 0),
 		session:        session,
-		newIdentity:    make(chan TrackedID, trackedIDChanSize),
+		newIdentity:    make(chan trackedID, trackedIDChanSize),
 		deleteIdentity: make(chan *id.ID, deleteIDChanSize),
 		addrSpace:      addrSpace,
 		ephemeral:      receptionID.NewOrLoadStore(session.GetKV()),
@@ -79,7 +79,7 @@ func TestManager_processIdentities(t *testing.T) {
 	// Add some expired test IDs
 	testId := id.NewIdFromUInt(0, id.User, t)
 	validUntil := netTime.Now().Add(time.Minute)
-	m.tracked = append(m.tracked, TrackedID{
+	m.tracked = append(m.tracked, &trackedID{
 		NextGeneration: netTime.Now(),
 		LastGeneration: time.Time{},
 		Source:         testId,