diff --git a/core/store/primitives/BUILD b/core/store/primitives/BUILD
index 0cb83ef..ea85222 100644
--- a/core/store/primitives/BUILD
+++ b/core/store/primitives/BUILD
@@ -21,6 +21,7 @@
     "iterator",
     "list",
     "lock",
+    "log",
     "map",
     "multimap",
     "multiset",
@@ -49,7 +50,7 @@
 ])
 
 # A list of all core protocol packages for dynamic class loading
-PROTOCOL_PACKAGES = ",".join(["io.atomix.primitive.partition.impl"] + ["io.atomix.protocols.{protocol},io.atomix.protocols.{protocol}.partition".format(protocol = protocol) for protocol in _protocol_package_names] + ["io.atomix.protocols.gossip"])
+PROTOCOL_PACKAGES = ",".join(["io.atomix.primitive.partition.impl"] + ["io.atomix.protocols.{protocol},io.atomix.protocols.{protocol}.partition".format(protocol = protocol) for protocol in _protocol_package_names])
 
 # A list of all additional core packages used in dynamic class loading
 CORE_PACKAGES = ",".join([
diff --git a/core/store/primitives/src/main/java/org/onosproject/store/atomix/impl/AtomixManager.java b/core/store/primitives/src/main/java/org/onosproject/store/atomix/impl/AtomixManager.java
index 1135fda..c46ce87 100644
--- a/core/store/primitives/src/main/java/org/onosproject/store/atomix/impl/AtomixManager.java
+++ b/core/store/primitives/src/main/java/org/onosproject/store/atomix/impl/AtomixManager.java
@@ -15,6 +15,7 @@
  */
 package org.onosproject.store.atomix.impl;
 
+import io.atomix.cluster.Node;
 import io.atomix.cluster.discovery.BootstrapDiscoveryProvider;
 import io.atomix.core.Atomix;
 import io.atomix.protocols.raft.partition.RaftPartitionGroup;
@@ -76,13 +77,15 @@
             return Atomix.builder(getClass().getClassLoader())
                 .withClusterId(metadata.getName())
                 .withMemberId(metadataService.getLocalNode().id().id())
-                .withAddress(metadataService.getLocalNode().host(), metadataService.getLocalNode().tcpPort())
+                .withHost(metadata.getLocalNode().host())
+                .withPort(metadata.getLocalNode().tcpPort())
                 .withProperty("type", "onos")
                 .withMembershipProvider(BootstrapDiscoveryProvider.builder()
                     .withNodes(metadata.getStorageNodes().stream()
-                        .map(node -> io.atomix.cluster.Node.builder()
+                        .map(node -> Node.builder()
                             .withId(node.id().id())
-                            .withAddress(node.host(), node.tcpPort())
+                            .withHost(node.host())
+                            .withPort(node.tcpPort())
                             .build())
                         .collect(Collectors.toList()))
                     .build())
@@ -101,13 +104,15 @@
             return Atomix.builder(getClass().getClassLoader())
                 .withClusterId(metadata.getName())
                 .withMemberId(metadataService.getLocalNode().id().id())
-                .withAddress(metadataService.getLocalNode().host(), metadataService.getLocalNode().tcpPort())
+                .withHost(metadata.getLocalNode().host())
+                .withPort(metadata.getLocalNode().tcpPort())
                 .withProperty("type", "onos")
                 .withMembershipProvider(BootstrapDiscoveryProvider.builder()
                     .withNodes(metadata.getControllerNodes().stream()
                         .map(node -> io.atomix.cluster.Node.builder()
                             .withId(node.id().id())
-                            .withAddress(node.host(), node.tcpPort())
+                            .withHost(node.host())
+                            .withPort(node.tcpPort())
                             .build())
                         .collect(Collectors.toList()))
                     .build())
