diff --git a/api/client.go b/api/client.go
index 37227372bfd21c14d5eff5ee88a3f909dbc819bf..4ae049f7232a4eb679945826b37be534279d67ef 100644
--- a/api/client.go
+++ b/api/client.go
@@ -200,18 +200,17 @@ func Login(storageDir string, password []byte, parameters params.Network) (*Clie
 	def := c.storage.GetBaseNDF()
 
 	//initialize permissioning
-	if def.Registration.Address != ""{
+	if def.Registration.Address != "" {
 		err = c.initPermissioning(def)
 		if err != nil {
 			return nil, err
 		}
-	}else{
+	} else {
 		jww.WARN.Printf("Registration with permissioning skipped due to " +
 			"blank permissionign address. Client will not be able to register " +
 			"or track network.")
 	}
 
-
 	// Initialize network and link it to context
 	c.network, err = network.NewManager(c.storage, c.switchboard, c.rng, c.comms,
 		parameters, def)
@@ -264,12 +263,12 @@ func LoginWithNewBaseNDF_UNSAFE(storageDir string, password []byte,
 	c.storage.SetBaseNDF(def)
 
 	//initialize permissioning
-	if def.Registration.Address != ""{
+	if def.Registration.Address != "" {
 		err = c.initPermissioning(def)
 		if err != nil {
 			return nil, err
 		}
-	}else{
+	} else {
 		jww.WARN.Printf("Registration with permissioning skipped due to " +
 			"blank permissionign address. Client will not be able to register " +
 			"or track network.")
@@ -294,7 +293,7 @@ func LoginWithNewBaseNDF_UNSAFE(storageDir string, password []byte,
 	return c, nil
 }
 
-func (c *Client)initComms()error{
+func (c *Client) initComms() error {
 	var err error
 
 	//get the user from session
@@ -312,7 +311,7 @@ func (c *Client)initComms()error{
 	return nil
 }
 
-func (c *Client)initPermissioning(def *ndf.NetworkDefinition)error{
+func (c *Client) initPermissioning(def *ndf.NetworkDefinition) error {
 	var err error
 	//initialize permissioning
 	c.permissioning, err = permissioning.Init(c.comms, def)
@@ -328,7 +327,7 @@ func (c *Client)initPermissioning(def *ndf.NetworkDefinition)error{
 	}
 
 	//register with permissioning if necessary
-	if c.storage.GetRegistrationStatus() == storage.KeyGenComplete  {
+	if c.storage.GetRegistrationStatus() == storage.KeyGenComplete {
 		jww.INFO.Printf("Client has not registered yet, attempting registration")
 		err = c.registerWithPermissioning()
 		if err != nil {
@@ -494,12 +493,12 @@ func parseNDF(ndfString string) (*ndf.NetworkDefinition, error) {
 		return nil, errors.New("ndf file empty")
 	}
 
-	ndf, _, err := ndf.DecodeNDF(ndfString)
+	netDef, err := ndf.Unmarshal([]byte(ndfString))
 	if err != nil {
 		return nil, err
 	}
 
-	return ndf, nil
+	return netDef, nil
 }
 
 // decodeGroups returns the e2e and cmix groups from the ndf
diff --git a/go.mod b/go.mod
index 2fbba8fc974e087ef56e3430beb6d11f9c9ade3a..fdcc62c585c1689e100b60b299f140770592e57a 100644
--- a/go.mod
+++ b/go.mod
@@ -17,13 +17,13 @@ require (
 	github.com/spf13/jwalterweatherman v1.1.0
 	github.com/spf13/viper v1.7.1
 	gitlab.com/elixxir/bloomfilter v0.0.0-20200930191214-10e9ac31b228
-	gitlab.com/elixxir/comms v0.0.4-0.20210224201549-05a3392fe85d
+	gitlab.com/elixxir/comms v0.0.4-0.20210226003144-c355c2c144be
 	gitlab.com/elixxir/crypto v0.0.7-0.20210223210315-b2072c080b0f
 	gitlab.com/elixxir/ekv v0.1.4
 	gitlab.com/elixxir/primitives v0.0.3-0.20210225041422-ada5b068c1e3
 	gitlab.com/xx_network/comms v0.0.4-0.20210224201327-b0ce36c0c989
 	gitlab.com/xx_network/crypto v0.0.5-0.20210223210125-9c1a8a8f1ec6
-	gitlab.com/xx_network/primitives v0.0.4-0.20210219231511-983054dbee36
+	gitlab.com/xx_network/primitives v0.0.4-0.20210226002915-98505d29e226
 	golang.org/x/crypto v0.0.0-20201221181555-eec23a3978ad
 	golang.org/x/net v0.0.0-20201224014010-6772e930b67b // indirect
 	golang.org/x/sys v0.0.0-20210105210732-16f7687f5001 // indirect
diff --git a/go.sum b/go.sum
index b168f9728b9715e837ac44c7ef2b559016215281..68d76cfc6d18934c7263a874187817ac63490853 100644
--- a/go.sum
+++ b/go.sum
@@ -266,6 +266,10 @@ gitlab.com/elixxir/comms v0.0.4-0.20210224021944-cd529dde0d9c h1:RKcc/BQvang3/18
 gitlab.com/elixxir/comms v0.0.4-0.20210224021944-cd529dde0d9c/go.mod h1:znfqB4b+psDERWqk4ouIJZsLHOKJCTz0fdU2f4vuL/Q=
 gitlab.com/elixxir/comms v0.0.4-0.20210224201549-05a3392fe85d h1:aiyHDxKAennndmqWUOxGv+ZYqmB5Y3M9h3nDn3eZl8U=
 gitlab.com/elixxir/comms v0.0.4-0.20210224201549-05a3392fe85d/go.mod h1:6hU+ea9l07dWBW/3UXVLQVqrjU0oeWjK/zqXmPAMcFE=
+gitlab.com/elixxir/comms v0.0.4-0.20210225225426-d248193a8206 h1:QWynANT3Q7eGqSOp0XCReHuTCP0ZjZHwnYwKTwgLpa8=
+gitlab.com/elixxir/comms v0.0.4-0.20210225225426-d248193a8206/go.mod h1:VyqHEmIVDIV1zIzybp0nW90b1pWrY699UhTlCZU9luY=
+gitlab.com/elixxir/comms v0.0.4-0.20210226003144-c355c2c144be h1:PdvRA6sEH0Yz2FZf/7QniR50oUHifgLWX3kvz+9aBg0=
+gitlab.com/elixxir/comms v0.0.4-0.20210226003144-c355c2c144be/go.mod h1:NcEULCNKWgaMBg/U5cDhK/xre9pLl4LU0JrnH6utSjI=
 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=
@@ -328,6 +332,10 @@ gitlab.com/xx_network/primitives v0.0.4-0.20210219220414-99c389307a84 h1:dvc/2RM
 gitlab.com/xx_network/primitives v0.0.4-0.20210219220414-99c389307a84/go.mod h1:9imZHvYwNFobxueSvVtHneZLk9wTK7HQTzxPm+zhFhE=
 gitlab.com/xx_network/primitives v0.0.4-0.20210219231511-983054dbee36 h1:41qeW7XB9Rllsi6fe37+eaQCLjTGchpvcJqwEvZxeXE=
 gitlab.com/xx_network/primitives v0.0.4-0.20210219231511-983054dbee36/go.mod h1:9imZHvYwNFobxueSvVtHneZLk9wTK7HQTzxPm+zhFhE=
+gitlab.com/xx_network/primitives v0.0.4-0.20210225223101-70e1cb72acae h1:N2zhWcx3c4tBV/bK2Tm/dEQ2WoqnPrZm45PflPRawf0=
+gitlab.com/xx_network/primitives v0.0.4-0.20210225223101-70e1cb72acae/go.mod h1:9imZHvYwNFobxueSvVtHneZLk9wTK7HQTzxPm+zhFhE=
+gitlab.com/xx_network/primitives v0.0.4-0.20210226002915-98505d29e226 h1:/Mpf0JU9Nnoh1qkx6OzJyhCMjmyg9eAfNtVSJkYHIpc=
+gitlab.com/xx_network/primitives v0.0.4-0.20210226002915-98505d29e226/go.mod h1:9imZHvYwNFobxueSvVtHneZLk9wTK7HQTzxPm+zhFhE=
 gitlab.com/xx_network/ring v0.0.2 h1:TlPjlbFdhtJrwvRgIg4ScdngMTaynx/ByHBRZiXCoL0=
 gitlab.com/xx_network/ring v0.0.2/go.mod h1:aLzpP2TiZTQut/PVHR40EJAomzugDdHXetbieRClXIM=
 go.etcd.io/bbolt v1.3.2/go.mod h1:IbVyRI1SCnLcuJnV2u8VeU0CEYM7e686BmAb1XKL+uU=
diff --git a/storage/utility/NDF.go b/storage/utility/NDF.go
index 5222b4526bdd234e3c86d8ad2d82cc97ecdf5b3d..c7d3800de892ed6fda6e1e8feef0dcaa455131f9 100644
--- a/storage/utility/NDF.go
+++ b/storage/utility/NDF.go
@@ -21,12 +21,12 @@ func LoadNDF(kv *versioned.KV, key string) (*ndf.NetworkDefinition, error) {
 		return nil, err
 	}
 
-	ndf, _, err := ndf.DecodeNDF(string(vo.Data))
+	netDef, err := ndf.Unmarshal(vo.Data)
 	if err != nil {
 		return nil, err
 	}
 
-	return ndf, err
+	return netDef, err
 }
 
 func SaveNDF(kv *versioned.KV, key string, ndf *ndf.NetworkDefinition) error {