diff --git a/core/api/src/main/java/org/onosproject/store/cluster/messaging/ClusterMessageHandler.java b/core/api/src/main/java/org/onosproject/store/cluster/messaging/ClusterMessageHandler.java
index 19c7dda..ce770a8 100644
--- a/core/api/src/main/java/org/onosproject/store/cluster/messaging/ClusterMessageHandler.java
+++ b/core/api/src/main/java/org/onosproject/store/cluster/messaging/ClusterMessageHandler.java
@@ -24,5 +24,5 @@
      * Handles/Processes the cluster message.
      * @param message cluster message.
      */
-    public void handle(ClusterMessage message);
+    void handle(ClusterMessage message);
 }
diff --git a/core/api/src/main/java/org/onosproject/store/service/AtomicCounterBuilder.java b/core/api/src/main/java/org/onosproject/store/service/AtomicCounterBuilder.java
index ee8481d2..8819977 100644
--- a/core/api/src/main/java/org/onosproject/store/service/AtomicCounterBuilder.java
+++ b/core/api/src/main/java/org/onosproject/store/service/AtomicCounterBuilder.java
@@ -17,7 +17,7 @@
      * @param name name of the atomic counter
      * @return this AtomicCounterBuilder
      */
-    public AtomicCounterBuilder withName(String name);
+    AtomicCounterBuilder withName(String name);
 
     /**
      * Creates this counter on the partition that spans the entire cluster.
@@ -30,7 +30,7 @@
      * </p>
      * @return this AtomicCounterBuilder
      */
-    public AtomicCounterBuilder withPartitionsDisabled();
+    AtomicCounterBuilder withPartitionsDisabled();
 
     /**
      * Builds a AtomicCounter based on the configuration options
@@ -39,7 +39,7 @@
      * @return new AtomicCounter
      * @throws java.lang.RuntimeException if a mandatory parameter is missing
      */
-    public AtomicCounter build();
+    AtomicCounter build();
 
     /**
      * Builds a AsyncAtomicCounter based on the configuration options
@@ -48,5 +48,5 @@
      * @return new AsyncAtomicCounter
      * @throws java.lang.RuntimeException if a mandatory parameter is missing
      */
-    public AsyncAtomicCounter buildAsyncCounter();
+    AsyncAtomicCounter buildAsyncCounter();
 }
diff --git a/core/api/src/main/java/org/onosproject/store/service/ClockService.java b/core/api/src/main/java/org/onosproject/store/service/ClockService.java
index a0de0a9..12ce688 100644
--- a/core/api/src/main/java/org/onosproject/store/service/ClockService.java
+++ b/core/api/src/main/java/org/onosproject/store/service/ClockService.java
@@ -31,5 +31,5 @@
      * @param object2 Second object to use when generating timestamps
      * @return the new timestamp
      */
-    public Timestamp getTimestamp(T object1, U object2);
+    Timestamp getTimestamp(T object1, U object2);
 }
diff --git a/core/api/src/main/java/org/onosproject/store/service/ConsistentMapBuilder.java b/core/api/src/main/java/org/onosproject/store/service/ConsistentMapBuilder.java
index 6e3fba4..50d829c 100644
--- a/core/api/src/main/java/org/onosproject/store/service/ConsistentMapBuilder.java
+++ b/core/api/src/main/java/org/onosproject/store/service/ConsistentMapBuilder.java
@@ -21,7 +21,7 @@
      * @param name name of the consistent map
      * @return this ConsistentMapBuilder
      */
-    public ConsistentMapBuilder<K, V> withName(String name);
+    ConsistentMapBuilder<K, V> withName(String name);
 
     /**
      * Sets a serializer that can be used to serialize
@@ -35,7 +35,7 @@
      * @param serializer serializer
      * @return this ConsistentMapBuilder
      */
-    public ConsistentMapBuilder<K, V> withSerializer(Serializer serializer);
+    ConsistentMapBuilder<K, V> withSerializer(Serializer serializer);
 
     /**
      * Disables distribution of map entries across multiple database partitions.
@@ -53,7 +53,7 @@
      * </p>
      * @return this ConsistentMapBuilder
      */
-    public ConsistentMapBuilder<K, V> withPartitionsDisabled();
+    ConsistentMapBuilder<K, V> withPartitionsDisabled();
 
     /**
      * Disables map updates.
@@ -62,7 +62,7 @@
      *
      * @return this ConsistentMapBuilder
      */
-    public ConsistentMapBuilder<K, V> withUpdatesDisabled();
+    ConsistentMapBuilder<K, V> withUpdatesDisabled();
 
     /**
      * Builds an consistent map based on the configuration options
@@ -71,7 +71,7 @@
      * @return new consistent map
      * @throws java.lang.RuntimeException if a mandatory parameter is missing
      */
