diff --git a/src/main/java/net/onrc/onos/apps/bgproute/BgpRouteWebRoutable.java b/src/main/java/net/onrc/onos/apps/bgproute/BgpRouteWebRoutable.java
deleted file mode 100644
index 664bad4..0000000
--- a/src/main/java/net/onrc/onos/apps/bgproute/BgpRouteWebRoutable.java
+++ /dev/null
@@ -1,28 +0,0 @@
-package net.onrc.onos.apps.bgproute;
-
-import net.floodlightcontroller.restserver.RestletRoutable;
-
-import org.restlet.Context;
-import org.restlet.Restlet;
-import org.restlet.routing.Router;
-
-/**
- * REST URL router for SDN-IP REST calls.
- */
-public class BgpRouteWebRoutable implements RestletRoutable {
-    @Override
-    public Restlet getRestlet(Context context) {
-        Router router = new Router(context);
-        router.attach("/json", BgpRouteResource.class);
-        router.attach("/rib/{dest}", BgpRouteResource.class);
-        router.attach("/{sysuptime}/{sequence}/{routerid}/{prefix}/{mask}/{nexthop}", BgpRouteResource.class);
-        router.attach("/{routerid}/{prefix}/{mask}/{nexthop}/synch", BgpRouteResourceSynch.class);
-        router.attach("/{routerid}/{capability}", BgpRouteResource.class);
-        return router;
-    }
-
-    @Override
-    public String basePath() {
-        return "/wm/bgp";
-    }
-}
diff --git a/src/main/java/net/onrc/onos/apps/proxyarp/ProxyArpManager.java b/src/main/java/net/onrc/onos/apps/proxyarp/ProxyArpManager.java
index 76243e9..6b84e45 100644
--- a/src/main/java/net/onrc/onos/apps/proxyarp/ProxyArpManager.java
+++ b/src/main/java/net/onrc/onos/apps/proxyarp/ProxyArpManager.java
@@ -22,7 +22,7 @@
 import net.floodlightcontroller.core.module.IFloodlightService;
 import net.floodlightcontroller.restserver.IRestApiService;
 import net.floodlightcontroller.util.MACAddress;
-import net.onrc.onos.apps.bgproute.Interface;
+import net.onrc.onos.apps.sdnip.Interface;
 import net.onrc.onos.core.datagrid.IDatagridService;
 import net.onrc.onos.core.datagrid.IEventChannel;
 import net.onrc.onos.core.datagrid.IEventChannelListener;
diff --git a/src/main/java/net/onrc/onos/apps/bgproute/BgpPeer.java b/src/main/java/net/onrc/onos/apps/sdnip/BgpPeer.java
similarity index 96%
rename from src/main/java/net/onrc/onos/apps/bgproute/BgpPeer.java
rename to src/main/java/net/onrc/onos/apps/sdnip/BgpPeer.java
index a535316..9c93d9e 100644
--- a/src/main/java/net/onrc/onos/apps/bgproute/BgpPeer.java
+++ b/src/main/java/net/onrc/onos/apps/sdnip/BgpPeer.java
@@ -1,4 +1,4 @@
-package net.onrc.onos.apps.bgproute;
+package net.onrc.onos.apps.sdnip;
 
 import java.net.InetAddress;
 
diff --git a/src/main/java/net/onrc/onos/apps/bgproute/Configuration.java b/src/main/java/net/onrc/onos/apps/sdnip/Configuration.java
similarity index 98%
rename from src/main/java/net/onrc/onos/apps/bgproute/Configuration.java
rename to src/main/java/net/onrc/onos/apps/sdnip/Configuration.java
index ce97f50..28f195c 100644
--- a/src/main/java/net/onrc/onos/apps/bgproute/Configuration.java
+++ b/src/main/java/net/onrc/onos/apps/sdnip/Configuration.java
@@ -1,4 +1,4 @@
-package net.onrc.onos.apps.bgproute;
+package net.onrc.onos.apps.sdnip;
 
 import java.util.Collections;
 import java.util.List;
