diff --git a/Gopkg.toml b/Gopkg.toml
index 9ffe28add565f251284cd6375a7cc4163fe18529..90b77e21222338f0025053488999d73e798d7b50 100644
--- a/Gopkg.toml
+++ b/Gopkg.toml
@@ -6,10 +6,6 @@
   name = "github.com/hashicorp/go-retryablehttp"
   version = "=v0.5.4"
 
-[[constraint]]
-  name = "github.com/golang/protobuf"
-  version = "1.1.0"
-
 [[constraint]]
   branch = "master"
   name = "golang.org/x/net"
diff --git a/handler/generate_certificate.go b/handler/generate_certificate.go
index 78769906a2e7f1aa90990db9e368087b4c252ad1..086ee2fb2dd865791bafd21f6ec8d2f6e58b5687 100644
--- a/handler/generate_certificate.go
+++ b/handler/generate_certificate.go
@@ -45,7 +45,7 @@ func (s *KeyStorageServerImpl) GenerateCertificate(ctx context.Context, in *api.
 		Content: certificateBytes,
 	}
 
-	result, errors, err := client.DoPutDataCall("keys", in.Uuid+"/"+api.KeyType.String(api.KeyType_CERTIFICATE), certificateMessage, versions.EntitiesManagementAgentApiVersion)
+	result, errors, err := client.PutData("keys", in.Uuid+"/"+api.KeyType.String(api.KeyType_CERTIFICATE), certificateMessage)
 	generateCertificateResponse.StatusList = handlePutDataErrors(generateCertificateResponse.StatusList, errors, err)
 
 	if generateCertificateResponse.StatusList == nil || len(generateCertificateResponse.StatusList) == 0 {
diff --git a/handler/generate_keypair.go b/handler/generate_keypair.go
index 02a308034306550469dd1001d7160bea648f56ee..a787c3dd68898c1b0f9788eb197a0052527129d5 100644
--- a/handler/generate_keypair.go
+++ b/handler/generate_keypair.go
@@ -30,7 +30,6 @@ import (
 	keyutils "code.vereign.com/code/key-storage-agent/utils"
 	"code.vereign.com/code/viam-apis/key-storage-agent/api"
 	"code.vereign.com/code/viam-apis/utils"
-	"code.vereign.com/code/viam-apis/versions"
 	"golang.org/x/net/context"
 )
 
@@ -73,22 +72,19 @@ func (s *KeyStorageServerImpl) GenerateKeyPair(ctx context.Context,
 		return generateKeyPairResponse, nil
 	}
 	encryptedPrivateKey := &api.Key{Content: encryptedPrivateKeyBytes}
-	result, errors, err := client.DoPutDataCall("keys", uuid+"/"+api.KeyType.String(api.KeyType_PRIVATE),
-		encryptedPrivateKey, versions.EntitiesManagementAgentApiVersion)
+	result, errors, err := client.PutData("keys", uuid+"/"+api.KeyType.String(api.KeyType_PRIVATE), encryptedPrivateKey)
 	generateKeyPairResponse.StatusList = keyutils.HandlePutDataErrors(generateKeyPairResponse.StatusList, errors, err)
 
 	if generateKeyPairResponse.StatusList == nil || len(generateKeyPairResponse.StatusList) == 0 {
 		publicKey := &api.Key{Content: publicKeyBytes}
-		result, errors, err = client.DoPutDataCall("keys", uuid+"/"+api.KeyType.String(api.KeyType_PUBLIC),
-			publicKey, versions.EntitiesManagementAgentApiVersion)
+		result, errors, err = client.PutData("keys", uuid+"/"+api.KeyType.String(api.KeyType_PUBLIC), publicKey)
 		generateKeyPairResponse.StatusList = keyutils.HandlePutDataErrors(generateKeyPairResponse.StatusList, errors, err)
 	}
 
 	//duplicate logic of ReserveKeyUUID
 	if generateKeyPairResponse.StatusList == nil || len(generateKeyPairResponse.StatusList) == 0 {
 		emptyKey := &api.Key{Content: []byte{}}
-		result, errors, err = client.DoPutDataCall("keys", uuid+"/"+api.KeyType.String(api.KeyType_CERTIFICATE),
-			emptyKey, versions.EntitiesManagementAgentApiVersion)
+		result, errors, err = client.PutData("keys", uuid+"/"+api.KeyType.String(api.KeyType_CERTIFICATE), emptyKey)
 		generateKeyPairResponse.StatusList = keyutils.HandlePutDataErrors(generateKeyPairResponse.StatusList, errors, err)
 	}
 
@@ -103,7 +99,7 @@ func (s *KeyStorageServerImpl) GenerateKeyPair(ctx context.Context,
 
 		encryptedAesKey := &api.Key{Content: encryptedAesKeyBytes}
 
-		result, errors, err = client.DoPutDataCall("keys", uuid+"/"+api.KeyType.String(api.KeyType_AES), encryptedAesKey, versions.EntitiesManagementAgentApiVersion)
+		result, errors, err = client.PutData("keys", uuid+"/"+api.KeyType.String(api.KeyType_AES), encryptedAesKey)
 		generateKeyPairResponse.StatusList = keyutils.HandlePutDataErrors(generateKeyPairResponse.StatusList, errors, err)
 	}
 
@@ -118,7 +114,7 @@ func (s *KeyStorageServerImpl) GenerateKeyPair(ctx context.Context,
 
 		encryptedNonce := &api.Key{Content: encryptedPrivateKeyNonceBytes}
 
-		result, errors, err = client.DoPutDataCall("keys", uuid+"/"+api.KeyType.String(api.KeyType_NONCE), encryptedNonce, versions.EntitiesManagementAgentApiVersion)
+		result, errors, err = client.PutData("keys", uuid+"/"+api.KeyType.String(api.KeyType_NONCE), encryptedNonce)
 		generateKeyPairResponse.StatusList = keyutils.HandlePutDataErrors(generateKeyPairResponse.StatusList, errors, err)
 	}
 
diff --git a/handler/handler.go b/handler/handler.go
index ce02346f7c78749b703392c61c5d74dfcafcc347..4c2ce23cb1b61be9694abca7ad1792dcdafc188d 100644
--- a/handler/handler.go
+++ b/handler/handler.go
@@ -22,10 +22,7 @@ import (
 	"errors"
 	"log"
 	"strings"
-
 	"code.vereign.com/code/viam-apis/clientutils"
-	"code.vereign.com/code/viam-apis/versions"
-	"github.com/golang/protobuf/proto"
 
 	keyutils "code.vereign.com/code/key-storage-agent/utils"
 	"code.vereign.com/code/viam-apis/authentication"
@@ -100,25 +97,33 @@ func (s *KeyStorageServerImpl) GetKey(ctx context.Context, in *api.GetKeyRequest
 		return getKeyResponse, nil
 	}
 
-	data, err := client.DoGetDataCall("keys", in.Uuid+"/"+api.KeyType.String(in.KeyType))
+	key := &api.Key{}
+
+	hasData, errorsString, err := client.GetData("keys", in.Uuid+"/"+api.KeyType.String(in.KeyType), key)
 	if err != nil {
-		log.Printf("grpc call DoGetDataCall to DataStorage failed: %s", err)
+		log.Printf("grpc call GetData to DataStorage failed: %s", err)
 		getKeyResponse.Key = nil
 		getKeyResponse.StatusList = utils.AddStatus(getKeyResponse.StatusList,
 			"500", api.StatusType_ERROR, err.Error())
 		return getKeyResponse, nil
 	}
 
-	if data.Errors != "" {
+	if errorsString != "" {
 		getKeyResponse.Key = nil
 		getKeyResponse.StatusList = utils.AddStatus(getKeyResponse.StatusList,
-			"500", api.StatusType_ERROR, data.Errors)
-	} else {
-		key := &api.Key{}
-		proto.Unmarshal(data.Data.Data, key)
-		getKeyResponse.Key = key
+			"500", api.StatusType_ERROR, errorsString)
+	}
+	
+	if !hasData {
+		log.Println("No such key " + in.Uuid)
+		getKeyResponse.Key = nil
+		getKeyResponse.StatusList = utils.AddStatus(getKeyResponse.StatusList,
+			"500", api.StatusType_ERROR, err.Error())
+		return getKeyResponse, nil
 	}
 
+	getKeyResponse.Key = key
+
 	return getKeyResponse, nil
 }
 
@@ -142,29 +147,23 @@ func (s *KeyStorageServerImpl) SetKey(ctx context.Context, in *api.SetKeyRequest
 		return setKeyResponse, nil
 	}
 
-	data, err := client.DoGetDataCall("keys", in.Uuid+"/"+api.KeyType.String(in.KeyType))
+	key := &api.Key{}
+
+	_, _, err := client.GetData("keys", in.Uuid+"/"+api.KeyType.String(in.KeyType), key)
 	if err != nil {
-		log.Printf("grpc call DoGetDataCall to DataStorage failed: %s", err)
+		log.Printf("grpc call GetData to DataStorage failed: %s", err)
 		setKeyResponse.StatusList = utils.AddStatus(setKeyResponse.StatusList,
 			"500", api.StatusType_ERROR, err.Error())
 		return setKeyResponse, nil
 	}
 
-	if data.Errors != "" {
-		setKeyResponse.StatusList = utils.AddStatus(setKeyResponse.StatusList,
-			"400", api.StatusType_ERROR, data.Errors)
-		return setKeyResponse, nil
-	}
-
-	key := &api.Key{}
-	proto.Unmarshal(data.Data.Data, key)
-	if key != nil && key.Content != nil && len(key.Content) > 0 {
+	if len(key.Content) > 0 {
 		setKeyResponse.StatusList = utils.AddStatus(setKeyResponse.StatusList,
 			"400", api.StatusType_ERROR, "Key is already set")
 		return setKeyResponse, nil
 	}
 
-	result, errors, err := client.DoPutDataCall("keys", in.Uuid+"/"+api.KeyType.String(in.KeyType), in.Key, versions.EntitiesManagementAgentApiVersion)
+	result, errors, err := client.PutData("keys", in.Uuid+"/"+api.KeyType.String(in.KeyType), in.Key)
 	setKeyResponse.StatusList = keyutils.HandlePutDataErrors(setKeyResponse.StatusList, errors, err)
 
 	if setKeyResponse.StatusList == nil || len(setKeyResponse.StatusList) == 0 {
@@ -175,10 +174,9 @@ func (s *KeyStorageServerImpl) SetKey(ctx context.Context, in *api.SetKeyRequest
 	if in.KeyType == api.KeyType_PUBLIC {
 		keyContent := base64.StdEncoding.EncodeToString(in.Key.Content)
 
-		_, _, err = client.DoPutDataCallWithString(keyToKeyIdTable, keyContent,
-			in.Uuid, versions.EntitiesManagementAgentApiVersion)
+		_, _, err = client.PutString(keyToKeyIdTable, keyContent, in.Uuid)
 		if err != nil {
-			log.Printf("can't DoPutDataCallWithString: %s", err)
+			log.Printf("can't PutString: %s", err)
 			return nil, err
 		}
 	}
@@ -205,16 +203,16 @@ func (s *KeyStorageServerImpl) ReserveKeyUUID(ctx context.Context, in *api.Reser
 		Content: []byte{},
 	}
 
-	result, errors, err := client.DoPutDataCall("keys", uuid+"/"+api.KeyType.String(api.KeyType_PRIVATE), emptyKey, versions.EntitiesManagementAgentApiVersion)
+	result, errors, err := client.PutData("keys", uuid+"/"+api.KeyType.String(api.KeyType_PRIVATE), emptyKey)
 	reserveKeyUUIDResponse.StatusList = keyutils.HandlePutDataErrors(reserveKeyUUIDResponse.StatusList, errors, err)
 
 	if reserveKeyUUIDResponse.StatusList == nil || len(reserveKeyUUIDResponse.StatusList) == 0 {
-		result, errors, err = client.DoPutDataCall("keys", uuid+"/"+api.KeyType.String(api.KeyType_PUBLIC), emptyKey, versions.EntitiesManagementAgentApiVersion)
+		result, errors, err = client.PutData("keys", uuid+"/"+api.KeyType.String(api.KeyType_PUBLIC), emptyKey)
 		reserveKeyUUIDResponse.StatusList = keyutils.HandlePutDataErrors(reserveKeyUUIDResponse.StatusList, errors, err)
 	}
 
 	if reserveKeyUUIDResponse.StatusList == nil || len(reserveKeyUUIDResponse.StatusList) == 0 {
-		result, errors, err = client.DoPutDataCall("keys", uuid+"/"+api.KeyType.String(api.KeyType_CERTIFICATE), emptyKey, versions.EntitiesManagementAgentApiVersion)
+		result, errors, err = client.PutData("keys", uuid+"/"+api.KeyType.String(api.KeyType_CERTIFICATE), emptyKey)
 		reserveKeyUUIDResponse.StatusList = keyutils.HandlePutDataErrors(reserveKeyUUIDResponse.StatusList, errors, err)
 	}
 
@@ -238,10 +236,9 @@ func (s *KeyStorageServerImpl) GetKeyId(ctx context.Context, in *api.GetKeyIdByK
 
 	keyIdResponse := &api.GetKeyIdByKeyResponse{}
 
-	response, err := dataStorageClient.DoGetDataCall(keyToKeyIdTable, in.PublicKey)
-	if err == nil && response.Data != nil && response.Data.Data != nil {
-		keyID := string(response.Data.Data)
-		keyIdResponse.KeyId = keyID
+	keyId, errorsString, err := dataStorageClient.GetString(keyToKeyIdTable, in.PublicKey)
+	if err == nil && errorsString == "" && keyId != "" {
+		keyIdResponse.KeyId = keyId
 		return keyIdResponse, nil
 	} else {
 		if err != nil {
@@ -260,17 +257,21 @@ func (s *KeyStorageServerImpl) GetKeyId(ctx context.Context, in *api.GetKeyIdByK
 	for _, checkID := range entity.AuthenticationKeys {
 		key := &api.Key{}
 
-		data, err := dataStorageClient.DoGetDataCall("keys", checkID+"/"+api.KeyType_PUBLIC.String())
+		hasData, errorsString, err := dataStorageClient.GetData("keys", checkID+"/"+api.KeyType_PUBLIC.String(), key)
 
 		if err != nil {
-			log.Printf("grpc call GetKeyId to DataStorage failed: %s", err)
+			log.Printf("grpc call GetData to DataStorage failed: %s", err)
 			return nil, err
 		}
 
-		if data.Errors != "" {
-			return nil, errors.New(data.Errors)
-		} else {
-			proto.Unmarshal(data.Data.Data, key)
+		if errorsString != "" {
+			log.Printf("Error: %s", errorsString)
+			return nil, errors.New(errorsString)
+		}
+	
+		if !hasData {
+			log.Println("No such checkID " + checkID)
+			return nil, errors.New("No such checkID " + checkID)
 		}
 
 		keyFromStorage := base64.StdEncoding.EncodeToString(key.Content)
@@ -279,10 +280,9 @@ func (s *KeyStorageServerImpl) GetKeyId(ctx context.Context, in *api.GetKeyIdByK
 			continue
 		}
 
-		_, _, err = dataStorageClient.DoPutDataCallWithString(keyToKeyIdTable, in.PublicKey,
-			checkID, versions.EntitiesManagementAgentApiVersion)
+		_, _, err = dataStorageClient.PutString(keyToKeyIdTable, in.PublicKey, checkID)
 		if err != nil {
-			log.Printf("can't DoPutDataCallWithString: %s", err)
+			log.Printf("can't PutString: %s", err)
 
 			return nil, err
 		}
diff --git a/handler/manage_device_key.go b/handler/manage_device_key.go
index 72a389523ec64a221ee2add91189beb7bb959259..9bae5c34ac768d941c29e22474055d0710dc31da 100644
--- a/handler/manage_device_key.go
+++ b/handler/manage_device_key.go
@@ -22,7 +22,6 @@ import (
 	"code.vereign.com/code/viam-apis/data-storage-agent/client"
 	"code.vereign.com/code/viam-apis/key-storage-agent/api"
 	"code.vereign.com/code/viam-apis/utils"
-	"code.vereign.com/code/viam-apis/versions"
 	"golang.org/x/net/context"
 )
 
@@ -116,7 +115,7 @@ func updateKey(client *client.DataStorageClientImpl, uuid string, keyType api.Ke
 
 	update(key)
 
-	_, errors, err := client.DoPutDataCall("keys", uuid+"/"+api.KeyType.String(keyType), key, versions.EntitiesManagementAgentApiVersion)
+	_, errors, err := client.PutData("keys", uuid+"/"+api.KeyType.String(keyType), key)
 	statusList = keyutils.HandlePutDataErrors(statusList, errors, err)
 	if statusList != nil && len(statusList) > 0 {
 		return statusList
diff --git a/utils/utils.go b/utils/utils.go
index aaf072029e81bb2f67e244ae96f9cda74ea68bb3..a8158a3d5c73485866e9601c9a20c96646262425 100644
--- a/utils/utils.go
+++ b/utils/utils.go
@@ -36,7 +36,6 @@ import (
 	emclient "code.vereign.com/code/viam-apis/entities-management-agent/client"
 	"code.vereign.com/code/viam-apis/key-storage-agent/api"
 	"code.vereign.com/code/viam-apis/utils"
-	"github.com/golang/protobuf/proto"
 )
 
 func GenerateUnusedUUID(client *client.DataStorageClientImpl) (string, error) {
@@ -45,9 +44,10 @@ func GenerateUnusedUUID(client *client.DataStorageClientImpl) (string, error) {
 		uuid, err := NewUUID()
 
 		// check that uuid is not used
-		data, _ := client.DoGetDataCall("keys", uuid+"/"+api.KeyType.String(api.KeyType_PRIVATE))
+		key := &api.Key{}
 
-		if data == nil || data.Errors != "" || err != nil {
+		hasData, _, err := client.GetData("keys", uuid+"/"+api.KeyType.String(api.KeyType_PRIVATE), key)
+		if err != nil || !hasData {
 			return uuid, nil
 		}
 		if count >= 10 {
@@ -136,14 +136,25 @@ func ReadPemBlockFromFile(fileName string) (*pem.Block, error) {
 func GetKey(client *client.DataStorageClientImpl, uuid string, keyType api.KeyType) (*api.Key, []*api.Status) {
 	statusList := []*api.Status{}
 
-	data, _ := client.DoGetDataCall("keys", uuid+"/"+api.KeyType.String(keyType))
-	if data.Errors != "" {
-		statusList = utils.AddStatus(statusList, "400", api.StatusType_ERROR, data.Errors)
+	key := &api.Key{}
+
+	_, errorsString, err := client.GetData("keys", uuid+"/"+api.KeyType.String(keyType), key)
+	if err != nil {
+		statusList = utils.AddStatus(statusList, "400", api.StatusType_ERROR, errorsString)
 		return nil, statusList
 	}
 
-	key := &api.Key{}
-	proto.Unmarshal(data.Data.Data, key)
+	/*
+	if errorsString != "" {
+		statusList = utils.AddStatus(statusList, "400", api.StatusType_ERROR, errorsString)
+		return nil, statusList
+	}
+
+	if !hasData {
+		statusList = utils.AddStatus(statusList, "400", api.StatusType_ERROR, errorsString)
+		return nil, statusList
+	}
+	*/
 
 	return key, nil
 }