-    public ConsistentMap<K, V> build();
+    ConsistentMap<K, V> build();
 
     /**
      * Builds an async consistent map based on the configuration options
@@ -80,5 +80,5 @@
      * @return new async consistent map
      * @throws java.lang.RuntimeException if a mandatory parameter is missing
      */
-    public AsyncConsistentMap<K, V> buildAsyncMap();
-}
\ No newline at end of file
+    AsyncConsistentMap<K, V> buildAsyncMap();
+}
diff --git a/core/api/src/main/java/org/onosproject/store/service/EventuallyConsistentMap.java b/core/api/src/main/java/org/onosproject/store/service/EventuallyConsistentMap.java
index 58a81cc..84b515c 100644
--- a/core/api/src/main/java/org/onosproject/store/service/EventuallyConsistentMap.java
+++ b/core/api/src/main/java/org/onosproject/store/service/EventuallyConsistentMap.java
@@ -45,14 +45,14 @@
      *
      * @return number of key-value mappings
      */
-    public int size();
+    int size();
 
     /**
      * Returns true if this map is empty.
      *
      * @return true if this map is empty, otherwise false
      */
-    public boolean isEmpty();
+    boolean isEmpty();
 
     /**
      * Returns true if the map contains a mapping for the specified key.
@@ -60,7 +60,7 @@
      * @param key the key to check if this map contains
      * @return true if this map has a mapping for the key, otherwise false
      */
-    public boolean containsKey(K key);
+    boolean containsKey(K key);
 
     /**
      * Returns true if the map contains a mapping from any key to the specified
@@ -69,7 +69,7 @@
      * @param value the value to check if this map has a mapping for
      * @return true if this map has a mapping to this value, otherwise false
      */
-    public boolean containsValue(V value);
+    boolean containsValue(V value);
 
     /**
      * Returns the value mapped to the specified key.
@@ -77,7 +77,7 @@
      * @param key the key to look up in this map
      * @return the value mapped to the key, or null if no mapping is found
      */
-    public V get(K key);
+    V get(K key);
 
     /**
      * Associates the specified value to the specified key in this map.
@@ -94,7 +94,7 @@
      * @param key the key to add a mapping for in this map
      * @param value the value to associate with the key in this map
      */
-    public void put(K key, V value);
+    void put(K key, V value);
 
     /**
      * Removes the mapping associated with the specified key from the map.
@@ -108,7 +108,7 @@
      *
      * @param key the key to remove the mapping for
      */
-    public void remove(K key);
+    void remove(K key);
 
     /**
      * Removes the given key-value mapping from the map, if it exists.
@@ -129,7 +129,7 @@
      * @param key the key to remove the mapping for
      * @param value the value mapped to the key
      */
-    public void remove(K key, V value);
+    void remove(K key, V value);
 
     /**
      * Adds mappings for all key-value pairs in the specified map to this map.
@@ -140,12 +140,12 @@
      *
      * @param m a map of values to add to this map
      */
-    public void putAll(Map<? extends K, ? extends V> m);
+    void putAll(Map<? extends K, ? extends V> m);
 
     /**
      * Removes all mappings from this map.
      */
-    public void clear();
+    void clear();
 
     /**
      * Returns a set of the keys in this map. Changes to the set are not
@@ -153,7 +153,7 @@
      *
      * @return set of keys in the map
      */
-    public Set<K> keySet();
+    Set<K> keySet();
 
     /**
      * Returns a collections of values in this map. Changes to the collection
@@ -161,7 +161,7 @@
      *
      * @return collection of values in the map
      */
-    public Collection<V> values();
+    Collection<V> values();
 
     /**
      * Returns a set of mappings contained in this map. Changes to the set are
@@ -169,7 +169,7 @@
      *
      * @return set of key-value mappings in this map
      */
-    public Set<Map.Entry<K, V>> entrySet();
+    Set<Map.Entry<K, V>> entrySet();
 
     /**
      * Adds the specified listener to the map which will be notified whenever
@@ -177,7 +177,7 @@
      *
      * @param listener listener to register for events
      */
-    public void addListener(EventuallyConsistentMapListener<K, V> listener);
+    void addListener(EventuallyConsistentMapListener<K, V> listener);
 
     /**
      * Removes the specified listener from the map such that it will no longer
@@ -185,7 +185,7 @@
      *
      * @param listener listener to deregister for events
      */
