diff --git a/core/src/main/java/com/savoirtech/eos/pattern/whiteboard/KeyedWhiteboard.java b/core/src/main/java/com/savoirtech/eos/pattern/whiteboard/KeyedWhiteboard.java
index <HASH>..<HASH> 100644
--- a/core/src/main/java/com/savoirtech/eos/pattern/whiteboard/KeyedWhiteboard.java
+++ b/core/src/main/java/com/savoirtech/eos/pattern/whiteboard/KeyedWhiteboard.java
@@ -64,13 +64,13 @@ public class KeyedWhiteboard<K, S> extends AbstractWhiteboard<S, K> {
     protected K addService(S service, ServiceProperties props) {
         K key = keyFunction.apply(service, props);
         if (key != null) {
-            S registered = serviceMap.computeIfAbsent(key, k -> service);
-            if (registered != service) {
+            if (serviceMap.putIfAbsent(key, service) != null) {
                 getLogger().error("Duplicate key \"{}\" detected for service {}.", key, props.getServiceId());
-                key = null;
+                return null;
             }
+            return key;
         }
-        return key;
+        return null;
     }
 
     /**
Fixing KeyedWhiteboard's duplicate detection logic.