diff --git a/auth/store/previousNegotiations.go b/auth/store/previousNegotiations.go
index 0f7320ec2854ced997119a960ca6648ebff48c1e..37d9947e1da048a3c34230f04cbfd4802497e7a4 100644
--- a/auth/store/previousNegotiations.go
+++ b/auth/store/previousNegotiations.go
@@ -9,7 +9,6 @@ package store
 
 import (
 	"bytes"
-	"encoding/base64"
 	"encoding/binary"
 	"encoding/json"
 	"os"
@@ -215,8 +214,8 @@ func saveNegotiationFingerprints(
 // loadNegotiationFingerprints loads the list of sentByFingerprints for the given
 // partner from storage.
 func loadNegotiationFingerprints(partner *id.ID, kv *versioned.KV) ([][]byte, error) {
-	obj, err := kv.Get(makeNegotiationFingerprintsKey(partner),
-		currentNegotiationFingerprintsVersion)
+	fpKey := makeNegotiationFingerprintsKey(partner)
+	obj, err := kv.Get(fpKey, currentNegotiationFingerprintsVersion)
 	if err != nil {
 		return nil, err
 	}
@@ -262,8 +261,7 @@ func unmarshalNegotiationFingerprints(buf []byte) [][]byte {
 // makeOldNegotiationFingerprintsKey generates the key used to load and store
 // negotiation sentByFingerprints for the partner.
 func makeNegotiationFingerprintsKey(partner *id.ID) string {
-	return negotiationFingerprintsKeyPrefix +
-		string(base64.StdEncoding.EncodeToString(partner.Marshal()))
+	return negotiationFingerprintsKeyPrefix + partner.String()
 }
 
 // Historical functions
diff --git a/auth/store/receivedRequest.go b/auth/store/receivedRequest.go
index 2a9eaa56dcfc868bf42ee2141cec1c6112b33ca0..5eaee2e8e758c2e6f175a908d85a687dfb771f81 100644
--- a/auth/store/receivedRequest.go
+++ b/auth/store/receivedRequest.go
@@ -1,7 +1,7 @@
 package store
 
 import (
-	"encoding/base64"
+	"os"
 	"sync"
 
 	"github.com/cloudflare/circl/dh/sidh"
@@ -61,7 +61,7 @@ func newReceivedRequest(kv *versioned.KV, c contact.Contact,
 func loadReceivedRequest(kv *versioned.KV, partner *id.ID) (
 	*ReceivedRequest, error) {
 
-	c, err := util.LoadContact(kv, partner)
+	c, contactVersion, err := util.LoadContact(kv, partner)
 	if err != nil {
 		return nil, errors.WithMessagef(err, "Failed to Load "+
 			"Received Auth Request Contact with %s",
@@ -78,9 +78,14 @@ func loadReceivedRequest(kv *versioned.KV, partner *id.ID) (
 
 	round, err := rounds.LoadRound(kv, makeRoundKey(partner))
 	if err != nil {
-		return nil, errors.WithMessagef(err, "Failed to Load "+
-			"round request was received on with %s",
-			partner)
+		if contactVersion == 0 && os.IsNotExist(err) {
+			jww.WARN.Printf("Old contact version, round to nil")
+			round = rounds.Round{}
+		} else {
+			return nil, errors.WithMessagef(err, "Failed to Load "+
+				"round request was received on with %s",
+				partner)
+		}
 	}
 
 	return &ReceivedRequest{
@@ -120,6 +125,5 @@ func (rr *ReceivedRequest) getType() RequestType {
 }
 
 func makeRoundKey(partner *id.ID) string {
-	return "receivedRequestRound:" +
-		base64.StdEncoding.EncodeToString(partner.Marshal())
+	return "receivedRequestRound:" + partner.String()
 }
diff --git a/auth/store/sentRequest.go b/auth/store/sentRequest.go
index c6080a9e059946ff9d04de06ad936b5650ea0cdb..9c70605aa0e4ddde19a2d1a59ca4e9fd5fb87115 100644
--- a/auth/store/sentRequest.go
+++ b/auth/store/sentRequest.go
@@ -8,9 +8,10 @@
 package store
 
 import (
-	"encoding/base64"
 	"encoding/hex"
 	"encoding/json"
+	"fmt"
+	"os"
 	"sync"
 
 	"github.com/cloudflare/circl/dh/sidh"
@@ -24,7 +25,7 @@ import (
 	"gitlab.com/xx_network/primitives/netTime"
 )
 
-const currentSentRequestVersion = 0
+const currentSentRequestVersion = 1
 
 type SentRequest struct {
 	kv *versioned.KV
@@ -73,8 +74,19 @@ func newSentRequest(kv *versioned.KV, partner *id.ID, partnerHistoricalPubKey,
 func loadSentRequest(kv *versioned.KV, partner *id.ID, grp *cyclic.Group) (*SentRequest, error) {
 
 	srKey := makeSentRequestKey(partner)
-	obj, err := kv.Get(srKey,
-		currentSentRequestVersion)
+	obj, err := kv.Get(srKey, currentSentRequestVersion)
+
+	// V0 Upgrade Path
+	if os.IsNotExist(err) {
+		obj2, err2 := kv.Get(makeOldSentRequestKey(partner), 0)
+		if err2 != nil {
+			jww.DEBUG.Printf("v0 loadSentRequest: %+v", err)
+		} else {
+			obj = obj2
+			err = nil
+		}
+		// Note: uses same encoding, just different keys
+	}
 
 	if err != nil {
 		return nil, errors.WithMessagef(err, "Failed to Load "+
@@ -261,5 +273,11 @@ func (sr *SentRequest) getType() RequestType {
 }
 
 func makeSentRequestKey(partner *id.ID) string {
-	return "sentRequest:" + base64.StdEncoding.EncodeToString(partner.Marshal())
+	return "sentRequest:" + partner.String()
+}
+
+// V0 Utility Functions
+
+func makeOldSentRequestKey(partner *id.ID) string {
+	return fmt.Sprintf("Partner:%v", partner.String())
 }
diff --git a/storage/utility/contact.go b/storage/utility/contact.go
index cccfef3483c47fc83579563e29b18e0578a17610..c599fa806e91ced30ec6629797aeac258762f0db 100644
--- a/storage/utility/contact.go
+++ b/storage/utility/contact.go
@@ -9,13 +9,14 @@ package utility
 
 import (
 	"fmt"
+
 	"gitlab.com/elixxir/client/storage/versioned"
 	"gitlab.com/elixxir/crypto/contact"
 	"gitlab.com/xx_network/primitives/id"
 	"gitlab.com/xx_network/primitives/netTime"
 )
 
-const currentContactVersion = 0
+const currentContactVersion = 1
 
 func StoreContact(kv *versioned.KV, c contact.Contact) error {
 	now := netTime.Now()
@@ -29,13 +30,14 @@ func StoreContact(kv *versioned.KV, c contact.Contact) error {
 	return kv.Set(makeContactKey(c.ID), currentContactVersion, &obj)
 }
 
-func LoadContact(kv *versioned.KV, cid *id.ID) (contact.Contact, error) {
+func LoadContact(kv *versioned.KV, cid *id.ID) (contact.Contact, uint64, error) {
 	vo, err := kv.Get(makeContactKey(cid), currentContactVersion)
 	if err != nil {
-		return contact.Contact{}, err
+		return contact.Contact{}, vo.Version, err
 	}
 
-	return contact.Unmarshal(vo.Data)
+	c, err := contact.Unmarshal(vo.Data)
+	return c, vo.Version, err
 }
 
 func DeleteContact(kv *versioned.KV, cid *id.ID) error {