-    public void removeListener(EventuallyConsistentMapListener<K, V> listener);
+    void removeListener(EventuallyConsistentMapListener<K, V> listener);
 
     /**
      * Shuts down the map and breaks communication between different instances.
@@ -193,5 +193,5 @@
      * Calls to any methods on the map subsequent to calling destroy() will
      * throw a {@link java.lang.RuntimeException}.
      */
-    public void destroy();
+    void destroy();
 }
diff --git a/core/api/src/main/java/org/onosproject/store/service/EventuallyConsistentMapBuilder.java b/core/api/src/main/java/org/onosproject/store/service/EventuallyConsistentMapBuilder.java
index 75ac27d..c3abb4e 100644
--- a/core/api/src/main/java/org/onosproject/store/service/EventuallyConsistentMapBuilder.java
+++ b/core/api/src/main/java/org/onosproject/store/service/EventuallyConsistentMapBuilder.java
@@ -48,7 +48,7 @@
      * @param name name of the map
      * @return this EventuallyConsistentMapBuilder
      */
-    public EventuallyConsistentMapBuilder<K, V> withName(String name);
+    EventuallyConsistentMapBuilder<K, V> withName(String name);
 
     /**
      * Sets a serializer builder that can be used to create a serializer that
@@ -62,7 +62,7 @@
      * @param serializerBuilder serializer builder
      * @return this EventuallyConsistentMapBuilder
      */
