diff --git a/goKMS/kms/peers/etsi14Quantummodule.go b/goKMS/kms/peers/etsi14Quantummodule.go
index 902272ed155b60386e6146ef522ebfac4481378e..ea2e46bd8ade4b12f39f1f20a21dd926200f3d35 100644
--- a/goKMS/kms/peers/etsi14Quantummodule.go
+++ b/goKMS/kms/peers/etsi14Quantummodule.go
@@ -109,49 +109,21 @@ func (qm *ETSI014HTTPQuantumModule) Initialize() error {
 	// start polling keys
 	if qm.master {
 		go func() {
-			ticker := time.NewTicker(time.Duration(qm.keyFetchInterval) * time.Second)
+			restartWaitingTime := time.Duration(2) * time.Minute
+			ticker := time.NewTicker(restartWaitingTime)
 			defer ticker.Stop()
 
-			failedAttemps := 0
+			restartedAfterWaitingTime := new(int)
 
-			// TODO: add context/channel to stop
-			for range ticker.C {
-				if failedAttemps == maxFailedKeyRequestAttempts {
-					log.Errorf("stopped trying to fetch keys from qkd module after %d tries", failedAttemps)
+			// immediately start with the ticker instead of waiting the defined amount
+			for ; true; <-ticker.C {
+				if *restartedAfterWaitingTime == 5 {
+					log.Fatalf("Stopped retrying to fetch keys after %d attempts waiting %v each time in between.", restartedAfterWaitingTime, restartWaitingTime)
 					break
 				}
 
-				if qm.keyStore.Length() < int(qm.maxKeyFillLevel) {
-					container, err := qm.GetKeys(qm.keyFetchAmount, 256, nil, nil, nil)
-					if err != nil {
-						log.Error(err)
-						failedAttemps++
-						continue
-					}
-
-					keyIds := make([]string, len(container.GetKeys()))
-					for i, keyItem := range container.GetKeys() {
-						keyIds[i] = keyItem.GetKeyID()
-					}
-
-					_, err = qm.kmsClient.KeyIdNotification(context.Background(),
-						&pbIC.KeyIdNotificationRequest{
-							Timestamp: time.Now().Unix(),
-							KmsId:     qm.kmsId,
-							KeyIds:    keyIds,
-						})
-					if err != nil {
-						log.Error(err)
-						failedAttemps++
-						continue
-					}
-
-					if err := store.AddETSIKeysToKeystore(qm.keyStore, container.GetKeys()); err != nil {
-						log.Error(err)
-					}
-
-					failedAttemps = 0
-				}
+				qm.doKeyFetching(restartedAfterWaitingTime)
+				*restartedAfterWaitingTime++
 			}
 		}()
 	}
@@ -211,3 +183,54 @@ func (qm *ETSI014HTTPQuantumModule) GetKeyWithIds(keyIds []etsi14ClientGenerated
 
 	return container, nil
 }
+
+func (qm *ETSI014HTTPQuantumModule) doKeyFetching(restartedAfterWaitingTime *int) {
+	ticker := time.NewTicker(time.Duration(qm.keyFetchInterval) * time.Second)
+	defer ticker.Stop()
+
+	failedAttemps := 0
+
+	// TODO: add context/channel to stop
+	for range ticker.C {
+		if failedAttemps == maxFailedKeyRequestAttempts {
+			log.Errorf("stopped trying to fetch keys from qkd module after %d tries", failedAttemps)
+			break
+		}
+
+		if qm.keyStore.Length() < int(qm.maxKeyFillLevel) {
+			container, err := qm.GetKeys(qm.keyFetchAmount, 256, nil, nil, nil)
+			if err != nil {
+				log.Error(err)
+				failedAttemps++
+				continue
+			}
+
+			keyIds := make([]string, len(container.GetKeys()))
+			for i, keyItem := range container.GetKeys() {
+				keyIds[i] = keyItem.GetKeyID()
+			}
+
+			_, err = qm.kmsClient.KeyIdNotification(context.Background(),
+				&pbIC.KeyIdNotificationRequest{
+					Timestamp: time.Now().Unix(),
+					KmsId:     qm.kmsId,
+					KeyIds:    keyIds,
+				})
+			if err != nil {
+				log.Error(err)
+				failedAttemps++
+				continue
+			}
+
+			err = store.AddETSIKeysToKeystore(qm.keyStore, container.GetKeys())
+			if err != nil {
+				log.Error(err)
+				failedAttemps++
+				continue
+			}
+
+			failedAttemps = 0
+			*restartedAfterWaitingTime = 0
+		}
+	}
+}