diff --git a/goKMS/config/config.go b/goKMS/config/config.go
index c8baeca69f0be281a714549db0b230dc8baa8844..44551cfdcebba2ddc5ddbc9cd010524915a4d155 100644
--- a/goKMS/config/config.go
+++ b/goKMS/config/config.go
@@ -37,8 +37,8 @@ type QuantumModule struct {
 	QmType      string `yaml:"Type"`
 	Address     string `yaml:"Address"`
 	Hostname    string `yaml:"Hostname"`
-	MasterSAEID string `yaml:"MasterSAEID"`
-	SlaveSAEID  string `yaml:"SlaveSAEID"`
+	LocalSAEID  string `yaml:"LocalSAEID"`
+	TargetSAEID string `yaml:"TargetSAEID"`
 	MasterMode  bool   `yaml:"MasterMode"`
 }
 
diff --git a/goKMS/kms/etsi/etsi14/client/client.go b/goKMS/kms/etsi/etsi14/client/client.go
index ef7de47bb2cb475cb8f7353d5377f711748279f0..f0fdeb3e2c2f2b774905610583cf66d0647c01ab 100644
--- a/goKMS/kms/etsi/etsi14/client/client.go
+++ b/goKMS/kms/etsi/etsi14/client/client.go
@@ -5,7 +5,6 @@ import (
 	"net/http"
 
 	restclient "code.fbi.h-da.de/danet/quant/etsi014/go/rest/etsi/client"
-	"github.com/sirupsen/logrus"
 )
 
 type ClientImpl struct {
@@ -20,40 +19,46 @@ func NewClientImpl(clientConf *restclient.Configuration) (*ClientImpl, error) {
 	}, nil
 }
 
