diff --git a/kms/kms.go b/kms/kms.go
index 80ca057612426a0cbbd76259db4a5d038e55de07..947c2eebf5aa02dcd387f941e311a8a2e85e4d41 100644
--- a/kms/kms.go
+++ b/kms/kms.go
@@ -6,8 +6,8 @@ package kms
 
 import (
 	"crypto/rand"
+	"encoding/binary"
 	"log"
-	"math/big"
 	"sync"
 	"time"
 
@@ -24,7 +24,6 @@ type Qkdnkms interface {
 	RemovePeer(kmsPeerSocket string)
 }
 
-type qlElementId uint64
 type qlElementLinkID int
 
 // The general emulated KMS
@@ -32,7 +31,7 @@ type EKMS struct {
 	kmsName         string
 	kmsUUID         uuid.UUID
 	qleMapMutex     sync.Mutex
-	QuantumElements map[qlElementId]*QuantumElement
+	QuantumElements map[uint32]*QuantumElement
 	kmsPeersMutex   sync.Mutex
 	KmsPeers        map[string]*kmsPeer
 	pbETSI.UnimplementedKmsETSIServer
@@ -48,7 +47,7 @@ type QuantumElementInterface interface {
 }*/
 
 type QuantumElement struct {
-	qlID               qlElementId
+	QlID               uint32
 	QuantumElementLink *quantumlayer.QuantumlayerEmuPRNG // contains information about the quantum links
 	//key stores go here
 	keyStoreLocal  *kmsKeyStore // the keys this local entity has produced and are ready to use
@@ -60,7 +59,7 @@ func NewEKMS(kmsName string, kmsUUID uuid.UUID) (newEKMS *EKMS) {
 	return &EKMS{
 		kmsName:         kmsName,
 		kmsUUID:         kmsUUID,
-		QuantumElements: make(map[qlElementId]*QuantumElement),
+		QuantumElements: make(map[uint32]*QuantumElement),
 		KmsPeers:        make(map[string]*kmsPeer),
 	}
 }
@@ -87,13 +86,13 @@ func (kms *EKMS) AddQuantumElement(kmsUDPAddrr string) *QuantumElement {
 
 	// generate a ID for this quantum element that is unique locally
 	var randError error
-	qle.qlID, randError = kms.GenerateNewQleID()
+	qle.QlID, randError = kms.GenerateNewQleID()
 	if randError != nil {
 		log.Fatalf("GenerateNewQleID: %s", randError)
 		return nil
 	}
 
-	kms.QuantumElements[qle.qlID] = &qle
+	kms.QuantumElements[qle.QlID] = &qle
 
 	return &qle
 }
@@ -134,14 +133,18 @@ func (kms *EKMS) GlobalKeyHandler(waitTime time.Duration) error {
 // This has a design flaw, as the generated ID is returned to the calling function and used there.
 // However, when being used a potential other caller might received the same qlElementId
 // TODO/XXX: This would be collision and must be eventually avoided
-func (kms *EKMS) GenerateNewQleID() (qlElementId, error) {
+func (kms *EKMS) GenerateNewQleID() (uint32, error) {
 	for { // this needs a condiction to stop!
-		bigRand, randError := rand.Int(rand.Reader, big.NewInt(100000))
-		if randError != nil {
-			return 0, randError
+		// create buffer for uint32, so reserve 4 bytes
+		buf := make([]byte, 4)
+
+		// fill the buffer from rand
+		_, err := rand.Read(buf)
+		if err != nil {
+			return 0, err
 		}
 
-		propopsedQlElementID := qlElementId(bigRand.Uint64())
+		propopsedQlElementID := binary.BigEndian.Uint32(buf)
 
 		// check if ID is already taken
 		if kms.QuantumElements[propopsedQlElementID] == nil {
diff --git a/kms/kmsetsi.go b/kms/kmsetsi.go
index 4e6d36ba4448b88b7a2c91da03aac6a1c3800fcb..a9e6de6c1f50249eea3dd7255889a3276839b4d4 100644
--- a/kms/kmsetsi.go
+++ b/kms/kmsetsi.go
@@ -35,7 +35,7 @@ func (es *etsiServer) ETSIGetQuantumInterfaces(ctx context.Context, in *pb.ETSIK
 	// Walk through QuantumLayerInterfaces and return their information
 	for _, qlWorks := range es.handlingEkms.QuantumElements {
 		qleElement := pb.QuantumElementInfo{
-			QleID:   uint64(qlWorks.qlID),
+			QleID:   uint64(qlWorks.QlID),
 			UdpAddr: fmt.Sprintf("%s:%d", qlWorks.QuantumElementLink.GetLocalQLPort().IP.String(), qlWorks.QuantumElementLink.GetLocalQLPort().Port),
 		}
 		qleList = append(qleList, &qleElement)
@@ -51,7 +51,7 @@ func (es *etsiServer) ETSIAddKMSPeer(ctx context.Context, in *pb.ETSIKMSPeerRequ
 
 	// Check first if KmsLocalQLEId is actually one of ours...
 	qleID := in.KmsLocalQLEId
-	servingQLE, _ := es.handlingEkms.QuantumElements[qlElementId(qleID)]
+	servingQLE, _ := es.handlingEkms.QuantumElements[qleID]
 	if servingQLE == nil {
 		//no such element!
 		err := errors.New(fmt.Sprintf("Unknown local quantum element with ID %d", qleID))
diff --git a/kms/kmspeers.go b/kms/kmspeers.go
index fe612e42e0afb155f15a441f9acbb23325a8a8dc..720afb570b8a9c83f8fefd7c1aaabbef38c5b159 100644
--- a/kms/kmspeers.go
+++ b/kms/kmspeers.go
@@ -85,5 +85,5 @@ func (ph *kmsPeer) GetKmsPeerId() uuid.UUID {
 }
 
 func (ph *kmsPeer) GetKmsPeerQkdiId() uint32 {
-	return uint32(ph.servingQLE.qlID)
+	return uint32(ph.servingQLE.QlID)
 }
diff --git a/kmsetsiproto/kmsetsiproto.pb.go b/kmsetsiproto/kmsetsiproto.pb.go
index 874ff56a0b53185059f2136762407d435fcc13a0..c8f7b8cc172f26e4a2b058e3f8bedb199062b885 100644
--- a/kmsetsiproto/kmsetsiproto.pb.go
+++ b/kmsetsiproto/kmsetsiproto.pb.go
@@ -1,7 +1,7 @@
 // Code generated by protoc-gen-go. DO NOT EDIT.
 // versions:
 // 	protoc-gen-go v1.28.1
-// 	protoc        v3.19.4
+// 	protoc        v3.21.12
 // source: kmsetsiproto.proto
 
 package kmsetsiproto
@@ -263,7 +263,7 @@ type ETSIKMSPeerRequest struct {
 	unknownFields protoimpl.UnknownFields
 
 	KmsPeerSocket string `protobuf:"bytes,1,opt,name=kmsPeerSocket,proto3" json:"kmsPeerSocket,omitempty"`
-	KmsLocalQLEId uint64 `protobuf:"varint,2,opt,name=kmsLocalQLEId,proto3" json:"kmsLocalQLEId,omitempty"`
+	KmsLocalQLEId uint32 `protobuf:"varint,2,opt,name=kmsLocalQLEId,proto3" json:"kmsLocalQLEId,omitempty"`
 }
 
 func (x *ETSIKMSPeerRequest) Reset() {
@@ -305,7 +305,7 @@ func (x *ETSIKMSPeerRequest) GetKmsPeerSocket() string {
 	return ""
 }
 
-func (x *ETSIKMSPeerRequest) GetKmsLocalQLEId() uint64 {
+func (x *ETSIKMSPeerRequest) GetKmsLocalQLEId() uint32 {
 	if x != nil {
 		return x.KmsLocalQLEId
 	}
@@ -632,7 +632,7 @@ var file_kmsetsiproto_proto_rawDesc = []byte{
 	0x6f, 0x63, 0x6b, 0x65, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x6b, 0x6d, 0x73,
 	0x50, 0x65, 0x65, 0x72, 0x53, 0x6f, 0x63, 0x6b, 0x65, 0x74, 0x12, 0x24, 0x0a, 0x0d, 0x6b, 0x6d,
 	0x73, 0x4c, 0x6f, 0x63, 0x61, 0x6c, 0x51, 0x4c, 0x45, 0x49, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28,
-	0x04, 0x52, 0x0d, 0x6b, 0x6d, 0x73, 0x4c, 0x6f, 0x63, 0x61, 0x6c, 0x51, 0x4c, 0x45, 0x49, 0x64,
+	0x0d, 0x52, 0x0d, 0x6b, 0x6d, 0x73, 0x4c, 0x6f, 0x63, 0x61, 0x6c, 0x51, 0x4c, 0x45, 0x49, 0x64,
 	0x22, 0x34, 0x0a, 0x10, 0x45, 0x54, 0x53, 0x49, 0x4b, 0x4d, 0x53, 0x50, 0x65, 0x65, 0x72, 0x52,
 	0x65, 0x70, 0x6c, 0x79, 0x12, 0x20, 0x0a, 0x0b, 0x6b, 0x6d, 0x73, 0x50, 0x65, 0x65, 0x72, 0x4e,
 	0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x6b, 0x6d, 0x73, 0x50, 0x65,
diff --git a/kmsetsiproto/kmsetsiproto.proto b/kmsetsiproto/kmsetsiproto.proto
index 4e6e978792589b8bc7a816f461500d8288704a87..b91881b0ddd36c247277c76a7181bab07d6cdda4 100644
--- a/kmsetsiproto/kmsetsiproto.proto
+++ b/kmsetsiproto/kmsetsiproto.proto
@@ -18,7 +18,7 @@ service KmsETSI {
 message ETSICapabilitiesRequest {
 	string myKmsName = 1;
 }
-  
+
   // The response message containing the greetings
   message ETSICapabilitiesReply {
 	string peerKmsName = 1;
@@ -35,13 +35,13 @@ message QuantumElementInfo {
 }
 
 message ETSIKMSQuantumInterfaceListReply {
-  repeated QuantumElementInfo qlElementInfo = 1; 
+  repeated QuantumElementInfo qlElementInfo = 1;
 }
 
 
 message ETSIKMSPeerRequest {
   string kmsPeerSocket = 1;
-  uint64 kmsLocalQLEId = 2;
+  uint32 kmsLocalQLEId = 2;
 }
 
 message ETSIKMSPeerReply {
@@ -76,6 +76,3 @@ message ETSIGetEncryptKeys256BitReply {
   string keyID = 1;
   bytes key = 2;
 }
-
-
-
diff --git a/kmsetsiproto/kmsetsiproto_grpc.pb.go b/kmsetsiproto/kmsetsiproto_grpc.pb.go
index 2ad60ede960ff0dc0ad92e6a4aa12686cd61119a..055aad3dcb574fb958349820deaf3ec4abb62c99 100644
--- a/kmsetsiproto/kmsetsiproto_grpc.pb.go
+++ b/kmsetsiproto/kmsetsiproto_grpc.pb.go
@@ -1,7 +1,7 @@
 // Code generated by protoc-gen-go-grpc. DO NOT EDIT.
 // versions:
 // - protoc-gen-go-grpc v1.2.0
-// - protoc             v3.19.4
+// - protoc             v3.21.12
 // source: kmsetsiproto.proto
 
 package kmsetsiproto
@@ -26,7 +26,7 @@ type KmsETSIClient interface {
 	ETSICapabilities(ctx context.Context, in *ETSICapabilitiesRequest, opts ...grpc.CallOption) (*ETSICapabilitiesReply, error)
 	ETSIGetQuantumInterfaces(ctx context.Context, in *ETSIKMSQuantumInterfaceListRequest, opts ...grpc.CallOption) (*ETSIKMSQuantumInterfaceListReply, error)
 	ETSIAddKMSPeer(ctx context.Context, in *ETSIKMSPeerRequest, opts ...grpc.CallOption) (*ETSIKMSPeerReply, error)
-	ETSIRemovEKMSPeer(ctx context.Context, in *ETSIKMSPeerRequest, opts ...grpc.CallOption) (*ETSIKMSPeerReply, error)
+	ETSIRemoveKMSPeer(ctx context.Context, in *ETSIKMSPeerRequest, opts ...grpc.CallOption) (*ETSIKMSPeerReply, error)
 	ETSIGetPeerList(ctx context.Context, in *ETSIKMSPeerListRequest, opts ...grpc.CallOption) (*ETSIKMSPeerListReply, error)
 	ETSIGetEncryptKeys256Bit(ctx context.Context, in *ETSIGetEncryptKeys256BitRequest, opts ...grpc.CallOption) (*ETSIGetEncryptKeys256BitReply, error)
 }
@@ -66,9 +66,9 @@ func (c *kmsETSIClient) ETSIAddKMSPeer(ctx context.Context, in *ETSIKMSPeerReque
 	return out, nil
 }
 
-func (c *kmsETSIClient) ETSIRemovEKMSPeer(ctx context.Context, in *ETSIKMSPeerRequest, opts ...grpc.CallOption) (*ETSIKMSPeerReply, error) {
+func (c *kmsETSIClient) ETSIRemoveKMSPeer(ctx context.Context, in *ETSIKMSPeerRequest, opts ...grpc.CallOption) (*ETSIKMSPeerReply, error) {
 	out := new(ETSIKMSPeerReply)
-	err := c.cc.Invoke(ctx, "/kmsetsiproto.KmsETSI/ETSIRemovEKMSPeer", in, out, opts...)
+	err := c.cc.Invoke(ctx, "/kmsetsiproto.KmsETSI/ETSIRemoveKMSPeer", in, out, opts...)
 	if err != nil {
 		return nil, err
 	}
@@ -101,7 +101,7 @@ type KmsETSIServer interface {
 	ETSICapabilities(context.Context, *ETSICapabilitiesRequest) (*ETSICapabilitiesReply, error)
 	ETSIGetQuantumInterfaces(context.Context, *ETSIKMSQuantumInterfaceListRequest) (*ETSIKMSQuantumInterfaceListReply, error)
 	ETSIAddKMSPeer(context.Context, *ETSIKMSPeerRequest) (*ETSIKMSPeerReply, error)
-	ETSIRemovEKMSPeer(context.Context, *ETSIKMSPeerRequest) (*ETSIKMSPeerReply, error)
+	ETSIRemoveKMSPeer(context.Context, *ETSIKMSPeerRequest) (*ETSIKMSPeerReply, error)
 	ETSIGetPeerList(context.Context, *ETSIKMSPeerListRequest) (*ETSIKMSPeerListReply, error)
 	ETSIGetEncryptKeys256Bit(context.Context, *ETSIGetEncryptKeys256BitRequest) (*ETSIGetEncryptKeys256BitReply, error)
 	mustEmbedUnimplementedKmsETSIServer()
@@ -120,8 +120,8 @@ func (UnimplementedKmsETSIServer) ETSIGetQuantumInterfaces(context.Context, *ETS
 func (UnimplementedKmsETSIServer) ETSIAddKMSPeer(context.Context, *ETSIKMSPeerRequest) (*ETSIKMSPeerReply, error) {
 	return nil, status.Errorf(codes.Unimplemented, "method ETSIAddKMSPeer not implemented")
 }
-func (UnimplementedKmsETSIServer) ETSIRemovEKMSPeer(context.Context, *ETSIKMSPeerRequest) (*ETSIKMSPeerReply, error) {
-	return nil, status.Errorf(codes.Unimplemented, "method ETSIRemovEKMSPeer not implemented")
+func (UnimplementedKmsETSIServer) ETSIRemoveKMSPeer(context.Context, *ETSIKMSPeerRequest) (*ETSIKMSPeerReply, error) {
+	return nil, status.Errorf(codes.Unimplemented, "method ETSIRemoveKMSPeer not implemented")
 }
 func (UnimplementedKmsETSIServer) ETSIGetPeerList(context.Context, *ETSIKMSPeerListRequest) (*ETSIKMSPeerListReply, error) {
 	return nil, status.Errorf(codes.Unimplemented, "method ETSIGetPeerList not implemented")
@@ -131,10 +131,10 @@ func (UnimplementedKmsETSIServer) ETSIGetEncryptKeys256Bit(context.Context, *ETS
 }
 func (UnimplementedKmsETSIServer) mustEmbedUnimplementedKmsETSIServer() {}
 
-// UnsafEKMSETSIServer may be embedded to opt out of forward compatibility for this service.
+// UnsafeKmsETSIServer may be embedded to opt out of forward compatibility for this service.
 // Use of this interface is not recommended, as added methods to KmsETSIServer will
 // result in compilation errors.
-type UnsafEKMSETSIServer interface {
+type UnsafeKmsETSIServer interface {
 	mustEmbedUnimplementedKmsETSIServer()
 }
 
@@ -196,20 +196,20 @@ func _KmsETSI_ETSIAddKMSPeer_Handler(srv interface{}, ctx context.Context, dec f
 	return interceptor(ctx, in, info, handler)
 }
 
-func _KmsETSI_ETSIRemovEKMSPeer_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+func _KmsETSI_ETSIRemoveKMSPeer_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
 	in := new(ETSIKMSPeerRequest)
 	if err := dec(in); err != nil {
 		return nil, err
 	}
 	if interceptor == nil {
-		return srv.(KmsETSIServer).ETSIRemovEKMSPeer(ctx, in)
+		return srv.(KmsETSIServer).ETSIRemoveKMSPeer(ctx, in)
 	}
 	info := &grpc.UnaryServerInfo{
 		Server:     srv,
-		FullMethod: "/kmsetsiproto.KmsETSI/ETSIRemovEKMSPeer",
+		FullMethod: "/kmsetsiproto.KmsETSI/ETSIRemoveKMSPeer",
 	}
 	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
-		return srv.(KmsETSIServer).ETSIRemovEKMSPeer(ctx, req.(*ETSIKMSPeerRequest))
+		return srv.(KmsETSIServer).ETSIRemoveKMSPeer(ctx, req.(*ETSIKMSPeerRequest))
 	}
 	return interceptor(ctx, in, info, handler)
 }
@@ -270,8 +270,8 @@ var KmsETSI_ServiceDesc = grpc.ServiceDesc{
 			Handler:    _KmsETSI_ETSIAddKMSPeer_Handler,
 		},
 		{
-			MethodName: "ETSIRemovEKMSPeer",
-			Handler:    _KmsETSI_ETSIRemovEKMSPeer_Handler,
+			MethodName: "ETSIRemoveKMSPeer",
+			Handler:    _KmsETSI_ETSIRemoveKMSPeer_Handler,
 		},
 		{
 			MethodName: "ETSIGetPeerList",