diff --git a/e2e/manager.go b/e2e/manager.go
index f850add4b1be9a075e6ec8118ee69ff3aeb52f4d..0dd00ab243d25e5e83a561d4ca53e7d23eb29b55 100644
--- a/e2e/manager.go
+++ b/e2e/manager.go
@@ -1,6 +1,8 @@
 package e2e
 
 import (
+	"encoding/json"
+	"github.com/pkg/errors"
 	"gitlab.com/elixxir/client/catalog"
 	"gitlab.com/elixxir/client/e2e/parse"
 	"gitlab.com/elixxir/client/e2e/ratchet"
@@ -31,12 +33,26 @@ type manager struct {
 	rekeyParams rekey.Params
 }
 
+const e2eRekeyParamsKey = "e2eRekeyParams"
+const e2eRekeyParamsVer = 0
+
 // Init Creates stores. After calling, use load
 // Passes a default ID and public key which is used for relationship with
 // partners when no default ID is selected
 func Init(kv *versioned.KV, myDefaultID *id.ID, privKey *cyclic.Int,
 	grp *cyclic.Group, rekeyParams rekey.Params) error {
-	//store rekey params here
+	rekeyParamsData, err := json.Marshal(rekeyParams)
+	if err != nil {
+		return errors.WithMessage(err, "Failed to marshal rekeyParams")
+	}
+	err = kv.Set(e2eRekeyParamsKey, e2eRekeyParamsVer, &versioned.Object{
+		Version:   e2eRekeyParamsVer,
+		Timestamp: time.Now(),
+		Data:      rekeyParamsData,
+	})
+	if err != nil {
+		return errors.WithMessage(err, "Failed to save rekeyParams")
+	}
 	return ratchet.New(kv, myDefaultID, privKey, grp)
 }
 
@@ -54,6 +70,7 @@ func Load(kv *versioned.KV, net network.Manager, myDefaultID *id.ID,
 		myDefaultID: myDefaultID,
 		events:      events,
 		grp:         grp,
+		rekeyParams: rekey.Params{},
 	}
 	var err error
 
@@ -65,6 +82,14 @@ func Load(kv *versioned.KV, net network.Manager, myDefaultID *id.ID,
 	}
 
 	//load rekey params here
+	rekeyParams, err := kv.Get(e2eRekeyParamsKey, e2eRekeyParamsVer)
+	if err != nil {
+		return nil, errors.WithMessage(err, "Failed to load rekeyParams")
+	}
+	err = json.Unmarshal(rekeyParams.Data, &m.rekeyParams)
+	if err != nil {
+		return nil, errors.WithMessage(err, "Failed to unmarshal rekeyParams data")
+	}
 
 	//attach critical messages
 	m.crit = newCritical(kv, net.AddHealthCallback,