diff --git a/core/api/src/main/java/org/onosproject/store/service/AsyncAtomicCounter.java b/core/api/src/main/java/org/onosproject/store/service/AsyncAtomicCounter.java
index 8e1a719..36c571b 100644
--- a/core/api/src/main/java/org/onosproject/store/service/AsyncAtomicCounter.java
+++ b/core/api/src/main/java/org/onosproject/store/service/AsyncAtomicCounter.java
@@ -100,6 +100,6 @@
      * @return new {@code ConsistentMap} instance
      */
     default AtomicCounter asAtomicCounter() {
-        return new DefaultAtomicCounter(this, DEFAULT_OPERTATION_TIMEOUT_MILLIS);
+        return new DefaultAtomicCounter(this, DEFAULT_OPERATION_TIMEOUT_MILLIS);
     }
 }
diff --git a/core/api/src/main/java/org/onosproject/store/service/AsyncAtomicCounterMap.java b/core/api/src/main/java/org/onosproject/store/service/AsyncAtomicCounterMap.java
index e4a5408..5500483 100644
--- a/core/api/src/main/java/org/onosproject/store/service/AsyncAtomicCounterMap.java
+++ b/core/api/src/main/java/org/onosproject/store/service/AsyncAtomicCounterMap.java
@@ -169,7 +169,7 @@
      * @return new {@code AtomicCounterMap} instance
      */
     default AtomicCounterMap<K> asAtomicCounterMap() {
-        return asAtomicCounterMap(DistributedPrimitive.DEFAULT_OPERTATION_TIMEOUT_MILLIS);
+        return asAtomicCounterMap(DistributedPrimitive.DEFAULT_OPERATION_TIMEOUT_MILLIS);
     }
 
     /**
diff --git a/core/api/src/main/java/org/onosproject/store/service/AsyncAtomicIdGenerator.java b/core/api/src/main/java/org/onosproject/store/service/AsyncAtomicIdGenerator.java
index fc0e49b..68b2bf7 100644
--- a/core/api/src/main/java/org/onosproject/store/service/AsyncAtomicIdGenerator.java
+++ b/core/api/src/main/java/org/onosproject/store/service/AsyncAtomicIdGenerator.java
@@ -52,6 +52,6 @@
      * @return new {@code AtomicIdGenerator} instance
      */
     default AtomicIdGenerator asAtomicIdGenerator() {
-        return new DefaultAtomicIdGenerator(this, DEFAULT_OPERTATION_TIMEOUT_MILLIS);
+        return new DefaultAtomicIdGenerator(this, DEFAULT_OPERATION_TIMEOUT_MILLIS);
     }
 }
diff --git a/core/api/src/main/java/org/onosproject/store/service/AsyncAtomicValue.java b/core/api/src/main/java/org/onosproject/store/service/AsyncAtomicValue.java
index 2b62cd2..ab0deea 100644
--- a/core/api/src/main/java/org/onosproject/store/service/AsyncAtomicValue.java
+++ b/core/api/src/main/java/org/onosproject/store/service/AsyncAtomicValue.java
@@ -99,6 +99,6 @@
      * @return new {@code AtomicValue} instance
      */
     default AtomicValue<V> asAtomicValue() {
-        return new DefaultAtomicValue<>(this, DEFAULT_OPERTATION_TIMEOUT_MILLIS);
+        return new DefaultAtomicValue<>(this, DEFAULT_OPERATION_TIMEOUT_MILLIS);
     }
 }
