diff --git a/apps/test/distributed-primitives/src/main/java/org/onosproject/distributedprimitives/cli/CounterTestIncrementCommand.java b/apps/test/distributed-primitives/src/main/java/org/onosproject/distributedprimitives/cli/CounterTestIncrementCommand.java
index 632d447..03db803 100644
--- a/apps/test/distributed-primitives/src/main/java/org/onosproject/distributedprimitives/cli/CounterTestIncrementCommand.java
+++ b/apps/test/distributed-primitives/src/main/java/org/onosproject/distributedprimitives/cli/CounterTestIncrementCommand.java
@@ -39,10 +39,6 @@
 
     private final Logger log = getLogger(getClass());
 
-    @Option(name = "-i", aliases = "--inMemory", description = "use in memory map?",
-            required = false, multiValued = false)
-    private boolean inMemory = false;
-
     @Option(name = "-g", aliases = "--getFirst", description = "get the counter's value before adding",
             required = false, multiValued = false)
     private boolean getFirst = false;
@@ -63,16 +59,7 @@
     @Override
     protected void execute() {
         StorageService storageService = get(StorageService.class);
-        if (inMemory) {
-            atomicCounter = storageService.atomicCounterBuilder()
-                    .withName(counter)
-                    .withPartitionsDisabled()
-                    .build();
-        } else {
-            atomicCounter = storageService.atomicCounterBuilder()
-                    .withName(counter)
-                    .build();
-        }
+        atomicCounter = storageService.getAsyncAtomicCounter(counter);
         CompletableFuture<Long> result;
         if (delta != null) {
             if (getFirst) {
diff --git a/apps/test/loadtest/src/main/java/org/onosproject/loadtest/DistributedConsensusLoadTest.java b/apps/test/loadtest/src/main/java/org/onosproject/loadtest/DistributedConsensusLoadTest.java
index d3a860f..9287f32 100644
--- a/apps/test/loadtest/src/main/java/org/onosproject/loadtest/DistributedConsensusLoadTest.java
+++ b/apps/test/loadtest/src/main/java/org/onosproject/loadtest/DistributedConsensusLoadTest.java
@@ -95,9 +95,8 @@
         appId = coreService.registerApplication("org.onosproject.loadtest");
         log.info("Started with {}", appId);
         for (int i = 0; i < TOTAL_COUNTERS; ++i) {
-            AsyncAtomicCounter counter = storageService.atomicCounterBuilder()
-                                .withName(String.format("onos-app-loadtest-counter-%d", i))
-                                .build();
+            AsyncAtomicCounter counter =
+                storageService.getAsyncAtomicCounter(String.format("onos-app-loadtest-counter-%d", i));
             counters.add(counter);
         }
         reporter.scheduleWithFixedDelay(() -> {
