diff --git a/Makefile b/Makefile
index 60cdbe9c72c5f7d156b27637cbab21ecf1bb4b30..d450e1775595960ec32e01cbc6190ab8a1b1a770 100644
--- a/Makefile
+++ b/Makefile
@@ -20,10 +20,10 @@ build:
 	go mod tidy
 
 update_release:
-	GOFLAGS="" go get -u gitlab.com/elixxir/primitives@peppa/newClient
-	GOFLAGS="" go get -u gitlab.com/elixxir/crypto@peppa/newClient
+	GOFLAGS="" go get -u gitlab.com/elixxir/primitives@release
+	GOFLAGS="" go get -u gitlab.com/elixxir/crypto@release
 	GOFLAGS="" go get -u gitlab.com/xx_network/crypto@release
-	GOFLAGS="" go get -u gitlab.com/elixxir/comms@hotfix/TestingFunction
+	GOFLAGS="" go get -u gitlab.com/elixxir/comms@release
 	GOFLAGS="" go get -u gitlab.com/xx_network/comms@release
 	GOFLAGS="" go get -u gitlab.com/xx_network/primitives@release
 
diff --git a/globals/version_vars.go b/globals/version_vars.go
index 0dfeae1a2d0a9b61489927fc03909225057c4d4e..b5db39eb786101825ce0eca0942e078149d47df3 100644
--- a/globals/version_vars.go
+++ b/globals/version_vars.go
@@ -1,9 +1,9 @@
 // Code generated by go generate; DO NOT EDIT.
 // This file was generated by robots at
-// 2020-09-25 11:48:25.820720385 -0700 PDT m=+0.003677797
+// 2020-12-29 10:13:48.025555 -0800 PST m=+0.025163852
 package globals
 