diff --git a/core/api/src/main/java/org/onosproject/store/service/AsyncConsistentMap.java b/core/api/src/main/java/org/onosproject/store/service/AsyncConsistentMap.java
index 0704853..51e31f3 100644
--- a/core/api/src/main/java/org/onosproject/store/service/AsyncConsistentMap.java
+++ b/core/api/src/main/java/org/onosproject/store/service/AsyncConsistentMap.java
@@ -350,7 +350,7 @@
      * @return new {@code ConsistentMap} instance
      */
     default ConsistentMap<K, V> asConsistentMap() {
-        return asConsistentMap(DistributedPrimitive.DEFAULT_OPERTATION_TIMEOUT_MILLIS);
+        return asConsistentMap(DistributedPrimitive.DEFAULT_OPERATION_TIMEOUT_MILLIS);
     }
 
     /**
diff --git a/core/api/src/main/java/org/onosproject/store/service/AsyncConsistentMultimap.java b/core/api/src/main/java/org/onosproject/store/service/AsyncConsistentMultimap.java
index da121c9..36d6d25 100644
--- a/core/api/src/main/java/org/onosproject/store/service/AsyncConsistentMultimap.java
+++ b/core/api/src/main/java/org/onosproject/store/service/AsyncConsistentMultimap.java
@@ -241,7 +241,7 @@
      * synchronous access to this map
      */
     default ConsistentMultimap<K, V> asMultimap() {
-        return asMultimap(DEFAULT_OPERTATION_TIMEOUT_MILLIS);
+        return asMultimap(DEFAULT_OPERATION_TIMEOUT_MILLIS);
     }
 
     /**
diff --git a/core/api/src/main/java/org/onosproject/store/service/AsyncConsistentTreeMap.java b/core/api/src/main/java/org/onosproject/store/service/AsyncConsistentTreeMap.java
index 87386ed..c1bb36d 100644
--- a/core/api/src/main/java/org/onosproject/store/service/AsyncConsistentTreeMap.java
+++ b/core/api/src/main/java/org/onosproject/store/service/AsyncConsistentTreeMap.java
@@ -23,8 +23,6 @@
 import java.util.NavigableSet;
 import java.util.concurrent.CompletableFuture;
 
-import static org.onosproject.store.service.DistributedPrimitive.DEFAULT_OPERTATION_TIMEOUT_MILLIS;
-
 /**
  * API for a distributed tree map implementation.
  */
@@ -167,7 +165,7 @@
                                                       boolean inclusiveLower);
 
     default ConsistentTreeMap<V> asTreeMap() {
-        return asTreeMap(DEFAULT_OPERTATION_TIMEOUT_MILLIS);
+        return asTreeMap(DEFAULT_OPERATION_TIMEOUT_MILLIS);
     }
 
     default ConsistentTreeMap<V> asTreeMap(long timeoutMillis) {
diff --git a/core/api/src/main/java/org/onosproject/store/service/AsyncDistributedSet.java b/core/api/src/main/java/org/onosproject/store/service/AsyncDistributedSet.java
index b5f7fdb..aa1349c 100644
--- a/core/api/src/main/java/org/onosproject/store/service/AsyncDistributedSet.java
+++ b/core/api/src/main/java/org/onosproject/store/service/AsyncDistributedSet.java
@@ -131,7 +131,7 @@
      * @return new {@code DistributedSet} instance
      */
     default DistributedSet<E> asDistributedSet() {
-        return asDistributedSet(DistributedPrimitive.DEFAULT_OPERTATION_TIMEOUT_MILLIS);
+        return asDistributedSet(DistributedPrimitive.DEFAULT_OPERATION_TIMEOUT_MILLIS);
     }
 
     /**
diff --git a/core/api/src/main/java/org/onosproject/store/service/AsyncLeaderElector.java b/core/api/src/main/java/org/onosproject/store/service/AsyncLeaderElector.java
index 9b8c967..0ed4470 100644
--- a/core/api/src/main/java/org/onosproject/store/service/AsyncLeaderElector.java
+++ b/core/api/src/main/java/org/onosproject/store/service/AsyncLeaderElector.java
@@ -142,6 +142,6 @@
      * @return new {@code LeaderElector} instance
      */
     default LeaderElector asLeaderElector() {
-        return asLeaderElector(DistributedPrimitive.DEFAULT_OPERTATION_TIMEOUT_MILLIS);
+        return asLeaderElector(DistributedPrimitive.DEFAULT_OPERATION_TIMEOUT_MILLIS);
     }
 }
diff --git a/core/api/src/main/java/org/onosproject/store/service/DistributedPrimitive.java b/core/api/src/main/java/org/onosproject/store/service/DistributedPrimitive.java
index 9142bf5..de75e70 100644
--- a/core/api/src/main/java/org/onosproject/store/service/DistributedPrimitive.java
+++ b/core/api/src/main/java/org/onosproject/store/service/DistributedPrimitive.java
@@ -125,7 +125,16 @@
         INACTIVE
     }
 
-    static final long DEFAULT_OPERTATION_TIMEOUT_MILLIS = 5000L;
+    /**
+     * Use {@link #DEFAULT_OPERATION_TIMEOUT_MILLIS} instead.
+     */
+    @Deprecated
+    long DEFAULT_OPERTATION_TIMEOUT_MILLIS = 5000L;
+
+    /**
+     * Default timeout for primitive operations.
+     */
+    long DEFAULT_OPERATION_TIMEOUT_MILLIS = 5000L;
 
     /**
      * Returns the name of this primitive.
