diff --git a/openflow/api/src/main/java/org/onosproject/openflow/controller/OpenFlowController.java b/openflow/api/src/main/java/org/onosproject/openflow/controller/OpenFlowController.java
index d8a005d..2c68fa0 100644
--- a/openflow/api/src/main/java/org/onosproject/openflow/controller/OpenFlowController.java
+++ b/openflow/api/src/main/java/org/onosproject/openflow/controller/OpenFlowController.java
@@ -28,19 +28,19 @@
      * Returns all switches known to this OF controller.
      * @return Iterable of dpid elements
      */
-    public Iterable<OpenFlowSwitch> getSwitches();
+    Iterable<OpenFlowSwitch> getSwitches();
 
     /**
      * Returns all master switches known to this OF controller.
      * @return Iterable of dpid elements
      */
-    public Iterable<OpenFlowSwitch> getMasterSwitches();
+    Iterable<OpenFlowSwitch> getMasterSwitches();
 
     /**
      * Returns all equal switches known to this OF controller.
      * @return Iterable of dpid elements
      */
-    public Iterable<OpenFlowSwitch> getEqualSwitches();
+    Iterable<OpenFlowSwitch> getEqualSwitches();
 
 
     /**
@@ -48,70 +48,70 @@
      * @param dpid the switch to fetch
      * @return the interface to this switch
      */
-    public OpenFlowSwitch getSwitch(Dpid dpid);
+    OpenFlowSwitch getSwitch(Dpid dpid);
 
     /**
      * Returns the actual master switch for the given Dpid, if one exists.
      * @param dpid the switch to fetch
      * @return the interface to this switch
      */
-    public OpenFlowSwitch getMasterSwitch(Dpid dpid);
+    OpenFlowSwitch getMasterSwitch(Dpid dpid);
 
     /**
      * Returns the actual equal switch for the given Dpid, if one exists.
      * @param dpid the switch to fetch
      * @return the interface to this switch
      */
-    public OpenFlowSwitch getEqualSwitch(Dpid dpid);
+    OpenFlowSwitch getEqualSwitch(Dpid dpid);
 
     /**
      * Register a listener for meta events that occur to OF
      * devices.
      * @param listener the listener to notify
      */
-    public void addListener(OpenFlowSwitchListener listener);
+    void addListener(OpenFlowSwitchListener listener);
 
     /**
      * Unregister a listener.
      *
      * @param listener the listener to unregister
      */
-    public void removeListener(OpenFlowSwitchListener listener);
+    void removeListener(OpenFlowSwitchListener listener);
 
     /**
      * Register a listener for packet events.
      * @param priority the importance of this listener, lower values are more important
      * @param listener the listener to notify
      */
-    public void addPacketListener(int priority, PacketListener listener);
+    void addPacketListener(int priority, PacketListener listener);
 
     /**
      * Unregister a listener.
      *
      * @param listener the listener to unregister
      */
-    public void removePacketListener(PacketListener listener);
+    void removePacketListener(PacketListener listener);
 
     /**
      * Register a listener for OF msg events.
      *
      * @param listener the listener to notify
      */
-    public void addEventListener(OpenFlowEventListener listener);
+    void addEventListener(OpenFlowEventListener listener);
 
     /**
      * Unregister a listener.
      *
      * @param listener the listener to unregister
      */
-    public void removeEventListener(OpenFlowEventListener listener);
+    void removeEventListener(OpenFlowEventListener listener);
 
     /**
      * Send a message to a particular switch.
      * @param dpid the switch to send to.
      * @param msg the message to send
      */
-    public void write(Dpid dpid, OFMessage msg);
+    void write(Dpid dpid, OFMessage msg);
 
     /**
      * Process a message and notify the appropriate listeners.
@@ -119,12 +119,12 @@
      * @param dpid the dpid the message arrived on
      * @param msg the message to process.
      */
-    public void processPacket(Dpid dpid, OFMessage msg);
+    void processPacket(Dpid dpid, OFMessage msg);
 
     /**
      * Sets the role for a given switch.
      * @param role the desired role
      * @param dpid the switch to set the role for.
      */
-    public void setRole(Dpid dpid, RoleState role);
+    void setRole(Dpid dpid, RoleState role);
 }