-const GITVERSION = `a6830b5 Fix import issue`
+const GITVERSION = `2c172be update deps`
 const SEMVER = "1.4.0"
 const DEPENDENCIES = `module gitlab.com/elixxir/client
 
@@ -11,20 +11,34 @@ go 1.13
 
 require (
 	github.com/golang-collections/collections v0.0.0-20130729185459-604e922904d3
-	github.com/golang/protobuf v1.4.2
+	github.com/golang/protobuf v1.4.3
+	github.com/gopherjs/gopherjs v0.0.0-20200217142428-fce0ec30dd00 // indirect
+	github.com/magiconair/properties v1.8.4 // indirect
+	github.com/mitchellh/mapstructure v1.3.3 // indirect
+	github.com/pelletier/go-toml v1.8.1 // indirect
 	github.com/pkg/errors v0.9.1
+	github.com/smartystreets/assertions v1.0.1 // indirect
+	github.com/spf13/afero v1.4.0 // indirect
+	github.com/spf13/cast v1.3.1 // indirect
 	github.com/spf13/cobra v1.0.0
 	github.com/spf13/jwalterweatherman v1.1.0
-	github.com/spf13/viper v1.6.2
-	gitlab.com/elixxir/comms v0.0.0-20200925154004-716284cff8cb
-	gitlab.com/elixxir/crypto v0.0.0-20200921195205-bca0178268ec
-	gitlab.com/elixxir/ekv v0.1.2-0.20200917221437-9f9630da030a
-	gitlab.com/elixxir/primitives v0.0.0-20200915190719-f4586ec93f50
-	gitlab.com/xx_network/comms v0.0.0-20200925163950-5686bc0f8ab0
-	gitlab.com/xx_network/crypto v0.0.0-20200812183430-c77a5281c686
-	gitlab.com/xx_network/primitives v0.0.0-20200812183720-516a65a4a9b2
-	golang.org/x/sys v0.0.0-20200918174421-af09f7315aff // indirect
+	github.com/spf13/pflag v1.0.5 // indirect
+	github.com/spf13/viper v1.7.1
+	gitlab.com/elixxir/bloomfilter v0.0.0-20200930191214-10e9ac31b228
+	gitlab.com/elixxir/comms v0.0.4-0.20201229181327-0bc27d8c73a2
+	gitlab.com/elixxir/crypto v0.0.7-0.20201222203132-9b4cc1ae3da6
+	gitlab.com/elixxir/ekv v0.1.4-0.20201217220111-9c7e8be21577
+	gitlab.com/elixxir/primitives v0.0.3-0.20201222171449-bdfe30389bb5
+	gitlab.com/xx_network/comms v0.0.4-0.20201222193955-56206d700360
+	gitlab.com/xx_network/crypto v0.0.5-0.20201215233953-36cca1af8b2f
+	gitlab.com/xx_network/primitives v0.0.3
+	golang.org/x/crypto v0.0.0-20201217014255-9d1352758620
+	golang.org/x/net v0.0.0-20201110031124-69a78807bb2b // indirect
+	golang.org/x/sys v0.0.0-20201214210602-f9fddec55a1e // indirect
+	google.golang.org/genproto v0.0.0-20201119123407-9b1e624d6bc4 // indirect
+	google.golang.org/grpc v1.33.2 // indirect
 	google.golang.org/protobuf v1.25.0
+	gopkg.in/ini.v1 v1.61.0 // indirect
 )
 
 replace google.golang.org/grpc => github.com/grpc/grpc-go v1.27.1
diff --git a/go.mod b/go.mod
index 9e8a74f8c52c77b6215da8920ee507c3af023c18..a7449d7d7e9487829fa4feb003c8a34c7007f006 100644
--- a/go.mod
+++ b/go.mod
@@ -18,12 +18,12 @@ require (
 	github.com/spf13/pflag v1.0.5 // indirect
 	github.com/spf13/viper v1.7.1
 	gitlab.com/elixxir/bloomfilter v0.0.0-20200930191214-10e9ac31b228
-	gitlab.com/elixxir/comms v0.0.4-0.20201222203301-3ac9ed0add05
+	gitlab.com/elixxir/comms v0.0.4-0.20201229181327-0bc27d8c73a2
 	gitlab.com/elixxir/crypto v0.0.7-0.20201222203132-9b4cc1ae3da6
 	gitlab.com/elixxir/ekv v0.1.4-0.20201217220111-9c7e8be21577
 	gitlab.com/elixxir/primitives v0.0.3-0.20201222171449-bdfe30389bb5
 	gitlab.com/xx_network/comms v0.0.4-0.20201222193955-56206d700360
-	gitlab.com/xx_network/crypto v0.0.5-0.20201209162436-bc2308a94174
+	gitlab.com/xx_network/crypto v0.0.5-0.20201215233953-36cca1af8b2f
 	gitlab.com/xx_network/primitives v0.0.3
 	golang.org/x/crypto v0.0.0-20201217014255-9d1352758620
 	golang.org/x/net v0.0.0-20201110031124-69a78807bb2b // indirect
diff --git a/go.sum b/go.sum
index 9209e82c2c157305bc51f4c0f7ee8c29fd2b43a7..4c50d384ff7f648e3a8fe871bc998bc17438dcbb 100644
--- a/go.sum
+++ b/go.sum
@@ -20,6 +20,7 @@ github.com/armon/circbuf v0.0.0-20150827004946-bbbad097214e/go.mod h1:3U/XgcO3hC
 github.com/armon/consul-api v0.0.0-20180202201655-eb2c6b5be1b6/go.mod h1:grANhF5doyWs3UAsr3K4I6qtAmlQcZDesFNEHPZAzj8=
 github.com/armon/go-metrics v0.0.0-20180917152333-f0300d1749da/go.mod h1:Q73ZrmVTwzkszR9V5SSuryQ31EELlFMUz1kKyl939pY=
 github.com/armon/go-radix v0.0.0-20180808171621-7fddfc383310/go.mod h1:ufUuZ+zHj4x4TnLV4JWEpy2hxWSpsRywHrMgIH9cCH8=
+github.com/badoux/checkmail v1.2.1 h1:TzwYx5pnsV6anJweMx2auXdekBwGr/yt1GgalIx9nBQ=
 github.com/badoux/checkmail v1.2.1/go.mod h1:XroCOBU5zzZJcLvgwU15I+2xXyCdTWXyR9MGfRhBYy0=
 github.com/beorn7/perks v0.0.0-20180321164747-3a771d992973/go.mod h1:Dwedo/Wpr24TaqPxmxbtue+5NUziq4I4S80YR8gNf3Q=
 github.com/beorn7/perks v1.0.0/go.mod h1:KWe93zE9D1o94FZ5RNwFwVgaQK1VOXiVxmqh+CedLV8=
@@ -141,6 +142,7 @@ github.com/konsorten/go-windows-terminal-sequences v1.0.1/go.mod h1:T0+1ngSBFLxv
 github.com/kr/fs v0.1.0/go.mod h1:FFnZGqtBN9Gxj7eW1uZ42v5BccTP0vu6NEaFoC2HwRg=
 github.com/kr/logfmt v0.0.0-20140226030751-b84e30acd515/go.mod h1:+0opPa2QZZtGFBFZlji/RkVcI2GknAs/DXo4wKdlNEc=
 github.com/kr/pretty v0.1.0/go.mod h1:dAy3ld7l9f0ibDNOQOHHMYYIIbhfbHSm3C4ZsoJORNo=
+github.com/kr/pretty v0.2.1 h1:Fmg33tUaq4/8ym9TJN1x7sLJnHVwhP33CNkpYV/7rwI=
 github.com/kr/pretty v0.2.1/go.mod h1:ipq/a2n7PKx3OHsz4KJII5eveXtPO4qwEXGdVfWzfnI=
 github.com/kr/pty v1.1.1/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ=
 github.com/kr/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI=
@@ -172,6 +174,7 @@ github.com/modern-go/reflect2 v1.0.1/go.mod h1:bx2lNnkwVCuqBIxFjflWJWanXIb3Rllmb
 github.com/mwitkow/go-conntrack v0.0.0-20161129095857-cc309e4a2223/go.mod h1:qRWi+5nqEBWmkhHvq77mSJWrCKwh8bxhgT7d/eI7P4U=
 github.com/niemeyer/pretty v0.0.0-20200227124842-a10e7caefd8e h1:fD57ERR4JtEqsWbfPhv4DMiApHyliiK5xCTNVSPiaAs=
 github.com/niemeyer/pretty v0.0.0-20200227124842-a10e7caefd8e/go.mod h1:zD1mROLANZcx1PVRCS0qkT7pwLkGfwJo4zjcN/Tysno=
+github.com/nyaruka/phonenumbers v1.0.60 h1:nnAcNwmZflhegiImm6MkvjlRRyoaSw1ox/jGPAewWTg=
 github.com/nyaruka/phonenumbers v1.0.60/go.mod h1:sDaTZ/KPX5f8qyV9qN+hIm+4ZBARJrupC6LuhshJq1U=
 github.com/oklog/ulid v1.3.1/go.mod h1:CirwcVhetQ6Lv90oh/F+FBtV6XMibvdAFo93nm5qn4U=
 github.com/pascaldekloe/goe v0.0.0-20180627143212-57f6aae5913c/go.mod h1:lzWF7FIEvWOWxwDKqyGYQf6ZUaNfKdP144TG7ZOy1lc=
@@ -255,23 +258,14 @@ github.com/zeebo/pcg v1.0.0 h1:dt+dx+HvX8g7Un32rY9XWoYnd0NmKmrIzpHF7qiTDj0=
 github.com/zeebo/pcg v1.0.0/go.mod h1:09F0S9iiKrwn9rlI5yjLkmrug154/YRW6KnnXVDM/l4=
 gitlab.com/elixxir/bloomfilter v0.0.0-20200930191214-10e9ac31b228 h1:Gi6rj4mAlK0BJIk1HIzBVMjWNjIUfstrsXC2VqLYPcA=
 gitlab.com/elixxir/bloomfilter v0.0.0-20200930191214-10e9ac31b228/go.mod h1:H6jztdm0k+wEV2QGK/KYA+MY9nj9Zzatux/qIvDDv3k=
-gitlab.com/elixxir/comms v0.0.4-0.20201201195523-61ba033e1daa h1:b5F2rTq0sT5mS1VLn/ePrndQ+Zxw55l5RFfMWAphYDs=
-gitlab.com/elixxir/comms v0.0.4-0.20201201195523-61ba033e1daa/go.mod h1:UhXItTZXnA284//dhxT/HYn0JQl1gLtkqg+ixPssSIA=
-gitlab.com/elixxir/comms v0.0.4-0.20201215214310-78b71bb2bee0 h1:0l2HIt7Iw78j93j4qtQkNwSFon1EGI6aOQSr8FKsNiY=
-gitlab.com/elixxir/comms v0.0.4-0.20201215214310-78b71bb2bee0/go.mod h1:F5wQaxr3uG2LgFrRrG/fDK8nxhpVUhHkJkNAxuWjEHw=
-gitlab.com/elixxir/comms v0.0.4-0.20201222200127-1547d6e832f6 h1:2C7ocw82DVP9DWBm3HoFS2VoAe8OMqCePnkKNzhuq7I=
-gitlab.com/elixxir/comms v0.0.4-0.20201222200127-1547d6e832f6/go.mod h1:aFTxfGW2ks5dcZCBuPf8/m5kQLT3SzBtNAbCd3J3UyQ=
-gitlab.com/elixxir/comms v0.0.4-0.20201222203301-3ac9ed0add05 h1:7hE2WQOW6oCUtAn8FlWE4PsSHko5S5E5AFDhkwuoXRE=
-gitlab.com/elixxir/comms v0.0.4-0.20201222203301-3ac9ed0add05/go.mod h1:qvxbypPJrr5pvkeKv/QiO2B51jCi5nc3W//OAppP22g=
+gitlab.com/elixxir/comms v0.0.4-0.20201229181327-0bc27d8c73a2 h1:oz7/Ri5kjWM4MZ5yLS7SgK8ozLdI/0DXa8RAE53X2EM=
+gitlab.com/elixxir/comms v0.0.4-0.20201229181327-0bc27d8c73a2/go.mod h1:ezjHgNNuvDBeiFn+N2IcafKKV4ewhzzSpwSjxxaMCcA=
 gitlab.com/elixxir/crypto v0.0.0-20200804182833-984246dea2c4 h1:28ftZDeYEko7xptCZzeFWS1Iam95dj46TWFVVlKmw6A=
 gitlab.com/elixxir/crypto v0.0.0-20200804182833-984246dea2c4/go.mod h1:ucm9SFKJo+K0N2GwRRpaNr+tKXMIOVWzmyUD0SbOu2c=
 gitlab.com/elixxir/crypto v0.0.3 h1:znCt/x2bL4y8czTPaaFkwzdgSgW3BJc/1+dxyf1jqVw=
 gitlab.com/elixxir/crypto v0.0.3/go.mod h1:ZNgBOblhYToR4m8tj4cMvJ9UsJAUKq+p0gCp07WQmhA=
-gitlab.com/elixxir/crypto v0.0.6 h1:c94CGzBTV7LgInGHfmeJHrqq9nIc/WEOLUd9OeQBN74=
-gitlab.com/elixxir/crypto v0.0.6/go.mod h1:V8lricBRpa8v1ySymXQ1/lsb+8/lSak5S7ZWRT6OACY=
+gitlab.com/elixxir/crypto v0.0.7-0.20201222203132-9b4cc1ae3da6 h1:Vyf2wJ1/CoHLznATpI+z84OJQ+sgAbpVLT9P1CNjSVI=
 gitlab.com/elixxir/crypto v0.0.7-0.20201222203132-9b4cc1ae3da6/go.mod h1:NsIzH+TN592lMcmJGVzxUE64dObXuci7jo0qajyGahI=
-gitlab.com/elixxir/ekv v0.1.3 h1:OE+LBMIhjGUMwc6hHJzYvEPNJQV7t1vMnJyIgxUMUo8=
-gitlab.com/elixxir/ekv v0.1.3/go.mod h1:e6WPUt97taFZe5PFLPb1Dupk7tqmDCTQu1kkstqJvw4=
 gitlab.com/elixxir/ekv v0.1.4-0.20201217220111-9c7e8be21577 h1:qT3ZO9GbKv7PcmakATsXsUdzn/hlm817ETOT/csDIak=
 gitlab.com/elixxir/ekv v0.1.4-0.20201217220111-9c7e8be21577/go.mod h1:e6WPUt97taFZe5PFLPb1Dupk7tqmDCTQu1kkstqJvw4=
 gitlab.com/elixxir/primitives v0.0.0-20200731184040-494269b53b4d/go.mod h1:OQgUZq7SjnE0b+8+iIAT2eqQF+2IFHn73tOo+aV11mg=
@@ -279,37 +273,24 @@ gitlab.com/elixxir/primitives v0.0.0-20200804170709-a1896d262cd9/go.mod h1:p0Vel
 gitlab.com/elixxir/primitives v0.0.0-20200804182913-788f47bded40/go.mod h1:tzdFFvb1ESmuTCOl1z6+yf6oAICDxH2NPUemVgoNLxc=
 gitlab.com/elixxir/primitives v0.0.1 h1:q61anawANlNAExfkeQEE1NCsNih6vNV1FFLoUQX6txQ=
 gitlab.com/elixxir/primitives v0.0.1/go.mod h1:kNp47yPqja2lHSiS4DddTvFpB/4D9dB2YKnw5c+LJCE=
-gitlab.com/elixxir/primitives v0.0.3-0.20201116174806-97f190989704 h1:JkFREumz8skDqkCjjzZnlf5tg+PBiMB9kfVn9z0VEfE=
-gitlab.com/elixxir/primitives v0.0.3-0.20201116174806-97f190989704/go.mod h1:3fxFHSlQhkV4vs+S0dZEz3Om3m+40WX8L806yvSnNFc=
+gitlab.com/elixxir/primitives v0.0.3-0.20201222171449-bdfe30389bb5 h1:BUV1ouY+9NA5+ZF+QfTpIBL1vO5zk31I68N7DX9bKj8=
 gitlab.com/elixxir/primitives v0.0.3-0.20201222171449-bdfe30389bb5/go.mod h1:5Z8fce94mks0aFhMvzftx2jJpDx4/pzDU20G2oTiU9w=
 gitlab.com/xx_network/comms v0.0.0-20200805174823-841427dd5023/go.mod h1:owEcxTRl7gsoM8c3RQ5KAm5GstxrJp5tn+6JfQ4z5Hw=
-gitlab.com/xx_network/comms v0.0.4-0.20201119231004-a67d08045535 h1:3KoNUndePTAUMlX1xc+zk0wuOZMb/xJMUVuhS+HisdA=
-gitlab.com/xx_network/comms v0.0.4-0.20201119231004-a67d08045535/go.mod h1:YViGbRj7FjJYoaO4NpALGEd9dK/l8uUT000FEBbUTL8=
 gitlab.com/xx_network/comms v0.0.4-0.20201130190834-365ddae56e7b/go.mod h1:YViGbRj7FjJYoaO4NpALGEd9dK/l8uUT000FEBbUTL8=
-gitlab.com/xx_network/comms v0.0.4-0.20201202184223-c22375bd1e6d/go.mod h1:YViGbRj7FjJYoaO4NpALGEd9dK/l8uUT000FEBbUTL8=
-gitlab.com/xx_network/comms v0.0.4-0.20201203181401-3e7646e39ffd h1:rbk0gz/cRsMBvZ3SC59XgGdUIFym2W0lpitlykcCWdk=
-gitlab.com/xx_network/comms v0.0.4-0.20201203181401-3e7646e39ffd/go.mod h1:YViGbRj7FjJYoaO4NpALGEd9dK/l8uUT000FEBbUTL8=
-gitlab.com/xx_network/comms v0.0.4-0.20201215221519-b4c92324b090 h1:7J8iMiX7B6tNwbinP00GIARZy+O0L9P0IM8KcxXMK8g=
-gitlab.com/xx_network/comms v0.0.4-0.20201215221519-b4c92324b090/go.mod h1:YViGbRj7FjJYoaO4NpALGEd9dK/l8uUT000FEBbUTL8=
-gitlab.com/xx_network/comms v0.0.4-0.20201216015955-de7276bf8fb0 h1:+nspVlOrB2BrkoLPNBbDm5hm/1pco1g3ezDuZNcU0zk=
-gitlab.com/xx_network/comms v0.0.4-0.20201216015955-de7276bf8fb0/go.mod h1:YViGbRj7FjJYoaO4NpALGEd9dK/l8uUT000FEBbUTL8=
+gitlab.com/xx_network/comms v0.0.4-0.20201222193955-56206d700360 h1:IlPemXfxV/yyUl5bAV5yATQKtmrsL7SMzho5FqAUv0s=
 gitlab.com/xx_network/comms v0.0.4-0.20201222193955-56206d700360/go.mod h1:YViGbRj7FjJYoaO4NpALGEd9dK/l8uUT000FEBbUTL8=
 gitlab.com/xx_network/crypto v0.0.3/go.mod h1:DF2HYvvCw9wkBybXcXAgQMzX+MiGbFPjwt3t17VRqRE=
 gitlab.com/xx_network/crypto v0.0.4 h1:lpKOL5mTJ2awWMfgBy30oD/UvJVrWZzUimSHlOdZZxo=
 gitlab.com/xx_network/crypto v0.0.4/go.mod h1:+lcQEy+Th4eswFgQDwT0EXKp4AXrlubxalwQFH5O0Mk=
-gitlab.com/xx_network/crypto v0.0.5-0.20201124194022-366c10b1bce0 h1:v2xX/bl9lyZJZXXFZ6glDs7F/GNGIeKAH6hzafUNi5w=
-gitlab.com/xx_network/crypto v0.0.5-0.20201124194022-366c10b1bce0/go.mod h1:+lcQEy+Th4eswFgQDwT0EXKp4AXrlubxalwQFH5O0Mk=
 gitlab.com/xx_network/crypto v0.0.5-0.20201125005132-fd9d3cd31e0b/go.mod h1:+lcQEy+Th4eswFgQDwT0EXKp4AXrlubxalwQFH5O0Mk=
-gitlab.com/xx_network/crypto v0.0.5-0.20201203175549-582fde7fcbe1/go.mod h1:NM4Lk3//mOSlWwySpaH8FMmYZNm8qtjr6EawfaAHzH4=
-gitlab.com/xx_network/crypto v0.0.5-0.20201209162436-bc2308a94174 h1:KpVvbYTWFpEz7MgzbG3YzIcOsNQrUBCCLwRDC2sDqv8=
-gitlab.com/xx_network/crypto v0.0.5-0.20201209162436-bc2308a94174/go.mod h1:NM4Lk3//mOSlWwySpaH8FMmYZNm8qtjr6EawfaAHzH4=
+gitlab.com/xx_network/crypto v0.0.5-0.20201215233953-36cca1af8b2f h1:Qdd2h1FsX8KLdcAHn6TcT93ex23p3qcuwkg7XjAAx/g=
+gitlab.com/xx_network/crypto v0.0.5-0.20201215233953-36cca1af8b2f/go.mod h1:NM4Lk3//mOSlWwySpaH8FMmYZNm8qtjr6EawfaAHzH4=
 gitlab.com/xx_network/primitives v0.0.0-20200803231956-9b192c57ea7c/go.mod h1:wtdCMr7DPePz9qwctNoAUzZtbOSHSedcK++3Df3psjA=
 gitlab.com/xx_network/primitives v0.0.0-20200804183002-f99f7a7284da h1:CCVslUwNC7Ul7NG5nu3ThGTSVUt1TxNRX+47f5TUwnk=
 gitlab.com/xx_network/primitives v0.0.0-20200804183002-f99f7a7284da/go.mod h1:OK9xevzWCaPO7b1wiluVJGk7R5ZsuC7pHY5hteZFQug=
 gitlab.com/xx_network/primitives v0.0.2 h1:r45yKenJ9e7PylI1ZXJ1Es09oYNaYXjxVy9+uYlwo7Y=
 gitlab.com/xx_network/primitives v0.0.2/go.mod h1:cs0QlFpdMDI6lAo61lDRH2JZz+3aVkHy+QogOB6F/qc=
-gitlab.com/xx_network/primitives v0.0.3-0.20201116234927-44e42fc91e7c h1:mYId667WIN97E6KhPw4HDYyCjWzsG7gCM/HLTNTCXZQ=
-gitlab.com/xx_network/primitives v0.0.3-0.20201116234927-44e42fc91e7c/go.mod h1:cs0QlFpdMDI6lAo61lDRH2JZz+3aVkHy+QogOB6F/qc=
+gitlab.com/xx_network/primitives v0.0.3 h1:RBJGPtphUyDvN8iG8+VTF8tr5iT9f5WHo0NCbenspYE=
 gitlab.com/xx_network/primitives v0.0.3/go.mod h1:cs0QlFpdMDI6lAo61lDRH2JZz+3aVkHy+QogOB6F/qc=
 gitlab.com/xx_network/ring v0.0.2 h1:TlPjlbFdhtJrwvRgIg4ScdngMTaynx/ByHBRZiXCoL0=
 gitlab.com/xx_network/ring v0.0.2/go.mod h1:aLzpP2TiZTQut/PVHR40EJAomzugDdHXetbieRClXIM=
@@ -402,8 +383,6 @@ golang.org/x/sys v0.0.0-20200519105757-fe76b779f299/go.mod h1:h1NjWce9XRLGQEsW7w
 golang.org/x/sys v0.0.0-20200917073148-efd3b9a0ff20/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
 golang.org/x/sys v0.0.0-20200930185726-fdedc70b468f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
 golang.org/x/sys v0.0.0-20201029080932-201ba4db2418/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
-golang.org/x/sys v0.0.0-20201119102817-f84b799fce68 h1:nxC68pudNYkKU6jWhgrqdreuFiOQWj1Fs7T3VrH4Pjw=
-golang.org/x/sys v0.0.0-20201119102817-f84b799fce68/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
 golang.org/x/sys v0.0.0-20201214210602-f9fddec55a1e h1:AyodaIpKjppX+cBfTASF2E1US3H2JFBj920Ot3rtDjs=
 golang.org/x/sys v0.0.0-20201214210602-f9fddec55a1e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
 golang.org/x/term v0.0.0-20201117132131-f5c789dd3221/go.mod h1:Nr5EML6q2oocZ2LXRh80K7BxOlk5/8JxuGnuhpl+muw=
@@ -478,8 +457,7 @@ gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8
 gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
 gopkg.in/check.v1 v1.0.0-20200227125254-8fa46927fb4f h1:BLraFXnmrev5lT+xlilqcH8XK9/i0At2xKjWk4p6zsU=
 gopkg.in/check.v1 v1.0.0-20200227125254-8fa46927fb4f/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
-gopkg.in/check.v1 v1.0.0-20200902074654-038fdea0a05b h1:QRR6H1YWRnHb4Y/HeNFCTJLFVxaq6wH4YuVdsUOr75U=
-gopkg.in/check.v1 v1.0.0-20200902074654-038fdea0a05b/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
+gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c h1:Hei/4ADfdWqJk1ZMxUNpqntNwaWcugrBjAiHlqqRiVk=
 gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c/go.mod h1:JHkPIbrfpd72SG/EVd6muEfDQjcINNoR0C8j2r3qZ4Q=
 gopkg.in/errgo.v2 v2.1.0/go.mod h1:hNsd1EY+bozCKY1Ytp96fpM3vjJbqLJn88ws8XvfDNI=
 gopkg.in/ini.v1 v1.51.0/go.mod h1:pNLf8WUiyNEtQjuu5G5vTm06TEv9tsIgeAvK8hOrP4k=
@@ -492,6 +470,7 @@ gopkg.in/yaml.v2 v2.2.2/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
 gopkg.in/yaml.v2 v2.2.4/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
 gopkg.in/yaml.v2 v2.3.0 h1:clyUAQHOM3G0M3f5vQj7LuJrETvjVot3Z5el9nffUtU=
 gopkg.in/yaml.v2 v2.3.0/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
+gopkg.in/yaml.v2 v2.4.0 h1:D8xgwECY7CYvx+Y2n4sBz93Jn9JRvxdiyyo8CTfuKaY=
 gopkg.in/yaml.v2 v2.4.0/go.mod h1:RDklbk79AGWmwhnvt/jBztapEOGDOx6ZbXqjP6csGnQ=
 gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
 gopkg.in/yaml.v3 v3.0.0-20200615113413-eeeca48fe776 h1:tQIYjPdBoyREyB9XMu+nnTclpTYkz2zFM+lzLJFO4gQ=
diff --git a/network/message/parse/firstMessagePart_test.go b/network/message/parse/firstMessagePart_test.go
new file mode 100644
index 0000000000000000000000000000000000000000..009ac2aeb2558988d2054ff126b0655b114a6d9b
--- /dev/null
+++ b/network/message/parse/firstMessagePart_test.go
@@ -0,0 +1,73 @@
+package parse
+
+import (
+	"bytes"
+	"gitlab.com/elixxir/client/interfaces/message"
+	"reflect"
+	"testing"
+	"time"
+)
+
+var efmp = firstMessagePart{
+	messagePart: messagePart{
+		Data:     []byte{0, 0, 4, 53, 0, 0, 13, 2, 0, 0, 0, 2, 1, 0, 0, 0, 14, 215, 133, 90, 117, 0, 0, 0, 0, 254, 32, 116, 101, 115, 116, 105, 110, 103, 115, 116, 114, 105, 110, 103},
+		Id:       []byte{0, 0, 4, 53},
+		Part:     []byte{0},
+		Len:      []byte{0, 13},
+		Contents: []byte{116, 101, 115, 116, 105, 110, 103, 115, 116, 114, 105, 110, 103},
+	},
+	NumParts:  []byte{2},
+	Type:      []byte{0, 0, 0, 2},
+	Timestamp: []byte{1, 0, 0, 0, 14, 215, 133, 90, 117, 0, 0, 0, 0, 254, 32},
+}
+
+func TestNewFirstMessagePart(t *testing.T) {
+	fmp := newFirstMessagePart(
+		message.Text,
+		1077,
+		2,
+		time.Unix(1609786229, 0),
+		[]byte{'t', 'e', 's', 't', 'i', 'n', 'g',
+			's', 't', 'r', 'i', 'n', 'g'},
+	)
+
+	if !reflect.DeepEqual(fmp, efmp) {
+		t.Error("Expected and got firstMessagePart did not match")
+	}
+}
+
+func TestFirstMessagePartFromBytes(t *testing.T) {
+	fmp := FirstMessagePartFromBytes([]byte{0, 0, 4, 53, 0, 0, 13, 2, 0, 0, 0, 2, 1, 0, 0, 0, 14, 215, 133, 90, 117, 0, 0, 0, 0, 254, 32, 116, 101, 115, 116, 105, 110, 103, 115, 116, 114, 105, 110, 103})
+
+	if !reflect.DeepEqual(fmp, efmp) {
+		t.Error("Expected and got firstMessagePart did not match")
+	}
+}
+
+func TestFirstMessagePart_GetType(t *testing.T) {
+	if efmp.GetType() != message.Text {
+		t.Errorf("Got %v, expected %v", efmp.GetType(), message.Text)
+	}
+}
+
+func TestFirstMessagePart_GetNumParts(t *testing.T) {
+	if efmp.GetNumParts() != 2 {
+		t.Errorf("Got %v, expected %v", efmp.GetNumParts(), 2)
+	}
+}
+
+func TestFirstMessagePart_GetTimestamp(t *testing.T) {
+	et, err := efmp.GetTimestamp()
+	if err != nil {
+		t.Error(err)
+	}
+	if !time.Unix(1609786229, 0).Equal(et) {
+		t.Errorf("Got %v, expected %v", et, time.Unix(1609786229, 0))
+	}
+}
+
+func TestFirstMessagePart_Bytes(t *testing.T) {
+	if bytes.Compare(efmp.Bytes(), efmp.Data) != 0 {
+		t.Errorf("Got %v, expected %v", efmp.Bytes(), efmp.Data)
+	}
+}
diff --git a/network/message/parse/messagePart_test.go b/network/message/parse/messagePart_test.go
new file mode 100644
index 0000000000000000000000000000000000000000..5b08799edca8bbbcce88d33d8846fab207b0747c
--- /dev/null
+++ b/network/message/parse/messagePart_test.go
@@ -0,0 +1,66 @@
+package parse
+
+import (
+	"bytes"
+	"reflect"
+	"testing"
+)
+
+// This tests that a new function part is successfully created
+func Test_newMessagePart(t *testing.T) {
+	gotmp := newMessagePart(32, 6, []byte{'t', 'e', 's', 't', 'i', 'n', 'g'})
+	expectedmp := messagePart{
+		Data: []uint8{0x0, 0x0, 0x0, 0x20, 0x6, 0x0, 0x7, 0x74, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x67},
+		Id:   []uint8{0x0, 0x0, 0x0, 0x20}, Part: []uint8{0x6},
+		Len:      []uint8{0x0, 0x7},
+		Contents: []uint8{0x74, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x67},
+	}
+	if !reflect.DeepEqual(gotmp, expectedmp) {
+		t.Errorf("MessagePart received and MessagePart expected do not match.\n\tGot: %#v\n\tExpected: %#v", gotmp, expectedmp)
+	}
+}
+
+func TestMessagePart_GetID(t *testing.T) {
+	gotmp := newMessagePart(32, 6,
+		[]byte{'t', 'e', 's', 't', 'i', 'n', 'g'})
+	if gotmp.GetID() != 32 {
+		t.Errorf("received and expected do not match."+
+			"\n\tGot: %#v\n\tExpected: %#v", gotmp.GetID(), 32)
+	}
+}
+
+func TestMessagePart_GetPart(t *testing.T) {
+	gotmp := newMessagePart(32, 6,
+		[]byte{'t', 'e', 's', 't', 'i', 'n', 'g'})
+	if gotmp.GetPart() != 6 {
+		t.Errorf("received and expected do not match."+
+			"\n\tGot: %#v\n\tExpected: %#v", gotmp.GetPart(), 6)
+	}
+}
+
+func TestMessagePart_GetContents(t *testing.T) {
+	gotmp := newMessagePart(32, 6,
+		[]byte{'t', 'e', 's', 't', 'i', 'n', 'g'})
+	if bytes.Compare(gotmp.GetContents(), []byte{'t', 'e', 's', 't', 'i', 'n', 'g'}) != 0 {
+		t.Errorf("received and expected do not match."+
+			"\n\tGot: %#v\n\tExpected: %#v", gotmp.GetContents(), 6)
+	}
+}
+
+func TestMessagePart_GetSizedContents(t *testing.T) {
+	gotmp := newMessagePart(32, 6,
+		[]byte{'t', 'e', 's', 't', 'i', 'n', 'g'})
+	if bytes.Compare(gotmp.GetSizedContents(), []byte{'t', 'e', 's', 't', 'i', 'n', 'g'}) != 0 {
+		t.Errorf("received and expected do not match."+
+			"\n\tGot: %#v\n\tExpected: %#v", gotmp.GetSizedContents(), 6)
+	}
+}
+
+func TestMessagePart_GetContentsLength(t *testing.T) {
+	gotmp := newMessagePart(32, 6,
+		[]byte{'t', 'e', 's', 't', 'i', 'n', 'g'})
+	if gotmp.GetContentsLength() != 7 {
+		t.Errorf("received and expected do not match."+
+			"\n\tGot: %#v\n\tExpected: %#v", gotmp.GetContentsLength(), 7)
+	}
+}
diff --git a/network/message/parse/partition_test.go b/network/message/parse/partition_test.go
new file mode 100644
index 0000000000000000000000000000000000000000..041d07b79cfc7de364157dc665ac6f8c33752744
--- /dev/null
+++ b/network/message/parse/partition_test.go
@@ -0,0 +1,81 @@
+package parse
+
+import (
+	"gitlab.com/elixxir/client/interfaces/message"
+	"gitlab.com/elixxir/client/storage"
+	"gitlab.com/xx_network/primitives/id"
+	"testing"
+	"time"
+)
+
+var ipsumTestStr = "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Cras sit amet euismod est. Donec dolor " +
+	"neque, efficitur et interdum eu, lacinia quis mi. Duis bibendum elit ac lacus finibus pharetra. Suspendisse " +
+	"blandit erat in odio faucibus consectetur. Suspendisse sed consequat purus. Curabitur fringilla mi sit amet odio " +
+	"interdum suscipit. Etiam vitae dui posuere, congue mi a, convallis odio. In commodo risus at lorem volutpat " +
+	"placerat. In cursus magna purus, suscipit dictum lorem aliquam non. Praesent efficitur."
+
+// Test that NewPartitioner outputs a correctly formatted Partitioner
+func TestNewPartitioner(t *testing.T) {
+	storeSession := storage.InitTestingSession(t)
+	p := NewPartitioner(4096, storeSession)
+
+	if p.baseMessageSize != 4096 {
+		t.Errorf("baseMessageSize content mismatch"+
+			"\n\texpected: %v\n\treceived: %v",
+			4096, p.baseMessageSize)
+	}
+
+	if p.deltaFirstPart != 20 {
+		t.Errorf("deltaFirstPart content mismatch"+
+			"\n\texpected: %v\n\treceived: %v",
+			20, p.deltaFirstPart)
+	}
+
+	if p.firstContentsSize != 4069 {
+		t.Errorf("firstContentsSize content mismatch"+
+			"\n\texpected: %v\n\treceived: %v",
+			4069, p.firstContentsSize)
+	}
+
+	if p.maxSize != 1042675 {
+		t.Errorf("maxSize content mismatch"+
+			"\n\texpected: %v\n\treceived: %v",
+			1042675, p.maxSize)
+	}
+
+	if p.partContentsSize != 4089 {
+		t.Errorf("partContentsSize content mismatch"+
+			"\n\texpected: %v\n\treceived: %v",
+			4089, p.partContentsSize)
+	}
+
+	if p.session != storeSession {
+		t.Errorf("session content mismatch")
+	}
+}
+
+func TestPartitioner_Partition(t *testing.T) {
+	storeSession := storage.InitTestingSession(t)
+	p := NewPartitioner(len(ipsumTestStr), storeSession)
+
+	_, _, err := p.Partition(&id.DummyUser, message.Text,
+		time.Now(), []byte(ipsumTestStr))
+	if err != nil {
+		t.Error(err)
+	}
+}
+
+func TestPartitioner_HandlePartition(t *testing.T) {
+	storeSession := storage.InitTestingSession(t)
+	p := NewPartitioner(len(ipsumTestStr), storeSession)
+
+	m := newMessagePart(1107, 1, []byte(ipsumTestStr))
+
+	_, _ = p.HandlePartition(
+		&id.DummyUser,
+		message.None,
+		m.Bytes(),
+		[]byte{'t', 'e', 's', 't', 'i', 'n', 'g',
+			's', 't', 'r', 'i', 'n', 'g'},
+	)
+}
diff --git a/storage/session.go b/storage/session.go
index 771def537344d8386d28c5b5e09efd24f049d2e0..633dfd26937d78a757177f90c8a22cf5cd5c87cf 100644
--- a/storage/session.go
+++ b/storage/session.go
@@ -335,5 +335,8 @@ func InitTestingSession(i interface{}) *Session {
 		globals.Log.FATAL.Panicf("InitTestingSession failed to create dummy critical messages: %+v", err)
 	}
 
+	s.conversations = conversation.NewStore(s.kv)
+	s.partition = partition.New(s.kv)
+
 	return s
 }