diff --git a/api/client.go b/api/client.go
index b3ada9ef37b93381b7447443cd5cadea506166b3..7901d1fef5d4d30f8a265d50e145dbad36fe0c65 100644
--- a/api/client.go
+++ b/api/client.go
@@ -164,11 +164,11 @@ func (cl *Client) Login(password string) (*id.ID, error) {
 	// TODO: FIX ME
 	// While the old session is still valid, we are using the LocA storage to initialize the session
 	locA, _ := cl.storage.GetLocation()
-	newSession, err := storage.Init(locA, password)
+	io.SessionV2, err = storage.Init(locA, password)
 	if err != nil {
 		return nil, errors.Wrap(err, "Login: could not initialize v2 storage")
 	}
-	cl.sessionV2 = newSession
+	cl.sessionV2 = io.SessionV2
 
 	newRm, err := io.NewReceptionManager(cl.rekeyChan, cl.session.GetCurrentUser().User,
 		rsa.CreatePrivateKeyPem(cl.session.GetRSAPrivateKey()),
diff --git a/api/client_test.go b/api/client_test.go
index f7419f0f96a28126d5a0d2e4bbd10a922625a245..190efcefc6096cd7dbf4b7e3085418a0eb546a0a 100644
--- a/api/client_test.go
+++ b/api/client_test.go
@@ -1,5 +1,5 @@
 ////////////////////////////////////////////////////////////////////////////////
-// Copyright © 2019 Privategrity Corporation                                   /
+// Copyright © 2020 Privategrity Corporation                                   /
 //                                                                             /
 // All rights reserved.                                                        /
 ////////////////////////////////////////////////////////////////////////////////
@@ -588,7 +588,7 @@ func TestClient_LogoutHappyPath(t *testing.T) {
 		t.Errorf("Could not generate Keys: %+v", err)
 	}
 
-	//Start Message reciever
+	//Start Message receiver
 	callBack := func(err error) {
 		t.Log(err)
 	}
diff --git a/api/mockserver_test.go b/api/mockserver_test.go
index 1c556c796c8a0bfab4fd032827f1f4e48bfbcc46..dd965339190ffd88e468fad5c0a04c3fdef36c0d 100644
--- a/api/mockserver_test.go
+++ b/api/mockserver_test.go
@@ -1,5 +1,5 @@
 ////////////////////////////////////////////////////////////////////////////////
-// Copyright © 2019 Privategrity Corporation                                   /
+// Copyright © 2020 Privategrity Corporation                                   /
 //                                                                             /
 // All rights reserved.                                                        /
 ////////////////////////////////////////////////////////////////////////////////
@@ -41,7 +41,7 @@ var ErrorDef *ndf.NetworkDefinition
 const ValidRegCode = "WTROXJ33"
 const InvalidRegCode = "INVALID_REG_CODE_"
 
-var RegGWHandlers [3]*GatewayHandler = [NumGWs]*GatewayHandler{
+var RegGWHandlers = [NumGWs]*GatewayHandler{
 	{LastReceivedMessage: pb.Slot{}},
 	{LastReceivedMessage: pb.Slot{}},
 	{LastReceivedMessage: pb.Slot{}},
@@ -58,7 +58,6 @@ func TestMain(m *testing.M) {
 	// Set logging params
 	jww.SetLogThreshold(jww.LevelTrace)
 	jww.SetStdoutThreshold(jww.LevelTrace)
-
 	os.Exit(testMainWrapper(m))
 }
 
diff --git a/io/receive.go b/io/receive.go
index ef5c5dbcba7c66037efa0d67935e762916c3cd07..6c6e5bd9dc4a445208db5bb34b4f992778062b02 100644
--- a/io/receive.go
+++ b/io/receive.go
@@ -1,5 +1,5 @@
 ////////////////////////////////////////////////////////////////////////////////
-// Copyright © 2019 Privategrity Corporation                                   /
+// Copyright © 2020 Privategrity Corporation                                   /
 //                                                                             /
 // All rights reserved.                                                        /
 ////////////////////////////////////////////////////////////////////////////////
@@ -13,6 +13,7 @@ import (
 	"gitlab.com/elixxir/client/crypto"
 	"gitlab.com/elixxir/client/globals"
 	"gitlab.com/elixxir/client/parse"
+	"gitlab.com/elixxir/client/storage"
 	"gitlab.com/elixxir/client/user"
 	pb "gitlab.com/elixxir/comms/mixmessages"
 	"gitlab.com/elixxir/crypto/e2e"
@@ -26,6 +27,9 @@ import (
 
 const reportDuration = 30 * time.Second
 
+// TODO: REMOVE ME DEAR GOD
+var SessionV2 *storage.Session
+
 var errE2ENotFound = errors.New("E2EKey for matching fingerprint not found, can't process message")
 
 // MessageReceiver is a polling thread for receiving messages
@@ -39,7 +43,6 @@ func (rm *ReceptionManager) MessageReceiver(session user.Session, delay time.Dur
 		UserID: session.GetCurrentUser().User.Bytes(),
 	}
 	quit := session.GetQuitChan()
-
 	NumChecks := 0
 	NumMessages := 0
 
@@ -170,7 +173,11 @@ func handleE2EReceiving(session user.Session,
 func (rm *ReceptionManager) receiveMessagesFromGateway(session user.Session,
 	pollingMessage *pb.ClientRequest, receiveGateway *connect.Host) ([]*format.Message, error) {
 	// Get the last message ID received
-	pollingMessage.LastMessageID = session.GetLastMessageID()
+	var err error
+	pollingMessage.LastMessageID, err = SessionV2.GetLastMessageId()
+	if err != nil {
+		return nil, err
+	}
 	// FIXME: dont do this over an over
 
 	// Gets a list of mssages that are newer than the last one recieved
@@ -231,7 +238,7 @@ func (rm *ReceptionManager) receiveMessagesFromGateway(session user.Session,
 			}
 		}
 	}
-	// record that the messages were recieved so they are not re-retrieved
+	// record that the messages were received so they are not re-retrieved
 	if bufLoc > 0 {
 		for i := 0; i < bufLoc; i++ {
 			globals.Log.INFO.Printf(
@@ -240,7 +247,10 @@ func (rm *ReceptionManager) receiveMessagesFromGateway(session user.Session,
 			rm.receivedMessages[mIDs[i]] = struct{}{}
 			rm.recievedMesageLock.Unlock()
 		}
-		session.SetLastMessageID(mIDs[bufLoc-1])
+		err = SessionV2.SetLastMessageId(mIDs[bufLoc-1])
+		if err != nil {
+			return nil, err
+		}
 		err = session.StoreSession()
 		if err != nil {
 			globals.Log.ERROR.Printf("Could not store session "+
diff --git a/storage/session.go b/storage/session.go
index 0b95c7442fba4cfe1b8774f56beba505110edc8b..a264a37f4a571b8e811b23df917486f788d9c32e 100644
--- a/storage/session.go
+++ b/storage/session.go
@@ -6,7 +6,10 @@
 
 package storage
 
-import "gitlab.com/elixxir/ekv"
+import (
+	"gitlab.com/elixxir/ekv"
+	"time"
+)
 
 type Session struct {
 	kv *VersionedKV
@@ -39,6 +42,14 @@ func (s *Session) GetLastMessageId() (string, error) {
 }
 
 // Set the LastMessageID in the Session
-func (s *Session) SetLastMessageId(object *VersionedObject) error {
-	return s.kv.Set("LastMessageID", object)
+func (s *Session) SetLastMessageId(id string) error {
+	ts, err := time.Now().MarshalText()
+	if err != nil {
+		return err
+	}
+	vo := &VersionedObject{
+		Timestamp: ts,
+		Data:      []byte(id),
+	}
+	return s.kv.Set("LastMessageID", vo)
 }
diff --git a/storage/session_test.go b/storage/session_test.go
index ac4bbc6d4e8b40f597339991e8ef96dd89e69088..01d50f5c04822c1a59fa9e7bfc32847d80cd04ba 100644
--- a/storage/session_test.go
+++ b/storage/session_test.go
@@ -64,15 +64,7 @@ func TestSession_GetSetLastMessageId(t *testing.T) {
 		t.Errorf("failed to init: %+v", err)
 	}
 
-	ts, err := time.Now().MarshalText()
-	if err != nil {
-		t.Errorf("Failed to martial time for object")
-	}
-	err = s.SetLastMessageId(&VersionedObject{
-		Version:   0,
-		Timestamp: ts,
-		Data:      []byte(testId),
-	})
+	err = s.SetLastMessageId(testId)
 	if err != nil {
 		t.Errorf("Failed to set LastMessageId: %+v", err)
 	}