-    public EventuallyConsistentMapBuilder<K, V> withSerializer(
+    EventuallyConsistentMapBuilder<K, V> withSerializer(
             KryoNamespace.Builder serializerBuilder);
 
     /**
@@ -83,7 +83,7 @@
      * @param clockService clock service
      * @return this EventuallyConsistentMapBuilder
      */
-    public EventuallyConsistentMapBuilder<K, V> withClockService(
+    EventuallyConsistentMapBuilder<K, V> withClockService(
             ClockService<K, V> clockService);
 
     /**
@@ -92,7 +92,7 @@
      * @param executor event executor
      * @return this EventuallyConsistentMapBuilder
      */
-    public EventuallyConsistentMapBuilder<K, V> withEventExecutor(
+    EventuallyConsistentMapBuilder<K, V> withEventExecutor(
             ExecutorService executor);
 
     /**
@@ -101,7 +101,7 @@
      * @param executor event executor
      * @return this EventuallyConsistentMapBuilder
      */
-    public EventuallyConsistentMapBuilder<K, V> withCommunicationExecutor(
+    EventuallyConsistentMapBuilder<K, V> withCommunicationExecutor(
             ExecutorService executor);
 
     /**
@@ -110,7 +110,7 @@
      * @param executor event executor
      * @return this EventuallyConsistentMapBuilder
      */
-    public EventuallyConsistentMapBuilder<K, V> withBackgroundExecutor(
+    EventuallyConsistentMapBuilder<K, V> withBackgroundExecutor(
             ScheduledExecutorService executor);
 
     /**
@@ -124,7 +124,7 @@
      *                           to
      * @return this EventuallyConsistentMapBuilder
      */
-    public EventuallyConsistentMapBuilder<K, V> withPeerUpdateFunction(
+    EventuallyConsistentMapBuilder<K, V> withPeerUpdateFunction(
             BiFunction<K, V, Collection<NodeId>> peerUpdateFunction);
 
     /**
@@ -137,7 +137,7 @@
      *
      * @return this EventuallyConsistentMapBuilder
      */
-    public EventuallyConsistentMapBuilder<K, V> withTombstonesDisabled();
+    EventuallyConsistentMapBuilder<K, V> withTombstonesDisabled();
 
     /**
      * Configures how often to run the anti-entropy background task.
@@ -149,7 +149,7 @@
      * @param unit time unit for the period
      * @return this EventuallyConsistentMapBuilder
      */
-    public EventuallyConsistentMapBuilder<K, V> withAntiEntropyPeriod(
+    EventuallyConsistentMapBuilder<K, V> withAntiEntropyPeriod(
             long period, TimeUnit unit);
 
     /**
@@ -163,7 +163,7 @@
      *
      * @return this EventuallyConsistentMapBuilder
      */
-    public EventuallyConsistentMapBuilder<K, V> withFasterConvergence();
+    EventuallyConsistentMapBuilder<K, V> withFasterConvergence();
 
     /**
      * Configure the map to persist data to disk.
@@ -173,7 +173,7 @@
      *
      * @return this EventuallyConsistentMapBuilder
      */
-    public EventuallyConsistentMapBuilder<K, V> withPersistence();
+    EventuallyConsistentMapBuilder<K, V> withPersistence();
 
     /**
      * Builds an eventually consistent map based on the configuration options
@@ -182,5 +182,5 @@
      * @return new eventually consistent map
      * @throws java.lang.RuntimeException if a mandatory parameter is missing
      */
-    public EventuallyConsistentMap<K, V> build();
+    EventuallyConsistentMap<K, V> build();
 }
diff --git a/core/api/src/main/java/org/onosproject/store/service/EventuallyConsistentMapListener.java b/core/api/src/main/java/org/onosproject/store/service/EventuallyConsistentMapListener.java
index 686255e..1f6a5e0 100644
--- a/core/api/src/main/java/org/onosproject/store/service/EventuallyConsistentMapListener.java
+++ b/core/api/src/main/java/org/onosproject/store/service/EventuallyConsistentMapListener.java
@@ -26,5 +26,5 @@
      *
      * @param event the event
      */
-    public void event(EventuallyConsistentMapEvent<K, V> event);
+    void event(EventuallyConsistentMapEvent<K, V> event);
 }
diff --git a/core/api/src/main/java/org/onosproject/store/service/Serializer.java b/core/api/src/main/java/org/onosproject/store/service/Serializer.java
index 32ae585..5e1b84e 100644
--- a/core/api/src/main/java/org/onosproject/store/service/Serializer.java
+++ b/core/api/src/main/java/org/onosproject/store/service/Serializer.java
@@ -44,7 +44,7 @@
      * @param kryo kryo namespace
      * @return Serializer instance
      */
-    public static Serializer using(KryoNamespace kryo) {
+    static Serializer using(KryoNamespace kryo) {
         return new Serializer() {
             @Override
             public <T> byte[] encode(T object) {
@@ -57,4 +57,4 @@
             }
         };
     }
-}
\ No newline at end of file
+}
diff --git a/core/api/src/main/java/org/onosproject/store/service/SetBuilder.java b/core/api/src/main/java/org/onosproject/store/service/SetBuilder.java
index 3ea7aaf..3f28065f 100644
--- a/core/api/src/main/java/org/onosproject/store/service/SetBuilder.java
+++ b/core/api/src/main/java/org/onosproject/store/service/SetBuilder.java
@@ -36,7 +36,7 @@
      * @param name name of the set
      * @return this SetBuilder
      */
-    public SetBuilder<E> withName(String name);
+    SetBuilder<E> withName(String name);
 
     /**
      * Sets a serializer that can be used to serialize
@@ -50,7 +50,7 @@
      * @param serializer serializer
      * @return this SetBuilder
      */
-    public SetBuilder<E> withSerializer(Serializer serializer);
+    SetBuilder<E> withSerializer(Serializer serializer);
 
     /**
      * Disables set updates.
@@ -68,5 +68,5 @@
      * @return new set
      * @throws java.lang.RuntimeException if a mandatory parameter is missing
      */
-    public Set<E> build();
-}
\ No newline at end of file
+    Set<E> build();
+}
diff --git a/core/api/src/main/java/org/onosproject/store/service/Transaction.java b/core/api/src/main/java/org/onosproject/store/service/Transaction.java
index 514e1ab..330d846 100644
--- a/core/api/src/main/java/org/onosproject/store/service/Transaction.java
+++ b/core/api/src/main/java/org/onosproject/store/service/Transaction.java
@@ -22,7 +22,7 @@
  */
 public interface Transaction {
 
-    public enum State {
+    enum State {
         /**
          * Indicates a new transaction that is about to be prepared. All transactions
          * start their life in this state.
@@ -81,7 +81,7 @@
      *
      * @return true is yes, false otherwise
      */
-    public default boolean isDone() {
+    default boolean isDone() {
         return state() == State.COMMITTED || state() == State.ROLLEDBACK;
     }
 
@@ -98,5 +98,5 @@
      *
      * @return last update time
      */
-    public long lastUpdated();
-}
\ No newline at end of file
+    long lastUpdated();
+}
diff --git a/core/api/src/main/java/org/onosproject/store/service/TransactionContextBuilder.java b/core/api/src/main/java/org/onosproject/store/service/TransactionContextBuilder.java
index 4ae6b0f..268c909 100644
--- a/core/api/src/main/java/org/onosproject/store/service/TransactionContextBuilder.java
+++ b/core/api/src/main/java/org/onosproject/store/service/TransactionContextBuilder.java
@@ -19,7 +19,7 @@
      *
      * @return this TransactionalContextBuilder
      */
-    public TransactionContextBuilder withPartitionsDisabled();
+    TransactionContextBuilder withPartitionsDisabled();
 
     /**
      * Builds a TransactionContext based on configuration options supplied to this
@@ -28,5 +28,5 @@
      * @return a new TransactionalContext
      * @throws java.lang.RuntimeException if a mandatory parameter is missing
      */
-    public TransactionContext build();
+    TransactionContext build();
 }
