diff --git a/src/main/java/net/onrc/onos/apps/bgproute/BgpRoute.java b/src/main/java/net/onrc/onos/apps/bgproute/BgpRoute.java
index eaee714..b1100ee 100644
--- a/src/main/java/net/onrc/onos/apps/bgproute/BgpRoute.java
+++ b/src/main/java/net/onrc/onos/apps/bgproute/BgpRoute.java
@@ -1156,7 +1156,7 @@
 
         //Suppress link discovery on external-facing router ports
         for (Interface intf : interfaces.values()) {
-            linkDiscoveryService.AddToSuppressLLDPs(intf.getDpid(), intf.getPort());
+            linkDiscoveryService.addToSuppressLLDPs(intf.getDpid(), intf.getPort());
         }
 
         bgpUpdatesExecutor.execute(new Runnable() {
diff --git a/src/main/java/net/onrc/onos/core/linkdiscovery/ILinkDiscoveryService.java b/src/main/java/net/onrc/onos/core/linkdiscovery/ILinkDiscoveryService.java
index dce8be0..14e78d8 100644
--- a/src/main/java/net/onrc/onos/core/linkdiscovery/ILinkDiscoveryService.java
+++ b/src/main/java/net/onrc/onos/core/linkdiscovery/ILinkDiscoveryService.java
@@ -59,12 +59,12 @@
     /**
      * Adds a switch port to suppress lldp set
      */
-    public void AddToSuppressLLDPs(long sw, short port);
+    public void addToSuppressLLDPs(long sw, short port);
 
     /**
      * Removes a switch port from suppress lldp set
      */
-    public void RemoveFromSuppressLLDPs(long sw, short port);
+    public void removeFromSuppressLLDPs(long sw, short port);
 
     /**
      * Get the set of quarantined ports on a switch
diff --git a/src/main/java/net/onrc/onos/core/linkdiscovery/internal/LinkDiscoveryManager.java b/src/main/java/net/onrc/onos/core/linkdiscovery/internal/LinkDiscoveryManager.java
index 2267d06..4cb8bc7 100644
--- a/src/main/java/net/onrc/onos/core/linkdiscovery/internal/LinkDiscoveryManager.java
+++ b/src/main/java/net/onrc/onos/core/linkdiscovery/internal/LinkDiscoveryManager.java
@@ -296,7 +296,7 @@
      * Remove any known links on the switch port.
      */
     @Override
-    public void AddToSuppressLLDPs(long sw, short port) {
+    public void addToSuppressLLDPs(long sw, short port) {
         NodePortTuple npt = new NodePortTuple(sw, port);
         this.suppressLinkDiscovery.add(npt);
         deleteLinksOnPort(npt, "LLDP suppressed.");
@@ -307,7 +307,7 @@
      * Discover links on that switchport.
      */
     @Override
-    public void RemoveFromSuppressLLDPs(long sw, short port) {
+    public void removeFromSuppressLLDPs(long sw, short port) {
         NodePortTuple npt = new NodePortTuple(sw, port);
         this.suppressLinkDiscovery.remove(npt);
         discover(npt);
diff --git a/src/main/java/net/onrc/onos/core/topology/NetworkGraphPublisher.java b/src/main/java/net/onrc/onos/core/topology/NetworkGraphPublisher.java
index bc72e00..e00e3c9 100644
--- a/src/main/java/net/onrc/onos/core/topology/NetworkGraphPublisher.java
+++ b/src/main/java/net/onrc/onos/core/topology/NetworkGraphPublisher.java
@@ -157,7 +157,7 @@
     public void switchPortAdded(Long switchId, OFPhysicalPort port) {
         PortEvent portEvent = new PortEvent(switchId, (long) port.getPortNumber());
         networkGraphDiscoveryInterface.putPortDiscoveryEvent(portEvent);
-        linkDiscovery.RemoveFromSuppressLLDPs(switchId, port.getPortNumber());
+        linkDiscovery.removeFromSuppressLLDPs(switchId, port.getPortNumber());
     }
 
     @Override
@@ -185,7 +185,7 @@
         for (OFPhysicalPort port : sw.getPorts()) {
             // Allow links to be discovered on this port now that it's
             // in the database
-            linkDiscovery.RemoveFromSuppressLLDPs(sw.getId(), port.getPortNumber());
+            linkDiscovery.removeFromSuppressLLDPs(sw.getId(), port.getPortNumber());
         }
     }
 
