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);
 }
diff --git a/openflow/api/src/main/java/org/onosproject/openflow/controller/OpenFlowEventListener.java b/openflow/api/src/main/java/org/onosproject/openflow/controller/OpenFlowEventListener.java
index 416a6e7..5deccf5 100644
--- a/openflow/api/src/main/java/org/onosproject/openflow/controller/OpenFlowEventListener.java
+++ b/openflow/api/src/main/java/org/onosproject/openflow/controller/OpenFlowEventListener.java
@@ -29,5 +29,5 @@
      * @param dpid switch data path identifier
      * @param msg the message
      */
-    public void handleMessage(Dpid dpid, OFMessage msg);
+    void handleMessage(Dpid dpid, OFMessage msg);
 }
diff --git a/openflow/api/src/main/java/org/onosproject/openflow/controller/OpenFlowPacketContext.java b/openflow/api/src/main/java/org/onosproject/openflow/controller/OpenFlowPacketContext.java
index dea2731..740d89d 100644
--- a/openflow/api/src/main/java/org/onosproject/openflow/controller/OpenFlowPacketContext.java
+++ b/openflow/api/src/main/java/org/onosproject/openflow/controller/OpenFlowPacketContext.java
@@ -31,56 +31,56 @@
      * packet in event.
      * @return true if blocks
      */
-    public boolean block();
+    boolean block();
 
     /**
      * Checks whether the packet has been handled.
      * @return true if handled, false otherwise.
      */
-    public boolean isHandled();
+    boolean isHandled();
 
     /**
      * Provided build has been called send the packet
      * out the switch it came in on.
      */
-    public void send();
+    void send();
 
     /**
      * Build the packet out in response to this packet in event.
      * @param outPort the out port to send to packet out of.
      */
-    public void build(OFPort outPort);
+    void build(OFPort outPort);
 
     /**
      * Build the packet out in response to this packet in event.
      * @param ethFrame the actual packet to send out.
      * @param outPort the out port to send to packet out of.
      */
-    public void build(Ethernet ethFrame, OFPort outPort);
+    void build(Ethernet ethFrame, OFPort outPort);
 
     /**
      * Provided a handle onto the parsed payload.
      * @return the parsed form of the payload.
      */
-    public Ethernet parsed();
+    Ethernet parsed();
 
     /**
      * Provide an unparsed copy of the data.
      * @return the unparsed form of the payload.
      */
-    public byte[] unparsed();
+    byte[] unparsed();
 
     /**
      * Provide the dpid of the switch where the packet in arrived.
      * @return the dpid of the switch.
      */
-    public Dpid dpid();
+    Dpid dpid();
 
     /**
      * Provide the port on which the packet arrived.
      * @return the port
      */
-    public Integer inPort();
+    Integer inPort();
 
     /**
      * Indicates that this packet is buffered at the switch.
diff --git a/openflow/api/src/main/java/org/onosproject/openflow/controller/OpenFlowSwitch.java b/openflow/api/src/main/java/org/onosproject/openflow/controller/OpenFlowSwitch.java
index 5a89543..49ca5a8 100644
--- a/openflow/api/src/main/java/org/onosproject/openflow/controller/OpenFlowSwitch.java
+++ b/openflow/api/src/main/java/org/onosproject/openflow/controller/OpenFlowSwitch.java
@@ -31,101 +31,101 @@
      *
      * @param msg the message to write
      */
-    public void sendMsg(OFMessage msg);
+    void sendMsg(OFMessage msg);
 
     /**
      * Writes the OFMessage list to the driver.
      *
      * @param msgs the messages to be written
      */
-    public void sendMsg(List<OFMessage> msgs);
+    void sendMsg(List<OFMessage> msgs);
 
     /**
      * Handle a message from the switch.
      * @param fromSwitch the message to handle
      */
-    public void handleMessage(OFMessage fromSwitch);
+    void handleMessage(OFMessage fromSwitch);
 
     /**
      * Sets the role for this switch.
      * @param role the role to set.
      */
-    public void setRole(RoleState role);
+    void setRole(RoleState role);
 
     /**
      * Fetch the role for this switch.
      * @return the role.
      */
-    public RoleState getRole();
+    RoleState getRole();
 
     /**
      * Fetches the ports of this switch.
      * @return unmodifiable list of the ports.
      */
-    public List<OFPortDesc> getPorts();
+    List<OFPortDesc> getPorts();
 
     /**
      * Provides the factory for this OF version.
      * @return OF version specific factory.
      */