diff --git a/src/main/java/net/onrc/onos/apps/bgproute/FlowCache.java b/src/main/java/net/onrc/onos/apps/sdnip/FlowCache.java
similarity index 98%
rename from src/main/java/net/onrc/onos/apps/bgproute/FlowCache.java
rename to src/main/java/net/onrc/onos/apps/sdnip/FlowCache.java
index d5aff78..8c518d7 100644
--- a/src/main/java/net/onrc/onos/apps/bgproute/FlowCache.java
+++ b/src/main/java/net/onrc/onos/apps/sdnip/FlowCache.java
@@ -1,4 +1,4 @@
-package net.onrc.onos.apps.bgproute;
+package net.onrc.onos.apps.sdnip;
 
 import java.io.IOException;
 import java.util.ArrayList;
diff --git a/src/main/java/net/onrc/onos/apps/bgproute/IPatriciaTree.java b/src/main/java/net/onrc/onos/apps/sdnip/IPatriciaTree.java
similarity index 98%
rename from src/main/java/net/onrc/onos/apps/bgproute/IPatriciaTree.java
rename to src/main/java/net/onrc/onos/apps/sdnip/IPatriciaTree.java
index 1ef9eae..fa548b2 100644
--- a/src/main/java/net/onrc/onos/apps/bgproute/IPatriciaTree.java
+++ b/src/main/java/net/onrc/onos/apps/sdnip/IPatriciaTree.java
@@ -1,4 +1,4 @@
-package net.onrc.onos.apps.bgproute;
+package net.onrc.onos.apps.sdnip;
 
 import java.util.Iterator;
 
diff --git a/src/main/java/net/onrc/onos/apps/bgproute/IBgpRouteService.java b/src/main/java/net/onrc/onos/apps/sdnip/ISdnIpService.java
similarity index 87%
rename from src/main/java/net/onrc/onos/apps/bgproute/IBgpRouteService.java
rename to src/main/java/net/onrc/onos/apps/sdnip/ISdnIpService.java
index effc81b..040afe6 100644
--- a/src/main/java/net/onrc/onos/apps/bgproute/IBgpRouteService.java
+++ b/src/main/java/net/onrc/onos/apps/sdnip/ISdnIpService.java
@@ -1,4 +1,4 @@
-package net.onrc.onos.apps.bgproute;
+package net.onrc.onos.apps.sdnip;
 
 import net.floodlightcontroller.core.module.IFloodlightService;
 
@@ -6,7 +6,7 @@
  * The API exported by the main SDN-IP class. This is the interface between the
  * REST handlers and the SDN-IP module.
  */