-func (c *ClientImpl) GetStatus(slaveSAEID string) (*restclient.Status, *http.Response, error) {
-	req := c.restClient.DefaultAPI.GetStatus(context.Background(), slaveSAEID)
+func (c *ClientImpl) GetStatus(targetSAEID string) (*restclient.Status, *http.Response, error) {
+	req := c.restClient.DefaultAPI.GetStatus(context.Background(), targetSAEID)
 	return req.Execute()
 }
 
-func (c *ClientImpl) GetKey(slaveSAEID string) (*restclient.KeyContainer, *http.Response, error) {
-	req := c.restClient.DefaultAPI.GetKey(context.Background(), slaveSAEID).Number(1).Size(256)
+func (c *ClientImpl) GetKey(targetSAEID string, number int64, size int64) (*restclient.KeyContainer, *http.Response, error) {
+	req := c.restClient.DefaultAPI.GetKey(context.Background(), targetSAEID).Number(number).Size(size)
 	return req.Execute()
 }
 
-func (c *ClientImpl) GetKeyPost(slaveSAEID string) (*restclient.KeyContainer, *http.Response, error) {
-	postReq := c.restClient.DefaultAPI.GetKeyPost(context.Background(), slaveSAEID)
-	postReq.KeyRequest(restclient.KeyRequest{
-		Number:            restclient.PtrInt64(1),
-		Size:              restclient.PtrInt64(256),
-		ExtensionOptional: []map[string]string{},
-	})
+func (c *ClientImpl) GetKeyPost(targetSAEID string, number int64, size int64, additionalTargetSAEIDs []string, extensionMandatory []map[string]string, extensionOptional []map[string]string) (*restclient.KeyContainer, *http.Response, error) {
+	postReq := c.restClient.DefaultAPI.GetKeyPost(context.Background(), targetSAEID)
+	keyReq := restclient.KeyRequest{
+		Number: restclient.PtrInt64(number),
+		Size:   restclient.PtrInt64(size),
+	}
+	if additionalTargetSAEIDs != nil {
+		keyReq.AdditionalSlaveSAEIDs = additionalTargetSAEIDs
+	}
+	if extensionMandatory != nil {
+		keyReq.ExtensionMandatory = extensionMandatory
+	}
+	if extensionOptional != nil {
+		keyReq.ExtensionOptional = extensionOptional
+	}
 
-	return postReq.Execute()
+	return postReq.KeyRequest(keyReq).Execute()
 }
 
-func (c *ClientImpl) GetKeyWithId(masterSAEID, keyID string) (*restclient.KeyContainer, *http.Response, error) {
-	req := c.restClient.DefaultAPI.GetKeyWithIds(context.Background(), masterSAEID).KeyID(keyID)
+func (c *ClientImpl) GetKeyWithId(targetSAEID, keyID string) (*restclient.KeyContainer, *http.Response, error) {
+	req := c.restClient.DefaultAPI.GetKeyWithIds(context.Background(), targetSAEID).KeyID(keyID)
 
 	return req.Execute()
 }
 
-func (c *ClientImpl) GetKeyWithIdPost(masterSAEID string, keyIDs []restclient.KeyIDsRequestKeyIDsInner) (*restclient.KeyContainer, *http.Response, error) {
-	keyIDsRequest := restclient.NewKeyIDsRequest()
-	keyIDsRequest.SetKeyIDs(keyIDs)
+func (c *ClientImpl) GetKeyWithIdPost(targetSAEID string, keyIDs []restclient.KeyIDsRequestKeyIDsInner) (*restclient.KeyContainer, *http.Response, error) {
+	postReq := c.restClient.DefaultAPI.GetKeyWithIdsPost(context.Background(), targetSAEID)
+	keyIDsReq := restclient.KeyIDsRequest{
+		KeyIDs: keyIDs,
+	}
 
-	postReq := c.restClient.DefaultAPI.GetKeyWithIdsPost(context.Background(), masterSAEID).KeyIDsRequest(*keyIDsRequest)
-
-	logrus.Info(keyIDsRequest)
-
-	return postReq.Execute()
+	return postReq.KeyIDsRequest(keyIDsReq).Execute()
 }
diff --git a/goKMS/kms/kms.go b/goKMS/kms/kms.go
index 5540cb88e5e5ee7d02826b7ad0edff84aa6659c0..12ac106eabc25504d3b43fe36dd96038f052109c 100644
--- a/goKMS/kms/kms.go
+++ b/goKMS/kms/kms.go
@@ -190,7 +190,7 @@ func (kms *KMS) initializePeers(config *config.Config) error {
 		case "emulated":
 			qm = peers.NewDanetQuantumModule(pqm.Address, config.Id)
 		case "etsi":
-			qm, err = peers.NewETSI014HTTPQuantumModule(pqm.Address, config.Id, pqm.SlaveSAEID, pqm.MasterSAEID, config.QuantumModuleTLS, pqm.MasterMode)
+			qm, err = peers.NewETSI014HTTPQuantumModule(pqm.Address, config.Id, pqm.LocalSAEID, pqm.TargetSAEID, config.QuantumModuleTLS, pqm.MasterMode)
 			if err != nil {
 				log.Fatalf("Failed to create ETSI QKD module: %s", err)
 				return nil
diff --git a/goKMS/kms/kmsintercom.go b/goKMS/kms/kmsintercom.go
index 4bb2fb8dff42cd8690aa9da0ce582fc28180b363..1c52e43d92744e9b633978f165dfef0028681775 100644
--- a/goKMS/kms/kmsintercom.go
+++ b/goKMS/kms/kmsintercom.go
@@ -4,7 +4,6 @@ import (
 	"context"
 	"encoding/base64"
 	"fmt"
-	"io"
 	"sync"
 	"time"
 
@@ -64,28 +63,13 @@ func (s *kmsTalkerServer) KeyIdNotification(ctx context.Context, in *pb.KeyIdNot
 		}
 	}
 
-	keyContainer, resp, err := eqm.Client().GetKeyWithIdPost(eqm.MasterSAEID, etsi14KeyIds)
+	keyContainer, err := eqm.GetKeyWithIds(etsi14KeyIds)
 	if err != nil {
 		return nil, err
 	}
 
-	defer func() {
-		if closeError := resp.Body.Close(); closeError != nil {
-			log.Errorf("KeyIdNotification: response closing failure: %s", err)
-		}
-	}()
-
-	// TODO: add proper status code handling
-	if resp.StatusCode != 200 {
-		body, err := io.ReadAll(resp.Body)
-		if err != nil {
-			return nil, err
-		}
-		return nil, status.Error(codes.Aborted, string(body))
-	}
-
 	if err := store.AddETSIKeysToKeystore(eqm.KeyStore(), keyContainer.GetKeys()); err != nil {
-		return nil, status.Error(codes.Internal, "expected etsi014 quantum module")
+		return nil, status.Errorf(codes.Internal, "failed to add keys to keystore; %s", err)
 	}
 
 	return &pb.KeyIdNotificationResponse{
diff --git a/goKMS/kms/peers/etsi14Quantummodule.go b/goKMS/kms/peers/etsi14Quantummodule.go
index 65e51140e6cbaff04e855da9d28ac94844f04272..7e0187202e7089e184022195f3436e035ff90a5b 100644
--- a/goKMS/kms/peers/etsi14Quantummodule.go
+++ b/goKMS/kms/peers/etsi14Quantummodule.go
@@ -25,12 +25,12 @@ type ETSI014HTTPQuantumModule struct {
 	keyStore    *store.KmsKeyStore
 	kmsClient   *GRPCClient
 	client      *etsi14ClientImpl.ClientImpl
-	SlaveSAEID  string
-	MasterSAEID string
+	localSAEID  string
+	targetSAEID string
 	master      bool
 }
 
-func NewETSI014HTTPQuantumModule(addr, kmsId, slaveSAEID, masterSAEID string, tlsConfig config.TLSConfig, master bool) (*ETSI014HTTPQuantumModule, error) {
+func NewETSI014HTTPQuantumModule(addr, kmsId, localSAEID, targetSAEID string, tlsConfig config.TLSConfig, master bool) (*ETSI014HTTPQuantumModule, error) {
 	parsedUrl, err := url.Parse(addr)
 	if err != nil {
 		return nil, err
@@ -72,8 +72,8 @@ func NewETSI014HTTPQuantumModule(addr, kmsId, slaveSAEID, masterSAEID string, tl
 		keyStore:    store.NewKmsKeyStore(256),
 		kmsClient:   nil,
 		client:      client,
-		SlaveSAEID:  slaveSAEID,
-		MasterSAEID: masterSAEID,
+		localSAEID:  localSAEID,
+		targetSAEID: targetSAEID,
 		master:      master,
 	}, nil
 }
@@ -95,7 +95,7 @@ func (qm *ETSI014HTTPQuantumModule) Initialize() error {
 
 			// TODO: add context/channel to stop
 			for range ticker.C {
-				container, _, err := qm.client.GetKey(qm.SlaveSAEID)
+				container, err := qm.GetKeys(1, 256, nil, nil, nil)
 				if err != nil {
 					log.Error(err)
 					break
@@ -153,3 +153,29 @@ func (qm *ETSI014HTTPQuantumModule) KmsGrpcClient() *GRPCClient {
 
 func (qm *ETSI014HTTPQuantumModule) SetKmsGrpcClient(peer *GRPCClient) {
 }
+
+func (qm *ETSI014HTTPQuantumModule) GetKeys(number int64, size int64, additionalTargetSAEIDs []string, extensionMandatory []map[string]string, extensionOptional []map[string]string) (*etsi14ClientGenerated.KeyContainer, error) {
+	container, _, err := qm.client.GetKeyPost(qm.targetSAEID, number, size, additionalTargetSAEIDs, extensionMandatory, extensionOptional)
+	if err != nil {
+		return nil, err
+	}
+
+	if len(container.GetKeys()) == 0 {
+		return nil, fmt.Errorf("no key received, length of key container was: %d", len(container.GetKeys()))
+	}
+
+	return container, nil
+}
+
+func (qm *ETSI014HTTPQuantumModule) GetKeyWithIds(keyIds []etsi14ClientGenerated.KeyIDsRequestKeyIDsInner) (*etsi14ClientGenerated.KeyContainer, error) {
+	container, _, err := qm.client.GetKeyWithIdPost(qm.targetSAEID, keyIds)
+	if err != nil {
+		return nil, err
+	}
+
+	if len(container.GetKeys()) == 0 {
+		return nil, fmt.Errorf("no key received, length of key container was: %d", len(container.GetKeys()))
+	}
+
+	return container, nil
+}