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();
 }
