diff --git a/core/store/primitives/src/main/java/org/onosproject/store/primitives/resources/impl/AtomixConsistentMap.java b/core/store/primitives/src/main/java/org/onosproject/store/primitives/resources/impl/AtomixConsistentMap.java
index bd9690c..73bc8b7 100644
--- a/core/store/primitives/src/main/java/org/onosproject/store/primitives/resources/impl/AtomixConsistentMap.java
+++ b/core/store/primitives/src/main/java/org/onosproject/store/primitives/resources/impl/AtomixConsistentMap.java
@@ -17,12 +17,12 @@
 
 import io.atomix.catalyst.util.Listener;
 import io.atomix.copycat.client.CopycatClient;
-import io.atomix.resource.Consistency;
 import io.atomix.resource.Resource;
 import io.atomix.resource.ResourceTypeInfo;
 
 import java.util.Collection;
 import java.util.ConcurrentModificationException;
+import java.util.List;
 import java.util.Map.Entry;
 import java.util.Set;
 import java.util.concurrent.CompletableFuture;
@@ -49,7 +49,7 @@
 
     private final Set<MapEventListener<String, byte[]>> mapEventListeners = Sets.newCopyOnWriteArraySet();
 
-    private static final String CHANGE_SUBJECT = "change";
+    public static final String CHANGE_SUBJECT = "changeEvents";
 
     public AtomixConsistentMap(CopycatClient client, Resource.Options options) {
         super(client, options);
@@ -68,14 +68,8 @@
         });
     }
 
-    private void handleEvent(MapEvent<String, byte[]> event) {
-        mapEventListeners.forEach(listener -> listener.event(event));
-    }
-
-    @Override
-    public AtomixConsistentMap with(Consistency consistency) {
-        super.with(consistency);
-        return this;
+    private void handleEvent(List<MapEvent<String, byte[]>> events) {
+        events.forEach(event -> mapEventListeners.forEach(listener -> listener.event(event)));
     }
 
     @Override