-public interface IBgpRouteService extends IFloodlightService {
+public interface ISdnIpService extends IFloodlightService {
 
     /**
      * Gets a reference to SDN-IP's PATRICIA tree which stores the route table.
@@ -39,7 +39,7 @@
     public void clearPtree();
 
     /**
-     * Pass a RIB update to the {@link IBgpRouteService}.
+     * Pass a RIB update to the {@link ISdnIpService}.
      *
      * @param update a {@link RibUpdate} object containing details of the
      * update
diff --git a/src/main/java/net/onrc/onos/apps/bgproute/Interface.java b/src/main/java/net/onrc/onos/apps/sdnip/Interface.java
similarity index 98%
rename from src/main/java/net/onrc/onos/apps/bgproute/Interface.java
rename to src/main/java/net/onrc/onos/apps/sdnip/Interface.java
index 4316bc0..15abb1f 100644
--- a/src/main/java/net/onrc/onos/apps/bgproute/Interface.java
+++ b/src/main/java/net/onrc/onos/apps/sdnip/Interface.java
@@ -1,4 +1,4 @@
-package net.onrc.onos.apps.bgproute;
+package net.onrc.onos.apps.sdnip;
 
 import java.net.InetAddress;
 
diff --git a/src/main/java/net/onrc/onos/apps/bgproute/Path.java b/src/main/java/net/onrc/onos/apps/sdnip/Path.java
similarity index 98%
rename from src/main/java/net/onrc/onos/apps/bgproute/Path.java
rename to src/main/java/net/onrc/onos/apps/sdnip/Path.java
index c6f3539..7772775 100644
--- a/src/main/java/net/onrc/onos/apps/bgproute/Path.java
+++ b/src/main/java/net/onrc/onos/apps/sdnip/Path.java
@@ -1,4 +1,4 @@
-package net.onrc.onos.apps.bgproute;
+package net.onrc.onos.apps.sdnip;
 
 import java.net.InetAddress;
 import java.util.Collections;
diff --git a/src/main/java/net/onrc/onos/apps/bgproute/PatriciaTree.java b/src/main/java/net/onrc/onos/apps/sdnip/PatriciaTree.java
similarity index 99%
rename from src/main/java/net/onrc/onos/apps/bgproute/PatriciaTree.java
rename to src/main/java/net/onrc/onos/apps/sdnip/PatriciaTree.java
index 3a6a46c..844ba35 100644
--- a/src/main/java/net/onrc/onos/apps/bgproute/PatriciaTree.java
+++ b/src/main/java/net/onrc/onos/apps/sdnip/PatriciaTree.java
@@ -1,4 +1,4 @@
-package net.onrc.onos.apps.bgproute;
+package net.onrc.onos.apps.sdnip;
 
 import java.util.Iterator;
 import java.util.NoSuchElementException;
diff --git a/src/main/java/net/onrc/onos/apps/bgproute/Prefix.java b/src/main/java/net/onrc/onos/apps/sdnip/Prefix.java
similarity index 99%
rename from src/main/java/net/onrc/onos/apps/bgproute/Prefix.java
rename to src/main/java/net/onrc/onos/apps/sdnip/Prefix.java
index 834ea29..91510b1 100644
--- a/src/main/java/net/onrc/onos/apps/bgproute/Prefix.java
+++ b/src/main/java/net/onrc/onos/apps/sdnip/Prefix.java
@@ -1,4 +1,4 @@
-package net.onrc.onos.apps.bgproute;
+package net.onrc.onos.apps.sdnip;
 
 import java.net.InetAddress;
 import java.net.UnknownHostException;
diff --git a/src/main/java/net/onrc/onos/apps/bgproute/Ptree.java b/src/main/java/net/onrc/onos/apps/sdnip/Ptree.java
similarity index 99%
rename from src/main/java/net/onrc/onos/apps/bgproute/Ptree.java
rename to src/main/java/net/onrc/onos/apps/sdnip/Ptree.java
index 0f7d4a0..c99ea09 100644
--- a/src/main/java/net/onrc/onos/apps/bgproute/Ptree.java
+++ b/src/main/java/net/onrc/onos/apps/sdnip/Ptree.java
@@ -1,4 +1,4 @@
-package net.onrc.onos.apps.bgproute;
+package net.onrc.onos.apps.sdnip;
 
 /*
  * TODO This Ptree needs to be refactored if we're going to use it permenantly.
diff --git a/src/main/java/net/onrc/onos/apps/bgproute/PtreeNode.java b/src/main/java/net/onrc/onos/apps/sdnip/PtreeNode.java
similarity index 96%
rename from src/main/java/net/onrc/onos/apps/bgproute/PtreeNode.java
rename to src/main/java/net/onrc/onos/apps/sdnip/PtreeNode.java
index 76c37d9..b54546c 100644
--- a/src/main/java/net/onrc/onos/apps/bgproute/PtreeNode.java
+++ b/src/main/java/net/onrc/onos/apps/sdnip/PtreeNode.java
@@ -1,4 +1,4 @@
-package net.onrc.onos.apps.bgproute;
+package net.onrc.onos.apps.sdnip;
 
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
diff --git a/src/main/java/net/onrc/onos/apps/bgproute/PushedFlowMod.java b/src/main/java/net/onrc/onos/apps/sdnip/PushedFlowMod.java
similarity index 96%
rename from src/main/java/net/onrc/onos/apps/bgproute/PushedFlowMod.java
rename to src/main/java/net/onrc/onos/apps/sdnip/PushedFlowMod.java
index 137c22f..38ac37f 100644
--- a/src/main/java/net/onrc/onos/apps/bgproute/PushedFlowMod.java
+++ b/src/main/java/net/onrc/onos/apps/sdnip/PushedFlowMod.java
@@ -1,4 +1,4 @@
-package net.onrc.onos.apps.bgproute;
+package net.onrc.onos.apps.sdnip;
 
 import org.openflow.protocol.OFFlowMod;
 
diff --git a/src/main/java/net/onrc/onos/apps/bgproute/RestClient.java b/src/main/java/net/onrc/onos/apps/sdnip/RestClient.java
similarity index 98%
rename from src/main/java/net/onrc/onos/apps/bgproute/RestClient.java
rename to src/main/java/net/onrc/onos/apps/sdnip/RestClient.java
index c7ff195..fe349d5 100644
--- a/src/main/java/net/onrc/onos/apps/bgproute/RestClient.java
+++ b/src/main/java/net/onrc/onos/apps/sdnip/RestClient.java
@@ -1,4 +1,4 @@
-package net.onrc.onos.apps.bgproute;
+package net.onrc.onos.apps.sdnip;
 
 import java.io.BufferedReader;
 import java.io.IOException;
diff --git a/src/main/java/net/onrc/onos/apps/bgproute/RibEntry.java b/src/main/java/net/onrc/onos/apps/sdnip/RibEntry.java
similarity index 98%
rename from src/main/java/net/onrc/onos/apps/bgproute/RibEntry.java
rename to src/main/java/net/onrc/onos/apps/sdnip/RibEntry.java
index 2392e01..47eca6b 100644
--- a/src/main/java/net/onrc/onos/apps/bgproute/RibEntry.java
+++ b/src/main/java/net/onrc/onos/apps/sdnip/RibEntry.java
@@ -1,4 +1,4 @@
-package net.onrc.onos.apps.bgproute;
+package net.onrc.onos.apps.sdnip;
 
 import java.net.InetAddress;
 
diff --git a/src/main/java/net/onrc/onos/apps/bgproute/RibUpdate.java b/src/main/java/net/onrc/onos/apps/sdnip/RibUpdate.java
similarity index 97%
rename from src/main/java/net/onrc/onos/apps/bgproute/RibUpdate.java
rename to src/main/java/net/onrc/onos/apps/sdnip/RibUpdate.java
index 3f74a08..0476979 100644
--- a/src/main/java/net/onrc/onos/apps/bgproute/RibUpdate.java
+++ b/src/main/java/net/onrc/onos/apps/sdnip/RibUpdate.java
@@ -1,4 +1,4 @@
-package net.onrc.onos.apps.bgproute;
+package net.onrc.onos.apps.sdnip;
 
 /**
  * Represents a route update received from BGPd. An update has an operation
diff --git a/src/main/java/net/onrc/onos/apps/bgproute/BgpRoute.java b/src/main/java/net/onrc/onos/apps/sdnip/SdnIp.java
similarity index 98%
rename from src/main/java/net/onrc/onos/apps/bgproute/BgpRoute.java
rename to src/main/java/net/onrc/onos/apps/sdnip/SdnIp.java
index ed70ae4..4e4e6fa 100644
--- a/src/main/java/net/onrc/onos/apps/bgproute/BgpRoute.java
+++ b/src/main/java/net/onrc/onos/apps/sdnip/SdnIp.java
@@ -1,4 +1,4 @@
-package net.onrc.onos.apps.bgproute;
+package net.onrc.onos.apps.sdnip;
 
 import java.io.File;
 import java.io.IOException;
@@ -26,9 +26,10 @@
 import net.floodlightcontroller.core.util.SingletonTask;
 import net.floodlightcontroller.restserver.IRestApiService;
 import net.floodlightcontroller.util.MACAddress;
-import net.onrc.onos.apps.bgproute.RibUpdate.Operation;
 import net.onrc.onos.apps.proxyarp.IArpRequester;
 import net.onrc.onos.apps.proxyarp.IProxyArpService;
+import net.onrc.onos.apps.sdnip.RibUpdate.Operation;
+import net.onrc.onos.apps.sdnip.web.SdnIpWebRoutable;
 import net.onrc.onos.core.linkdiscovery.ILinkDiscovery.LDUpdate;
 import net.onrc.onos.core.linkdiscovery.ILinkDiscoveryService;
 import net.onrc.onos.core.main.config.IConfigInfoService;
@@ -73,11 +74,11 @@
 import com.google.common.net.InetAddresses;
 import com.google.common.util.concurrent.ThreadFactoryBuilder;
 
-public class BgpRoute implements IFloodlightModule, IBgpRouteService,
+public class SdnIp implements IFloodlightModule, ISdnIpService,
         IArpRequester,
         IOFSwitchListener, IConfigInfoService {
 
-    private static final Logger log = LoggerFactory.getLogger(BgpRoute.class);
+    private static final Logger log = LoggerFactory.getLogger(SdnIp.class);
 
     private IFloodlightProviderService floodlightProvider;
     private ILinkDiscoveryService linkDiscoveryService;
@@ -233,7 +234,7 @@
     public Collection<Class<? extends IFloodlightService>> getModuleServices() {
         Collection<Class<? extends IFloodlightService>> l
                 = new ArrayList<Class<? extends IFloodlightService>>();
-        l.add(IBgpRouteService.class);
+        l.add(ISdnIpService.class);
         l.add(IConfigInfoService.class);
         return l;
     }
@@ -242,7 +243,7 @@
     public Map<Class<? extends IFloodlightService>, IFloodlightService> getServiceImpls() {
         Map<Class<? extends IFloodlightService>, IFloodlightService> m
                 = new HashMap<Class<? extends IFloodlightService>, IFloodlightService>();
-        m.put(IBgpRouteService.class, this);
+        m.put(ISdnIpService.class, this);
         m.put(IConfigInfoService.class, this);
         return m;
     }
@@ -319,7 +320,7 @@
 
     @Override
     public void startUp(FloodlightModuleContext context) {
-        restApi.addRestletRoutable(new BgpRouteWebRoutable());
+        restApi.addRestletRoutable(new SdnIpWebRoutable());
         floodlightProvider.addOFSwitchListener(this);
 
         // Retrieve the RIB from BGPd during startup
@@ -1354,7 +1355,7 @@
 
     @Override
     public String getName() {
-        return "BgpRoute";
+        return "SdnIp";
     }
 
     /*
diff --git a/src/main/java/net/onrc/onos/apps/bgproute/BgpRouteResource.java b/src/main/java/net/onrc/onos/apps/sdnip/web/IncomingRequestResource.java
similarity index 85%
rename from src/main/java/net/onrc/onos/apps/bgproute/BgpRouteResource.java
rename to src/main/java/net/onrc/onos/apps/sdnip/web/IncomingRequestResource.java
index 1b20449..705c5f1 100644
--- a/src/main/java/net/onrc/onos/apps/bgproute/BgpRouteResource.java
+++ b/src/main/java/net/onrc/onos/apps/sdnip/web/IncomingRequestResource.java
@@ -1,8 +1,14 @@
-package net.onrc.onos.apps.bgproute;
+package net.onrc.onos.apps.sdnip.web;
 
 import java.util.Iterator;
 
-import net.onrc.onos.apps.bgproute.RibUpdate.Operation;
+import net.onrc.onos.apps.sdnip.ISdnIpService;
+import net.onrc.onos.apps.sdnip.IPatriciaTree;
+import net.onrc.onos.apps.sdnip.Prefix;
+import net.onrc.onos.apps.sdnip.RestClient;
+import net.onrc.onos.apps.sdnip.RibEntry;
+import net.onrc.onos.apps.sdnip.RibUpdate;
+import net.onrc.onos.apps.sdnip.RibUpdate.Operation;
 
 import org.restlet.resource.Delete;
 import org.restlet.resource.Get;
@@ -15,8 +21,8 @@
  * REST resource that handles REST calls from BGPd. This is the interface BGPd
  * uses to push RIB entries (routes) to SDN-IP.
  */
-public class BgpRouteResource extends ServerResource {
-    private static final Logger log = LoggerFactory.getLogger(BgpRouteResource.class);
+public class IncomingRequestResource extends ServerResource {
+    private static final Logger log = LoggerFactory.getLogger(IncomingRequestResource.class);
 
     /**
      * Gets the contents of SDN-IP's route table.
@@ -27,12 +33,12 @@
     public String handleGetMethod() {
         String dest = (String) getRequestAttributes().get("dest");
         StringBuilder output = new StringBuilder(80);
-        IBgpRouteService bgpRoute = (IBgpRouteService) getContext()
+        ISdnIpService sdnIp = (ISdnIpService) getContext()
                 .getAttributes().
-                get(IBgpRouteService.class.getCanonicalName());
+                get(ISdnIpService.class.getCanonicalName());
 
         if (dest == null) {
-            IPatriciaTree<RibEntry> ptree = bgpRoute.getPtree();
+            IPatriciaTree<RibEntry> ptree = sdnIp.getPtree();
             output.append("{\n  \"rib\": [\n");
             boolean printed = false;
 
@@ -61,7 +67,7 @@
 
             // the dest here refers to router-id
             // bgpdRestIp includes port number, such as 1.1.1.1:8080
-            String bgpdRestIp = bgpRoute.getBgpdRestIp();
+            String bgpdRestIp = sdnIp.getBgpdRestIp();
             String url = "http://" + bgpdRestIp + "/wm/bgp/" + dest;
 
             // Doesn't actually do anything with the response
@@ -81,9 +87,9 @@
      */
     @Post
     public String handlePostMethod() {
-        IBgpRouteService bgpRoute = (IBgpRouteService) getContext()
+        ISdnIpService sdnIp = (ISdnIpService) getContext()
                 .getAttributes().
-                get(IBgpRouteService.class.getCanonicalName());
+                get(ISdnIpService.class.getCanonicalName());
 
         String strSysuptime = (String) getRequestAttributes().get("sysuptime");
         String strSequence = (String) getRequestAttributes().get("sequence");
@@ -119,7 +125,7 @@
             RibEntry rib = new RibEntry(routerId, nexthop, sysUpTime,
                     sequenceNum);
 
-            bgpRoute.newRibUpdate(new RibUpdate(Operation.UPDATE, p, rib));
+            sdnIp.newRibUpdate(new RibUpdate(Operation.UPDATE, p, rib));
 
             reply = "[POST: " + prefix + "/" + mask + ":" + nexthop + "]";
             log.info(reply);
@@ -145,9 +151,9 @@
      */
     @Delete
     public String handleDeleteMethod() {
-        IBgpRouteService bgpRoute = (IBgpRouteService) getContext()
+        ISdnIpService sdnIp = (ISdnIpService) getContext()
                 .getAttributes().
-                get(IBgpRouteService.class.getCanonicalName());
+                get(ISdnIpService.class.getCanonicalName());
 
         String strSysuptime = (String) getRequestAttributes().get("sysuptime");
         String strSequence = (String) getRequestAttributes().get("sequence");
@@ -183,7 +189,7 @@
 
             RibEntry r = new RibEntry(routerId, nextHop, sysUpTime, sequenceNum);
 
-            bgpRoute.newRibUpdate(new RibUpdate(Operation.DELETE, p, r));
+            sdnIp.newRibUpdate(new RibUpdate(Operation.DELETE, p, r));
 
             replyStringBuilder.append("[DELE: ")
                 .append(prefix)
@@ -194,7 +200,7 @@
                 .append(']');
         } else {
             // clear the local rib: Ptree
-            bgpRoute.clearPtree();
+            sdnIp.clearPtree();
             replyStringBuilder.append("[DELE-capability: ")
                     .append(capability)
                     .append("; The local RibEntry is cleared!]\n");
diff --git a/src/main/java/net/onrc/onos/apps/bgproute/BgpRouteResourceSynch.java b/src/main/java/net/onrc/onos/apps/sdnip/web/OutgoingRequestResource.java
similarity index 78%
rename from src/main/java/net/onrc/onos/apps/bgproute/BgpRouteResourceSynch.java
rename to src/main/java/net/onrc/onos/apps/sdnip/web/OutgoingRequestResource.java
index 6c46b71..772bf7d 100644
--- a/src/main/java/net/onrc/onos/apps/bgproute/BgpRouteResourceSynch.java
+++ b/src/main/java/net/onrc/onos/apps/sdnip/web/OutgoingRequestResource.java
@@ -1,4 +1,7 @@
-package net.onrc.onos.apps.bgproute;
+package net.onrc.onos.apps.sdnip.web;
+
+import net.onrc.onos.apps.sdnip.ISdnIpService;
+import net.onrc.onos.apps.sdnip.RestClient;
 
 import org.restlet.resource.Delete;
 import org.restlet.resource.Post;
@@ -13,8 +16,8 @@
  * not intended to be used during general operation. It is to have a way to
  * influence BGPd's behavior for debugging.
  */
-public class BgpRouteResourceSynch extends ServerResource {
-    private static final Logger log = LoggerFactory.getLogger(BgpRouteResourceSynch.class);
+public class OutgoingRequestResource extends ServerResource {
+    private static final Logger log = LoggerFactory.getLogger(OutgoingRequestResource.class);
 
     /**
      * Handles a REST call to SDN-IP which gives a command to send a new route
@@ -25,15 +28,15 @@
     @Post
     public String handlePostMethod() {
 
-        IBgpRouteService bgpRoute = (IBgpRouteService) getContext().getAttributes().
-                get(IBgpRouteService.class.getCanonicalName());
+        ISdnIpService sdnIp = (ISdnIpService) getContext().getAttributes().
+                get(ISdnIpService.class.getCanonicalName());
 
         String routerId = (String) getRequestAttributes().get("routerid");
         String prefix = (String) getRequestAttributes().get("prefix");
         String mask = (String) getRequestAttributes().get("mask");
         String nexthop = (String) getRequestAttributes().get("nexthop");
 
-        String bgpdRestIp = bgpRoute.getBgpdRestIp();
+        String bgpdRestIp = sdnIp.getBgpdRestIp();
 
         // bgpdRestIp includes port number, e.g. 1.1.1.1:8080
         RestClient.post("http://" + bgpdRestIp + "/wm/bgp/" + routerId + "/" + prefix + "/"
@@ -55,8 +58,8 @@
      */
     @Delete
     public String handleDeleteMethod() {
-        IBgpRouteService bgpRoute = (IBgpRouteService) getContext().getAttributes().
-                get(IBgpRouteService.class.getCanonicalName());
+        ISdnIpService sdnIp = (ISdnIpService) getContext().getAttributes().
+                get(ISdnIpService.class.getCanonicalName());
 
         String routerId = (String) getRequestAttributes().get("routerid");
         String prefix = (String) getRequestAttributes().get("prefix");
@@ -65,7 +68,7 @@
 
         StringBuilder reply = new StringBuilder();
 
-        String bgpdRestIp = bgpRoute.getBgpdRestIp();
+        String bgpdRestIp = sdnIp.getBgpdRestIp();
 
         RestClient.delete("http://" + bgpdRestIp + "/wm/bgp/" + routerId + "/" + prefix + "/"
                 + mask + "/" + nextHop);
diff --git a/src/main/java/net/onrc/onos/apps/sdnip/web/SdnIpWebRoutable.java b/src/main/java/net/onrc/onos/apps/sdnip/web/SdnIpWebRoutable.java
new file mode 100644
index 0000000..8994f18
--- /dev/null
+++ b/src/main/java/net/onrc/onos/apps/sdnip/web/SdnIpWebRoutable.java
@@ -0,0 +1,28 @@
+package net.onrc.onos.apps.sdnip.web;
+
+import net.floodlightcontroller.restserver.RestletRoutable;
+
+import org.restlet.Context;
+import org.restlet.Restlet;
+import org.restlet.routing.Router;
+
+/**
+ * REST URL router for SDN-IP REST calls.
+ */
+public class SdnIpWebRoutable implements RestletRoutable {
+    @Override
+    public Restlet getRestlet(Context context) {
+        Router router = new Router(context);
+        router.attach("/json", IncomingRequestResource.class);
+        router.attach("/rib/{dest}", IncomingRequestResource.class);
+        router.attach("/{sysuptime}/{sequence}/{routerid}/{prefix}/{mask}/{nexthop}", IncomingRequestResource.class);
+        router.attach("/{routerid}/{prefix}/{mask}/{nexthop}/synch", OutgoingRequestResource.class);
+        router.attach("/{routerid}/{capability}", IncomingRequestResource.class);
+        return router;
+    }
+
+    @Override
+    public String basePath() {
+        return "/wm/bgp";
+    }
+}
diff --git a/src/main/java/net/onrc/onos/core/main/config/DefaultConfiguration.java b/src/main/java/net/onrc/onos/core/main/config/DefaultConfiguration.java
index 7f09e31..13b9b53 100644
--- a/src/main/java/net/onrc/onos/core/main/config/DefaultConfiguration.java
+++ b/src/main/java/net/onrc/onos/core/main/config/DefaultConfiguration.java
@@ -11,7 +11,7 @@
 import net.floodlightcontroller.core.module.IFloodlightModule;
 import net.floodlightcontroller.core.module.IFloodlightService;
 import net.floodlightcontroller.util.MACAddress;
-import net.onrc.onos.apps.bgproute.Interface;
+import net.onrc.onos.apps.sdnip.Interface;
 
 import org.openflow.util.HexString;
 
diff --git a/src/main/java/net/onrc/onos/core/main/config/IConfigInfoService.java b/src/main/java/net/onrc/onos/core/main/config/IConfigInfoService.java
index 5c94626..000a6a1 100644
--- a/src/main/java/net/onrc/onos/core/main/config/IConfigInfoService.java
+++ b/src/main/java/net/onrc/onos/core/main/config/IConfigInfoService.java
@@ -4,7 +4,7 @@
 
 import net.floodlightcontroller.core.module.IFloodlightService;
 import net.floodlightcontroller.util.MACAddress;
-import net.onrc.onos.apps.bgproute.Interface;
+import net.onrc.onos.apps.sdnip.Interface;
 
 /**
  * Provides information about the layer 3 properties of the network.
