diff --git a/core/api/src/main/java/org/onosproject/net/flowobjective/FilteringObjective.java b/core/api/src/main/java/org/onosproject/net/flowobjective/FilteringObjective.java
index 89b668d..d037764 100644
--- a/core/api/src/main/java/org/onosproject/net/flowobjective/FilteringObjective.java
+++ b/core/api/src/main/java/org/onosproject/net/flowobjective/FilteringObjective.java
@@ -45,13 +45,13 @@
      *
      * @return a criterion
      */
-    public Criterion key();
+    Criterion key();
 
     /**
      * Obtain this filtering type.
      * @return the type
      */
-    public Type type();
+    Type type();
 
     /**
      * The set of conditions the filter must provision at the device.
@@ -63,7 +63,7 @@
     /**
      * Builder of Filtering objective entities.
      */
-    public interface Builder extends Objective.Builder {
+    interface Builder extends Objective.Builder {
 
         /**
          * Specify the key for the filter.
@@ -71,7 +71,7 @@
          * @param key a criterion
          * @return a filter objective builder
          */
-        public Builder withKey(Criterion key);
+        Builder withKey(Criterion key);
 
         /**
          * Add a filtering condition.
@@ -79,40 +79,40 @@
          * @param criterion new criterion
          * @return a filtering builder
          */
-        public Builder addCondition(Criterion criterion);
+        Builder addCondition(Criterion criterion);
 
         /**
          * Permit this filtering condition set.
          * @return a filtering builder
          */
-        public Builder permit();
+        Builder permit();
 
         /**
          * Deny this filtering condition set.
          * @return a filtering builder
          */
-        public Builder deny();
+        Builder deny();
 
         /**
          * Assigns an application id.
          * @param appId an application id
          * @return a filtering builder
          */
-        public Builder fromApp(ApplicationId appId);
+        Builder fromApp(ApplicationId appId);
 
         /**
          * Builds the filtering objective that will be added.
          *
          * @return a filtering objective
          */
-        public FilteringObjective add();
+        FilteringObjective add();
 
         /**
          * Builds the filtering objective that will be removed.
          *
          * @return a filtering objective.
          */
-        public FilteringObjective remove();
+        FilteringObjective remove();
 
         /**
          * Builds the filtering objective that will be added.
@@ -121,7 +121,7 @@
          * @param context an objective context
          * @return a filtering objective
          */
-        public FilteringObjective add(ObjectiveContext context);
+        FilteringObjective add(ObjectiveContext context);
 
         /**
          * Builds the filtering objective that will be removed.
@@ -130,7 +130,7 @@
          * @param context an objective context
          * @return a filtering objective
          */
-        public FilteringObjective remove(ObjectiveContext context);
+        FilteringObjective remove(ObjectiveContext context);
 
 
     }
diff --git a/core/api/src/main/java/org/onosproject/net/flowobjective/ForwardingObjective.java b/core/api/src/main/java/org/onosproject/net/flowobjective/ForwardingObjective.java
index dcc377f..d825b99 100644
--- a/core/api/src/main/java/org/onosproject/net/flowobjective/ForwardingObjective.java
+++ b/core/api/src/main/java/org/onosproject/net/flowobjective/ForwardingObjective.java
@@ -74,7 +74,7 @@
     /**
      * A forwarding objective builder.
      */
-    public interface Builder extends Objective.Builder {
+    interface Builder extends Objective.Builder {
 
         /**
          * Assigns a selector to the forwarding objective.
@@ -82,7 +82,7 @@
          * @param selector a traffic selector
          * @return a forwarding objective builder
          */
-        public Builder withSelector(TrafficSelector selector);
+        Builder withSelector(TrafficSelector selector);
 
         /**
          * Assigns a next step to the forwarding objective.
@@ -90,7 +90,7 @@
          * @param nextId a next objective id.
          * @return a forwarding objective builder
          */
-        public Builder nextStep(int nextId);
+        Builder nextStep(int nextId);
 
         /**
          * Assigns the treatment for this forwarding objective.
@@ -98,7 +98,7 @@
          * @param treatment a traffic treatment
          * @return a forwarding objective
          */
-        public Builder withTreatment(TrafficTreatment treatment);
+        Builder withTreatment(TrafficTreatment treatment);
 
         /**
          * Assigns the flag to the forwarding objective.
@@ -106,21 +106,21 @@
          * @param flag a flag
          * @return a forwarding objective builder
          */
-        public Builder withFlag(Flag flag);
+        Builder withFlag(Flag flag);
 
         /**
          * Builds the forwarding objective that will be added.
          *
          * @return a forwarding objective
          */
-        public ForwardingObjective add();
+        ForwardingObjective add();
 
         /**
          * Builds the forwarding objective that will be removed.
          *
          * @return a forwarding objective.
          */
-        public ForwardingObjective remove();
+        ForwardingObjective remove();
 
         /**
          * Builds the forwarding objective that will be added.
@@ -129,7 +129,7 @@
          * @param context an objective context
          * @return a forwarding objective
          */
-        public ForwardingObjective add(ObjectiveContext context);
+        ForwardingObjective add(ObjectiveContext context);
 
         /**
          * Builds the forwarding objective that will be removed.
@@ -138,6 +138,6 @@
          * @param context an objective context
          * @return a forwarding objective
          */
-        public ForwardingObjective remove(ObjectiveContext context);
+        ForwardingObjective remove(ObjectiveContext context);
     }
 }
diff --git a/core/api/src/main/java/org/onosproject/net/flowobjective/NextObjective.java b/core/api/src/main/java/org/onosproject/net/flowobjective/NextObjective.java
index 02c4d9e..229e6b5 100644
--- a/core/api/src/main/java/org/onosproject/net/flowobjective/NextObjective.java
+++ b/core/api/src/main/java/org/onosproject/net/flowobjective/NextObjective.java
@@ -70,7 +70,7 @@
     /**
      * A next step builder.
      */
-    public interface Builder extends Objective.Builder {
+    interface Builder extends Objective.Builder {
 
         /**
          * Specifies the id for this next objective.
@@ -78,7 +78,7 @@
          * @param nextId an integer
          * @return a next objective builder
          */
-        public Builder withId(int nextId);
+        Builder withId(int nextId);
 
         /**
          * Sets the type of next step.
@@ -86,7 +86,7 @@
          * @param type a type
          * @return a next step builder
          */
-        public Builder withType(Type type);
+        Builder withType(Type type);
 
         /**
          * Adds a treatment to this next step.
@@ -94,24 +94,24 @@
          * @param treatment a traffic treatment
          * @return a next step builder
          */
-        public Builder addTreatment(TrafficTreatment treatment);
+        Builder addTreatment(TrafficTreatment treatment);
 
         @Override
-        public Builder fromApp(ApplicationId appId);
+        Builder fromApp(ApplicationId appId);
 
         /**
          * Builds the next objective that will be added.
          *
          * @return a next objective
          */
-        public NextObjective add();
+        NextObjective add();
 
         /**
          * Builds the next objective that will be removed.
          *
          * @return a next objective.
          */
-        public NextObjective remove();
+        NextObjective remove();
 
         /**
          * Builds the next objective that will be added.
@@ -120,7 +120,7 @@
          * @param context an objective context
          * @return a next objective
          */
-        public NextObjective add(ObjectiveContext context);
+        NextObjective add(ObjectiveContext context);
 
         /**
          * Builds the next objective that will be removed.
@@ -129,7 +129,7 @@
          * @param context an objective context
          * @return a next objective
          */
-        public NextObjective remove(ObjectiveContext context);
+        NextObjective remove(ObjectiveContext context);
 
     }
 
diff --git a/core/api/src/main/java/org/onosproject/net/flowobjective/Objective.java b/core/api/src/main/java/org/onosproject/net/flowobjective/Objective.java
index fa98b6d..0d53a75 100644
--- a/core/api/src/main/java/org/onosproject/net/flowobjective/Objective.java
+++ b/core/api/src/main/java/org/onosproject/net/flowobjective/Objective.java
@@ -96,21 +96,21 @@
     /**
      * An objective builder.
      */
-    public interface Builder {
+    interface Builder {
         /**
          * Makes the filtering objective temporary.
          *
          * @param timeout a timeout
          * @return an objective builder
          */
-        public Builder makeTemporary(int timeout);
+        Builder makeTemporary(int timeout);
 
         /**
          * Makes the filtering objective permanent.
          *
          * @return an objective builder
          */
-        public Builder makePermanent();
+        Builder makePermanent();
 
         /**
          * Specifies the application which applied the filter.
@@ -118,7 +118,7 @@
          * @param appId an application id
          * @return an objective builder
          */
-        public Builder fromApp(ApplicationId appId);
+        Builder fromApp(ApplicationId appId);
 
         /**
          * Sets the priority for this objective.
@@ -126,7 +126,7 @@
          * @param priority an integer
          * @return an objective builder
          */
-        public Builder withPriority(int priority);
+        Builder withPriority(int priority);
     }
 
 }