-    public OFFactory factory();
+    OFFactory factory();
 
     /**
      * Gets a string version of the ID for this switch.
      *
      * @return string version of the ID
      */
-    public String getStringId();
+    String getStringId();
 
     /**
      * Gets the datapathId of the switch.
      *
      * @return the switch dpid in long format
      */
-    public long getId();
+    long getId();
 
     /**
      * fetch the manufacturer description.
      * @return the description
      */
-    public String manufacturerDescription();
+    String manufacturerDescription();
 
     /**
      * fetch the datapath description.
      * @return the description
      */
-    public String datapathDescription();
+    String datapathDescription();
 
     /**
      * fetch the hardware description.
      * @return the description
      */
-    public String hardwareDescription();
+    String hardwareDescription();
 
     /**
      * fetch the software description.
      * @return the description
      */
-    public String softwareDescription();
+    String softwareDescription();
 
     /**
      * fetch the serial number.
      * @return the serial
      */
-    public String serialNumber();
+    String serialNumber();
 
     /**
      * Checks if the switch is still connected.
      *
      * @return whether the switch is still connected
      */
-    public boolean isConnected();
+    boolean isConnected();
 
     /**
      * Disconnects the switch by closing the TCP connection. Results in a call
      * to the channel handler's channelDisconnected method for cleanup
      */
-    public void disconnectSwitch();
+    void disconnectSwitch();
 
     /**
      * Notifies the controller that the device has responded to a set-role request.
@@ -133,19 +133,19 @@
      * @param requested the role requested by the controller
      * @param response the role set at the device
      */
-    public void returnRoleReply(RoleState requested, RoleState response);
+    void returnRoleReply(RoleState requested, RoleState response);
 
     /**
      * Indicates if this switch is optical.
      *
      * @return true if optical
      */
-    public boolean isOptical();
+    boolean isOptical();
 
     /**
      * Identifies the channel used to communicate with the switch.
      *
      * @return string representation of the connection to the device
      */
-    public String channelId();
+    String channelId();
 }
diff --git a/openflow/api/src/main/java/org/onosproject/openflow/controller/OpenFlowSwitchListener.java b/openflow/api/src/main/java/org/onosproject/openflow/controller/OpenFlowSwitchListener.java
index 248e2fc..2da4133 100644
--- a/openflow/api/src/main/java/org/onosproject/openflow/controller/OpenFlowSwitchListener.java
+++ b/openflow/api/src/main/java/org/onosproject/openflow/controller/OpenFlowSwitchListener.java
@@ -26,26 +26,26 @@
      * Notify that the switch was added.
      * @param dpid the switch where the event occurred
      */
-    public void switchAdded(Dpid dpid);
+    void switchAdded(Dpid dpid);
 
     /**
      * Notify that the switch was removed.
      * @param dpid the switch where the event occurred.
      */
-    public void switchRemoved(Dpid dpid);
+    void switchRemoved(Dpid dpid);
 
     /**
      * Notify that the switch has changed in some way.
      * @param dpid the switch that changed
      */
-    public void switchChanged(Dpid dpid);
+    void switchChanged(Dpid dpid);
 
     /**
      * Notify that a port has changed.
      * @param dpid the switch on which the change happened.
      * @param status the new state of the port.
      */
-    public void portChanged(Dpid dpid, OFPortStatus status);
+    void portChanged(Dpid dpid, OFPortStatus status);
 
     /**
      * Notify that a role imposed on a switch failed to take hold.
@@ -54,5 +54,5 @@
      * @param requested the role controller requested
      * @param response role reply from the switch
      */
-    public void receivedRoleReply(Dpid dpid, RoleState requested, RoleState response);
+    void receivedRoleReply(Dpid dpid, RoleState requested, RoleState response);
 }
diff --git a/openflow/api/src/main/java/org/onosproject/openflow/controller/PacketListener.java b/openflow/api/src/main/java/org/onosproject/openflow/controller/PacketListener.java
index 3570a1e..817a6cd 100644
--- a/openflow/api/src/main/java/org/onosproject/openflow/controller/PacketListener.java
+++ b/openflow/api/src/main/java/org/onosproject/openflow/controller/PacketListener.java
@@ -25,5 +25,5 @@
      *
      * @param pktCtx the packet context
      */
-    public void handlePacket(OpenFlowPacketContext pktCtx);
+    void handlePacket(OpenFlowPacketContext pktCtx);
 }
