diff --git a/quantumlayer/quantumlayer-emu-prng.go b/quantumlayer/quantumlayer-emu-prng.go
index 7b437dc0566fc792ff28fb58082bed4b534a3850..d6c0cc00cea2b79bd05ca59a0cc2b2345f457523 100644
--- a/quantumlayer/quantumlayer-emu-prng.go
+++ b/quantumlayer/quantumlayer-emu-prng.go
@@ -80,66 +80,69 @@ func (qlemuprng *QuantumlayerEmuPRNG) PowerOn() {
 		log.Printf("Sorry, the quantum layer is not configured for action. You've missed Configure()")
 		return
 	}
-	qlemuprng.poweron = false
+	//qlemuprng.poweron = false
 	log.Println("QuantumlayerEmuPRNG is powering on...charging.")
 
 	// serve UDP incoming
-	go func() {
-		// Get UDP server part going...
-		log.Printf("localQLAddress is %s", qlemuprng.localQLAddress)
-
-		// This reads random numbers from other Quantum end
-		udpSrvPort, err := net.ResolveUDPAddr("udp", qlemuprng.localQLAddress)
-		if err != nil {
-			log.Fatalf("QuantumlayerEmuPRNG UDP failure: %s", err)
-			return
-		}
-
-		qlemuprng.udpSrvConn, err = net.ListenUDP("udp", udpSrvPort)
-		if err != nil {
-			log.Fatalf("QuantumlayerEmuPRNG UDP failure: %s", err)
-			return
-		}
-		defer qlemuprng.udpSrvConn.Close()
-
-		// Retrieve local UDP address and store it for further actions.
-		qlemuprng.qlLocalPort = qlemuprng.udpSrvConn.LocalAddr().(*net.UDPAddr)
+	if qlemuprng.udpSrvConn == nil {
+		go func() {
+			// Get UDP server part going...
+			log.Printf("localQLAddress is %s", qlemuprng.localQLAddress)
 
-		// Ready, set, go!
-		qlemuprng.poweron = true
+			// This reads random numbers from other Quantum end
+			udpSrvPort, err := net.ResolveUDPAddr("udp", qlemuprng.localQLAddress)
+			if err != nil {
+				log.Fatalf("QuantumlayerEmuPRNG UDP failure: %s", err)
+				return
+			}
 
-		log.Printf("QuantumlayerEmuPRNG: started server, waiting for incoming rands on port %s \n", qlemuprng.udpSrvConn.LocalAddr().(*net.UDPAddr).String())
-		inBuffer := make([]byte, 1500)
-		for {
-			// Buffer for reading from "Quantum link"
-			n, addr, err := qlemuprng.udpSrvConn.ReadFromUDP(inBuffer)
+			qlemuprng.udpSrvConn, err = net.ListenUDP("udp", udpSrvPort)
 			if err != nil {
-				log.Printf("QuantumlayerEmuPRNG: Could not read from UDP: %s", err)
-			} else {
-				log.Printf("QuantumlayerEmuPRNG: read %d bytes from %s\n", n, addr)
-
-				// Check if sender of datagram is qlPeer
-				// Warning this is not checking the validity of the sender, i.e., spoofing is possible
-				if addr.String() == qlemuprng.qlPeer {
-					log.Printf("QuantumlayerEmuPRNG: Peer %s listed", addr)
-					//dumb the received data into the channel and carry on
-					// TODO/XXX: no vetting for anything
-					// Unmarshall out of JSON
-					var inQBuffer QuantumPayloadElement
-					unmarshallErr := json.Unmarshal(inBuffer[0:n], &inQBuffer)
-					if unmarshallErr == nil {
-						qlemuprng.incomingRandNums <- inQBuffer
-					}
+				log.Fatalf("QuantumlayerEmuPRNG UDP failure: %s", err)
+				return
+			}
+			defer qlemuprng.udpSrvConn.Close()
+
+			// Retrieve local UDP address and store it for further actions.
+			qlemuprng.qlLocalPort = qlemuprng.udpSrvConn.LocalAddr().(*net.UDPAddr)
+
+			log.Printf("QuantumlayerEmuPRNG: started server, waiting for incoming rands on port %s \n", qlemuprng.udpSrvConn.LocalAddr().(*net.UDPAddr).String())
+			inBuffer := make([]byte, 1500)
+			for {
+				// Buffer for reading from "Quantum link"
+				n, addr, err := qlemuprng.udpSrvConn.ReadFromUDP(inBuffer)
+				if err != nil {
+					log.Printf("QuantumlayerEmuPRNG: Could not read from UDP: %s", err)
 				} else {
-					log.Printf("QuantumlayerEmuPRNG: Peer %s NOT listed", addr)
+					log.Printf("QuantumlayerEmuPRNG: read %d bytes from %s\n", n, addr)
+
+					// Check if sender of datagram is qlPeer
+					// Warning this is not checking the validity of the sender, i.e., spoofing is possible
+					if addr.String() == qlemuprng.qlPeer {
+						log.Printf("QuantumlayerEmuPRNG: Peer %s listed", addr)
+						//dumb the received data into the channel and carry on
+						// TODO/XXX: no vetting for anything
+						// Unmarshall out of JSON
+						var inQBuffer QuantumPayloadElement
+						unmarshallErr := json.Unmarshal(inBuffer[0:n], &inQBuffer)
+						if unmarshallErr == nil {
+							qlemuprng.incomingRandNums <- inQBuffer
+						}
+					} else {
+						log.Printf("QuantumlayerEmuPRNG: Peer %s NOT listed", addr)
+					}
 				}
 			}
-		}
-	}()
+		}()
+	}
 
 	// Wait for listening UDP socket in the above go-routine to get ready
-	for qlemuprng.poweron != true {
+	for qlemuprng.udpSrvConn == nil {
 	}
+
+	// Ready, set, go!
+	qlemuprng.poweron = true
+
 	log.Println("QuantumlayerEmuPRNG is charged and powered on.")
 }