diff --git a/goKMS/gnmiHandlers/kms/keyStoreHandler.go b/goKMS/gnmiHandlers/kms/keyStoreHandler.go
index e2785ecb9a9fd83bc1549405e35dd4619c237178..ddff4a7cc9d73a62a5adeec5a7228b7a4f04739e 100644
--- a/goKMS/gnmiHandlers/kms/keyStoreHandler.go
+++ b/goKMS/gnmiHandlers/kms/keyStoreHandler.go
@@ -2,26 +2,20 @@ package kmsHandler
 
 import (
 	"fmt"
+	"time"
 
 	"code.fbi.h-da.de/danet/gnmi-target/handler"
 	"code.fbi.h-da.de/danet/quant/goKMS/kms"
-	"code.fbi.h-da.de/danet/quant/goKMS/kms/event"
 	gnmitargetygot "code.fbi.h-da.de/danet/quant/goKMS/model"
 	"github.com/openconfig/gnmi/proto/gnmi"
 	"github.com/openconfig/ygot/ygot"
-	"github.com/sirupsen/logrus"
+	log "github.com/sirupsen/logrus"
 )
 
 type KeyStoreHandler struct {
 	handler.DefaultPathHandler
 	kms                     *kms.KMS
 	maxKeyFillLevelsDefined map[string]uint64
-	events                  <-chan event.Event
-}
-
-type keyFillLevel struct {
-	storeID   string
-	fillLevel uint64
 }
 
 func NewKeyStoreHandler(kms *kms.KMS, maxKeyFillLevelsDefined map[string]uint64) *KeyStoreHandler {
@@ -41,29 +35,20 @@ func (yh *KeyStoreHandler) Init(config *handler.Config, publishToSubsFunc func([
 	yh.Config = config
 	yh.PublishToSubs = publishToSubsFunc
 
-	var err error
-	yh.events, err = yh.kms.EventBus().Subscribe(event.KEY_STORE)
-	if err != nil {
-		return err
-	}
-
-	_, err = yh.updateOrCreateKeyStoreHandler()
-	if err != nil {
-		return err
-	}
-
 	// Start the go routine that takes care of any update from the kms
 	go func() {
-		for {
-			select {
-			case <-yh.events:
-				logrus.Println("Update for KeyStores.")
-				_, err := yh.updateOrCreateKeyStoreHandler()
-				if err != nil {
-					logrus.Errorf("Error within key stores subscription goroutine; %v", err)
-				}
-
-				// gnmi subscribe things here?
+		ticker := time.NewTicker(15 * time.Second)
+		defer ticker.Stop()
+
+		// TODO: add context/channel to stop
+		for range ticker.C {
+			diff, err := yh.updateOrCreateKeyStores(yh.kms)
+			if err != nil {
+				log.Errorf("Error within key stores subscription goroutine; %v", err)
+				break
+			}
+			if err := yh.PublishToSubs(diff); err != nil {
+				log.Errorf("Error within key stores subscription goroutine; %v", err)
 			}
 		}
 	}()
@@ -75,7 +60,7 @@ func (yh *KeyStoreHandler) Update(c ygot.ValidatedGoStruct, jobs []*gnmi.Update)
 	return nil
 }
 
-func (yh *KeyStoreHandler) updateOrCreateKeyStoreHandler() ([]*gnmi.Notification, error) {
+func (yh *KeyStoreHandler) updateOrCreateKeyStores(kms *kms.KMS) ([]*gnmi.Notification, error) {
 	yh.Config.Lock()
 	defer yh.Config.Unlock()
 
@@ -89,21 +74,20 @@ func (yh *KeyStoreHandler) updateOrCreateKeyStoreHandler() ([]*gnmi.Notification
 		return nil, fmt.Errorf("Wrong type, exptected: %T, got: %T", (*gnmitargetygot.Temp_KeyStores)(nil), copyCurrentConfig)
 	}
 
-	confKeyStores := newConfig.GetOrCreateKeyStores()
+	kmsPeers := kms.PeersDeepCopy()
 
-	keyFillLevels := getKeyFillLevels(yh.kms)
+	confKeyStores := newConfig.GetOrCreateKeyStores()
 
-	// TODO: Maybe add more config values here!
-	for _, keyFillLevel := range keyFillLevels {
-		confKeyStoreContainer := confKeyStores.GetOrCreateKeyStore(keyFillLevel.storeID)
+	for peerKmsId, peer := range kmsPeers {
+		confKeyStoreContainer := confKeyStores.GetOrCreateKeyStore(peerKmsId)
 
-		confKeyStoreContainer.KmsPeerId = ygot.String(keyFillLevel.storeID)
+		confKeyStoreContainer.KmsPeerId = ygot.String(peerKmsId)
 		confKeyStore := confKeyStoreContainer.GetOrCreateKeyStore()
 
-		confKeyStore.KeyFillLevel = ygot.Uint64(keyFillLevel.fillLevel)
-		maxKeyFillLevel, ok := yh.maxKeyFillLevelsDefined[keyFillLevel.storeID]
+		confKeyStore.KeyFillLevel = ygot.Uint64(uint64(peer.QuantumModule().KeyStore().Length()))
+		maxKeyFillLevel, ok := yh.maxKeyFillLevelsDefined[peerKmsId]
 		if !ok {
-			return nil, fmt.Errorf("no max key fill level available for store with ID: %s", keyFillLevel.storeID) // TODO(faseid): check if really want to return here?!
+			return nil, fmt.Errorf("no max key fill level available for store with ID: %s", peerKmsId) // TODO: check if really want to return here
 		}
 
 		confKeyStore.MaxKeyFillLevel = ygot.Uint64(maxKeyFillLevel)
@@ -123,17 +107,3 @@ func (yh *KeyStoreHandler) updateOrCreateKeyStoreHandler() ([]*gnmi.Notification
 
 	return notifications, nil
 }
-
-func getKeyFillLevels(kms *kms.KMS) []keyFillLevel {
-	kmsPeers := kms.KmsPeers
-	keyFillLevels := []keyFillLevel{}
-
-	for _, peer := range kmsPeers {
-		keyFillLevels = append(keyFillLevels, keyFillLevel{
-			storeID:   peer.GetKmsPeerId().String(),
-			fillLevel: uint64(peer.GetKeyStore().Length()),
-		})
-	}
-
-	return keyFillLevels
-}
diff --git a/goKMS/kms/event/event.go b/goKMS/kms/event/event.go
index a0f3e83036776f54fca01d596cd41656ba97f5dd..b99faee99ccabaf0ca246dff53294935ce7961ac 100644
--- a/goKMS/kms/event/event.go
+++ b/goKMS/kms/event/event.go
@@ -9,7 +9,6 @@ const (
 	ROUTE
 	QUANTUM_MODULE
 	CREATE_ROUTE
-	KEY_STORE
 )
 
 // Event ...
@@ -87,23 +86,3 @@ func (e *RouteEvent) Topic() Topic {
 func (e *RouteEvent) Time() time.Time {
 	return e.Timestamp
 }
-
-type KeyStoresEvent struct {
-	EventTopic Topic
-	Timestamp  time.Time
-}
-
-func NewKeyStoresEvent() *KeyStoresEvent {
-	return &KeyStoresEvent{
-		EventTopic: KEY_STORE,
-		Timestamp:  time.Now(),
-	}
-}
-
-func (e *KeyStoresEvent) Topic() Topic {
-	return e.EventTopic
-}
-
-func (e *KeyStoresEvent) Time() time.Time {
-	return e.Timestamp
-}
diff --git a/goKMS/kms/kms.go b/goKMS/kms/kms.go
index 848590faad9b02144cca10b90500e030ad67743e..ba74c0ad95ce152d79450f137555cbd2cbf77f31 100644
--- a/goKMS/kms/kms.go
+++ b/goKMS/kms/kms.go
@@ -192,8 +192,7 @@ func (kms *KMS) initializePeers(config *config.Config) error {
 		case "etsi":
 			qm, err = peers.NewETSI014HTTPQuantumModule(pqm.Address, config.Id, pqm.LocalSAEID, pqm.TargetSAEID,
 				config.QuantumModuleTLS, pqm.MasterMode,
-				peer.QuantumModule.KeyFetchInterval, int64(peer.QuantumModule.KeyFetchAmount), uint64(peer.QuantumModule.MaxKeyFillLevel),
-				kms.eventBus)
+				peer.QuantumModule.KeyFetchInterval, int64(peer.QuantumModule.KeyFetchAmount), uint64(peer.QuantumModule.MaxKeyFillLevel))
 			if err != nil {
 				log.Fatalf("Failed to create ETSI QKD module: %s", err)
 				return nil
diff --git a/goKMS/kms/peers/etsi14Quantummodule.go b/goKMS/kms/peers/etsi14Quantummodule.go
index 04bada91bef9d1f51d77e3d98a38827c5a075ede..902272ed155b60386e6146ef522ebfac4481378e 100644
--- a/goKMS/kms/peers/etsi14Quantummodule.go
+++ b/goKMS/kms/peers/etsi14Quantummodule.go
@@ -31,10 +31,9 @@ type ETSI014HTTPQuantumModule struct {
 	keyFetchInterval int
 	keyFetchAmount   int64
 	maxKeyFillLevel  uint64
-	kmsEventBus      *event.EventBus
 }
 
-func NewETSI014HTTPQuantumModule(addr, kmsId, localSAEID, targetSAEID string, tlsConfig config.TLSConfig, master bool, keyFetchInterval int, keyFetchAmount int64, maxKeyFillLevel uint64, kmsEventBus *event.EventBus) (*ETSI014HTTPQuantumModule, error) {
+func NewETSI014HTTPQuantumModule(addr, kmsId, localSAEID, targetSAEID string, tlsConfig config.TLSConfig, master bool, keyFetchInterval int, keyFetchAmount int64, maxKeyFillLevel uint64) (*ETSI014HTTPQuantumModule, error) {
 	parsedUrl, err := url.Parse(addr)
 	if err != nil {
 		return nil, err
@@ -95,7 +94,6 @@ func NewETSI014HTTPQuantumModule(addr, kmsId, localSAEID, targetSAEID string, tl
 		keyFetchInterval: keyFetchInterval,
 		keyFetchAmount:   keyFetchAmount,
 		maxKeyFillLevel:  maxKeyFillLevel,
-		kmsEventBus:      kmsEventBus,
 	}, nil
 }
 
@@ -108,9 +106,6 @@ func (qm *ETSI014HTTPQuantumModule) Client() *etsi14ClientImpl.ClientImpl {
 }
 
 func (qm *ETSI014HTTPQuantumModule) Initialize() error {
-	// sends events on the event bus every x seconds to keep key store config updated
-	go qm.runBackgroundKeyStoreUpdates()
-
 	// start polling keys
 	if qm.master {
 		go func() {
@@ -216,15 +211,3 @@ func (qm *ETSI014HTTPQuantumModule) GetKeyWithIds(keyIds []etsi14ClientGenerated
 
 	return container, nil
 }
-
-func (qm *ETSI014HTTPQuantumModule) runBackgroundKeyStoreUpdates() {
-	ticker := time.NewTicker(backgroundKeyStoreUpdateInterval * time.Second)
-	defer ticker.Stop()
-
-	for range ticker.C {
-		err := qm.kmsEventBus.Publish(event.NewKeyStoresEvent())
-		if err != nil {
-			log.Error(err)
-		}
-	}
-}
diff --git a/goKMS/kms/peers/kmsPeer.go b/goKMS/kms/peers/kmsPeer.go
index 3581b8ec19f6c0e25b9c26eaaaaaaad4f3d07474..a6828434065e0b49f2b3ec1bca9be3d5b88c661f 100644
--- a/goKMS/kms/peers/kmsPeer.go
+++ b/goKMS/kms/peers/kmsPeer.go
@@ -10,7 +10,6 @@ import (
 	pbIC "code.fbi.h-da.de/danet/quant/goKMS/api/gen/proto/go/kmsintercom"
 	"code.fbi.h-da.de/danet/quant/goKMS/kms/crypto"
 	"code.fbi.h-da.de/danet/quant/goKMS/kms/event"
-	"code.fbi.h-da.de/danet/quant/goKMS/kms/store"
 	"code.fbi.h-da.de/danet/quant/goKMS/kms/util"
 	"github.com/google/uuid"
 	log "github.com/sirupsen/logrus"
@@ -215,7 +214,3 @@ func (kp *KmsPeer) SetStatus(updateStatus KmsPeerStatus) {
 func (kp *KmsPeer) GetKmsPeerId() uuid.UUID {
 	return kp.peerKmsId
 }
-
-func (kp *KmsPeer) GetKeyStore() *store.KmsKeyStore {
-	return kp.servingQuantumModul.KeyStore()
-}
diff --git a/goKMS/kms/peers/quantummodule.go b/goKMS/kms/peers/quantummodule.go
index 3b7d9c5fcb2ac28a2c8d0156b94333e642856c8f..cb9753ac1fede1fcc0aa29f27894a54166a9ca22 100644
--- a/goKMS/kms/peers/quantummodule.go
+++ b/goKMS/kms/peers/quantummodule.go
@@ -11,8 +11,6 @@ const (
 	defaultKeyFetchInterval     = 10
 	defaultKeyFetchAmount       = int64(1)
 	DefaultMaxKeyFillLevel      = uint64(100)
-
-	backgroundKeyStoreUpdateInterval = 1
 )
 
 // QuantumModule interface definition.