diff --git a/kms/kms.go b/kms/kms.go
index 153b3fd942f200861515ea0a87e660e9b5121015..80ca057612426a0cbbd76259db4a5d038e55de07 100644
--- a/kms/kms.go
+++ b/kms/kms.go
@@ -69,7 +69,8 @@ func (kms *EKMS) AddQuantumElement(kmsUDPAddrr string) *QuantumElement {
 
 	//Get an emulated Quantumlayer
 	ql := quantumlayer.NewQuantumlayerEmuPRNG()
-	ql.PowerOn(kmsUDPAddrr)
+	ql.Configure(kmsUDPAddrr)
+	ql.PowerOn()
 
 	ksl := kmsKeyStore{
 		keyStore: make(map[string]kmsKSElement),
diff --git a/quantumlayer/quantumlayer-emu-prng.go b/quantumlayer/quantumlayer-emu-prng.go
index a074502454d58e05e618a6f73730734677fa9d4c..9417e5ff919cf7d27956898060d9286ce39c8384 100644
--- a/quantumlayer/quantumlayer-emu-prng.go
+++ b/quantumlayer/quantumlayer-emu-prng.go
@@ -29,11 +29,13 @@ type QuantumPayloadElement struct {
 }
 
 type QuantumlayerEmuPRNG struct {
+	configured       bool
 	poweron          bool
 	incomingRandNums chan QuantumPayloadElement
 	outgoingRandNums chan QuantumPayloadElement
 	peerNumbers      *NumberStore
 	myNumbers        *NumberStore
+	localQLAddress   string
 	udpSrvConn       *net.UDPConn
 	qlPeer           string
 	qlPeerCancel     context.CancelFunc
@@ -43,6 +45,7 @@ type QuantumlayerEmuPRNG struct {
 
 func NewQuantumlayerEmuPRNG() (newql *QuantumlayerEmuPRNG) {
 	return &QuantumlayerEmuPRNG{
+		configured:       false,
 		poweron:          false,
 		incomingRandNums: make(chan QuantumPayloadElement),
 		outgoingRandNums: make(chan QuantumPayloadElement),
@@ -52,31 +55,41 @@ func NewQuantumlayerEmuPRNG() (newql *QuantumlayerEmuPRNG) {
 	}
 }
 
-// Power on the quantum layer, i.e., open up the communication ports for the
-// other quantum module
-func (qlemuprng *QuantumlayerEmuPRNG) PowerOn(localQLAddress ...string) {
-	qlemuprng.poweron = false
-	log.Println("QuantumlayerEmuPRNG is powering on...charging.")
+// Configure the quantum emulation, but do not start if yet
+func (qlemuprng *QuantumlayerEmuPRNG) Configure(localQLAddress ...string) {
 
 	// Start receiving numberstores
 	go qlemuprng.peerNumbers.receiveNumbers(qlemuprng.incomingRandNums)
 	go qlemuprng.myNumbers.receiveNumbers(qlemuprng.outgoingRandNums)
 
+	// Determine if a local UDP address should be used or not
+	if len(localQLAddress) == 0 {
+		// No input
+		qlemuprng.localQLAddress = ":0"
+	} else {
+		qlemuprng.localQLAddress = localQLAddress[0]
+	}
+	qlemuprng.configured = true
+}
+
+// Power on the quantum layer, i.e., open up the communication ports for the
+// other quantum module
+func (qlemuprng *QuantumlayerEmuPRNG) PowerOn() {
+	if qlemuprng.configured == false {
+		// nothing do here move on
+		log.Printf("Sorry, the quantum layer is not configured for action. You've missed Configure()")
+		return
+	}
+	qlemuprng.poweron = false
+	log.Println("QuantumlayerEmuPRNG is powering on...charging.")
+
 	// serve UDP incoming
 	go func() {
 		// Get UDP server part going...
-		// Determine if a local UDP address should be used or not
-		var udpAddrString string
-		if len(localQLAddress) == 0 {
-			// No input
-			udpAddrString = ":0"
-		} else {
-			udpAddrString = localQLAddress[0]
-		}
-		log.Printf("localQLAddress is %s", localQLAddress[0])
+		log.Printf("localQLAddress is %s", qlemuprng.localQLAddress)
 
 		// This reads random numbers from other Quantum end
-		udpSrvPort, err := net.ResolveUDPAddr("udp", udpAddrString)
+		udpSrvPort, err := net.ResolveUDPAddr("udp", qlemuprng.localQLAddress)
 		if err != nil {
 			log.Fatalf("QuantumlayerEmuPRNG UDP failure: %s", err)
 			return
@@ -158,23 +171,25 @@ func (qlemuprng *QuantumlayerEmuPRNG) AddPeer(addr net.UDPAddr) {
 			case <-ctx.Done():
 				return
 			default:
-				// retrieve a new back of random numbers
-				newNumberBatch := qlemuprng.GenerateRandomNumbers()
-				// TODO: Replace this by some generic encapsulation reader and not just JSON
-				//Get JSON for transmission ready
-				qpe := QuantumPayloadElement{time.Now().UnixNano(), len(newNumberBatch), &newNumberBatch}
-
-				// XXX/TODO: error must be handled
-				jsonPayload, err := json.Marshal(qpe)
-				if err != nil {
-					log.Printf("json.Marshal error %s", err)
-				}
+				if qlemuprng.poweron == true {
+					// retrieve a new back of random numbers
+					newNumberBatch := qlemuprng.GenerateRandomNumbers()
+					// TODO: Replace this by some generic encapsulation reader and not just JSON
+					//Get JSON for transmission ready
+					qpe := QuantumPayloadElement{time.Now().UnixNano(), len(newNumberBatch), &newNumberBatch}
+
+					// XXX/TODO: error must be handled
+					jsonPayload, err := json.Marshal(qpe)
+					if err != nil {
+						log.Printf("json.Marshal error %s", err)
+					}
 
-				_, _, err = qlemuprng.udpSrvConn.WriteMsgUDPAddrPort(jsonPayload, nil, addr.AddrPort())
-				if err != nil {
-					log.Fatalf("WriteMsgUDPAddrPort failed: %s", err)
+					_, _, err = qlemuprng.udpSrvConn.WriteMsgUDPAddrPort(jsonPayload, nil, addr.AddrPort())
+					if err != nil {
+						log.Fatalf("WriteMsgUDPAddrPort failed: %s", err)
+					}
+					qlemuprng.outgoingRandNums <- qpe
 				}
-				qlemuprng.outgoingRandNums <- qpe
 				time.Sleep(5 * time.Second)
 			}
 		}
diff --git a/quantumlayer/quantumlayer.go b/quantumlayer/quantumlayer.go
index 603027867ccebb915f712cc3a36071a9ac15a887..8c68e348f69f0fd705dd20ca307482751d968394 100644
--- a/quantumlayer/quantumlayer.go
+++ b/quantumlayer/quantumlayer.go
@@ -11,7 +11,8 @@ type QuantumLayerBulkKey struct {
 }
 
 type QuantumLayer interface {
-	PowerOn(...string)                              // switch on the quantum layer element
+	Configure(...string)                            // configure the interface, e.g., used IP/Port config if emulated
+	PowerOn()                                       // switch on the quantum layer element
 	PowerOff()                                      // switch off the quantum layer element
 	AddPeer()                                       // Adds a Quantum Layer Peer to the peer list
 	RemovePeer()                                    // Remmoves a Quantum Layer Peer to the peer list