diff --git a/src/main/java/net/floodlightcontroller/core/FloodlightProvider.java b/src/main/java/net/floodlightcontroller/core/FloodlightProvider.java
index cd15927..e20727a 100644
--- a/src/main/java/net/floodlightcontroller/core/FloodlightProvider.java
+++ b/src/main/java/net/floodlightcontroller/core/FloodlightProvider.java
@@ -10,13 +10,13 @@
 import net.floodlightcontroller.core.module.FloodlightModuleException;
 import net.floodlightcontroller.core.module.IFloodlightModule;
 import net.floodlightcontroller.core.module.IFloodlightService;
-import net.floodlightcontroller.core.INetMapTopologyService.ITopoRouteService;
 import net.floodlightcontroller.counter.ICounterStoreService;
 import net.floodlightcontroller.flowcache.IFlowService;
 import net.floodlightcontroller.perfmon.IPktInProcessingTimeService;
 import net.floodlightcontroller.restserver.IRestApiService;
 import net.floodlightcontroller.storage.IStorageSourceService;
 import net.floodlightcontroller.threadpool.IThreadPoolService;
+import net.onrc.onos.ofcontroller.core.INetMapTopologyService.ITopoRouteService;
 import net.onrc.onos.registry.controller.IControllerRegistryService;
 
 public class FloodlightProvider implements IFloodlightModule {
diff --git a/src/main/java/net/floodlightcontroller/core/INetMapService.java b/src/main/java/net/floodlightcontroller/core/INetMapService.java
deleted file mode 100644
index fcc542a..0000000
--- a/src/main/java/net/floodlightcontroller/core/INetMapService.java
+++ /dev/null
@@ -1,5 +0,0 @@
-package net.floodlightcontroller.core;
-
-public interface INetMapService {
-
-}
diff --git a/src/main/java/net/floodlightcontroller/core/INetMapStorage.java b/src/main/java/net/floodlightcontroller/core/INetMapStorage.java
deleted file mode 100644
index 67c6631..0000000
--- a/src/main/java/net/floodlightcontroller/core/INetMapStorage.java
+++ /dev/null
@@ -1,19 +0,0 @@
-/**
- * 
- */
-package net.floodlightcontroller.core;
-
-/**
- * @author pankaj
- *
- */
-public interface INetMapStorage {
-	enum DM_OPERATION {
-		CREATE, // Create the object type if does not exist and insert the object
-		INSERT, // Insert the object if it does not exist
-		DELETE, // Delete the object
-		UPDATE  // Update the object if exists or CREATE/INSERT if does not exist
-	}
-	public void init(String conf);
-	public void close();
-}
diff --git a/src/main/java/net/floodlightcontroller/core/INetMapTopologyObjects.java b/src/main/java/net/floodlightcontroller/core/INetMapTopologyObjects.java
deleted file mode 100644
index 3d5b907..0000000
--- a/src/main/java/net/floodlightcontroller/core/INetMapTopologyObjects.java
+++ /dev/null
@@ -1,389 +0,0 @@
-package net.floodlightcontroller.core;
-
-import net.floodlightcontroller.core.INetMapTopologyObjects.IPortObject;
-import net.floodlightcontroller.flowcache.web.DatapathSummarySerializer;
-
-import org.codehaus.jackson.annotate.JsonIgnore;
-import org.codehaus.jackson.annotate.JsonProperty;
-import org.codehaus.jackson.map.annotate.JsonSerialize;
-
-import com.tinkerpop.blueprints.Direction;
-import com.tinkerpop.frames.Adjacency;
-import com.tinkerpop.frames.Incidence;
-import com.tinkerpop.frames.Property;
-import com.tinkerpop.frames.annotations.gremlin.GremlinGroovy;
-import com.tinkerpop.frames.annotations.gremlin.GremlinParam;
-import com.tinkerpop.frames.VertexFrame;
-
-public interface INetMapTopologyObjects {
-	
-public interface IBaseObject extends VertexFrame {
-	
-	@JsonProperty("state")
-	@Property("state")
-	public String getState();
-	
-	@Property("state")
-	public void setState(final String state);
-	
-	@JsonIgnore
-	@Property("type")
-	public String getType();
-	@Property("type")
-	public void setType(final String type);
-	
-}
-	
-public interface ISwitchObject extends IBaseObject{
-		
-		@JsonProperty("dpid")
-		@Property("dpid")
-		public String getDPID();
-		
-		@Property("dpid")
-		public void setDPID(String dpid);
-				
-		@JsonProperty("ports")
-		@Adjacency(label="on")
-		public Iterable<IPortObject> getPorts();
-
-// Requires Frames 2.3.0		
-		@JsonIgnore
-		@GremlinGroovy("_().out('on').has('number',port_num)")
-		public IPortObject getPort(@GremlinParam("port_num") final short port_num);
-		
-		@Adjacency(label="on")
-		public void addPort(final IPortObject port);
-		
-		@Adjacency(label="on")
-		public void removePort(final IPortObject port);
-		
-		@JsonIgnore
-		@GremlinGroovy("_().out('on').out('host')")
-		public Iterable<IDeviceObject> getDevices();
-		
-		@JsonIgnore
-		@Incidence(label="switch",direction = Direction.IN)
-		public Iterable<IFlowEntry> getFlowEntries();
-
-	}
-	
-	public interface IPortObject extends IBaseObject{
-				
-		@JsonProperty("number")
-		@Property("number")
-		public Short getNumber();
-		
-		@Property("number")
-		public void setNumber(Short n);
-		
-		@JsonProperty("desc")
-		@Property("desc")
-		public String getDesc();
-		
-		@Property("desc")
-		public void setDesc(String s);
-		
-		@JsonIgnore
-		@Property("port_state")
-		public Integer getPortState();
-		
-		@Property("port_state")
-		public void setPortState(Integer s);
-		
-		@JsonIgnore
-		@Incidence(label="on",direction = Direction.IN)
-		public ISwitchObject getSwitch();
-				
-		@JsonProperty("devices")
-		@Adjacency(label="host")
-		public Iterable<IDeviceObject> getDevices();
-		
-		@Adjacency(label="host")
-		public void setDevice(final IDeviceObject device);
-		
-		@Adjacency(label="host")
-		public void removeDevice(final IDeviceObject device);
-		
-		@JsonIgnore
-		@Incidence(label="inport",direction = Direction.IN)
-		public Iterable<IFlowEntry> getInFlowEntries();
-		
-		@JsonIgnore
-		@Incidence(label="outport",direction = Direction.IN)
-		public Iterable<IFlowEntry> getOutFlowEntries();
-		
-		@JsonIgnore
-		@Adjacency(label="link")
-		public Iterable<IPortObject> getLinkedPorts();
-		
-		@Adjacency(label="link")
-		public void removeLink(final IPortObject dest_port);
-		
-		@Adjacency(label="link")
-		public void setLinkPort(final IPortObject dest_port);			
-		
-//		@JsonIgnore
-//		@Adjacency(label="link")
-//		public Iterable<ILinkObject> getLinks();
-	}
-	
-	public interface IDeviceObject extends IBaseObject {
-		
-		@JsonProperty("mac")
-		@Property("dl_addr")
-		public String getMACAddress();
-		@Property("dl_addr")
-		public void setMACAddress(String macaddr);
-		
-		@JsonProperty("ipv4")
-		@Property("nw_addr")
-		public String getIPAddress();
-		@Property("dl_addr")
-		public void setIPAddress(String ipaddr);
-		
-		@JsonIgnore
-		@Incidence(label="host",direction = Direction.IN)
-		public Iterable<IPortObject> getAttachedPorts();
-			
-		@JsonIgnore
-		@Incidence(label="host",direction=Direction.IN)
-		public void setHostPort(final IPortObject port);
-		
-		@JsonIgnore
-		@Incidence(label="host",direction=Direction.IN)
-		public void removeHostPort(final IPortObject port);
-		
-		@JsonIgnore
-		@GremlinGroovy("_().in('host').in('on')")
-		public Iterable<ISwitchObject> getSwitch();
-		
-/*		@JsonProperty("dpid")
-		@GremlinGroovy("_().in('host').in('on').next().getProperty('dpid')")
-		public Iterable<String> getSwitchDPID();
-		
-		@JsonProperty("number")
-		@GremlinGroovy("_().in('host').transform{it.number}")
-		public Iterable<Short> getPortNumber();
-		
-		@JsonProperty("AttachmentPoint")
-		@GremlinGroovy("_().in('host').in('on').path(){it.number}{it.dpid}")
-		public Iterable<SwitchPort> getAttachmentPoints();*/
-	}
-
-public interface IFlowPath extends IBaseObject {
-		@JsonProperty("flowId")
-		@Property("flow_id")
-		public String getFlowId();
-
-		@Property("flow_id")
-		public void setFlowId(String flowId);
-
-		@JsonProperty("installerId")
-		@Property("installer_id")
-		public String getInstallerId();
-
-		@Property("installer_id")
-		public void setInstallerId(String installerId);
-
-		@JsonProperty("srcDpid")
-		@Property("src_switch")
-		public String getSrcSwitch();
-
-		@Property("src_switch")
-		public void setSrcSwitch(String srcSwitch);
-
-		@JsonProperty("srcPort")
-		@Property("src_port")
-		public Short getSrcPort();
-
-		@Property("src_port")
-		public void setSrcPort(Short srcPort);
-
-		@JsonProperty("dstDpid")
-		@Property("dst_switch")
-		public String getDstSwitch();
-
-		@Property("dst_switch")
-		public void setDstSwitch(String dstSwitch);
-
-		@JsonProperty("dstPort")
-		@Property("dst_port")
-		public Short getDstPort();
-
-		@Property("dst_port")
-		public void setDstPort(Short dstPort);
-
-		@JsonProperty("dataPath")
-		@JsonSerialize(using=DatapathSummarySerializer.class)
-		@Property("data_path_summary")
-		public String getDataPathSummary();
-
-		@Property("data_path_summary")
-		public void setDataPathSummary(String dataPathSummary);
-
-		@JsonIgnore
-		@Adjacency(label="flow", direction=Direction.IN)
-		public Iterable<IFlowEntry> getFlowEntries();
-
-		@Adjacency(label="flow", direction=Direction.IN)
-		public void addFlowEntry(final IFlowEntry flowEntry);
-
-		@Adjacency(label="flow", direction=Direction.IN)
-		public void removeFlowEntry(final IFlowEntry flowEntry);
-
-		@JsonIgnore
-		@Property("matchEthernetFrameType")
-		public Short getMatchEthernetFrameType();
-
-		@Property("matchEthernetFrameType")
-		public void setMatchEthernetFrameType(Short matchEthernetFrameType);
-
-		@JsonIgnore
-		@Property("matchSrcMac")
-		public String getMatchSrcMac();
-
-		@Property("matchSrcMac")
-		public void setMatchSrcMac(String matchSrcMac);
-
-		@JsonIgnore
-		@Property("matchDstMac")
-		public String getMatchDstMac();
-
-		@Property("matchDstMac")
-		public void setMatchDstMac(String matchDstMac);
-
-		@JsonIgnore
-		@Property("matchSrcIPv4Net")
-		public String getMatchSrcIPv4Net();
-
-		@Property("matchSrcIPv4Net")
-		public void setMatchSrcIPv4Net(String matchSrcIPv4Net);
-
-		@JsonIgnore
-		@Property("matchDstIPv4Net")
-		public String getMatchDstIPv4Net();
-
-		@Property("matchDstIPv4Net")
-		public void setMatchDstIPv4Net(String matchDstIPv4Net);
-		
-		@JsonIgnore
-		@GremlinGroovy("_().in('flow').out('switch')")
-		public Iterable<ISwitchObject> getSwitches();
-		
-		@JsonIgnore
-		@Property("state")
-		public String getState();
-
-		@JsonIgnore
-		@Property("user_state")
-		public String getUserState();
-
-		@Property("user_state")
-		public void setUserState(String userState);
-	}
-
-public interface IFlowEntry extends IBaseObject {
-		@Property("flow_entry_id")
-		public String getFlowEntryId();
-
-		@Property("flow_entry_id")
-		public void setFlowEntryId(String flowEntryId);
-
-		@Property("switch_dpid")
-		public String getSwitchDpid();
-
-		@Property("switch_dpid")
-		public void setSwitchDpid(String switchDpid);
-
-		@Property("user_state")
-		public String getUserState();
-
-		@Property("user_state")
-		public void setUserState(String userState);
-
-		@Property("switch_state")
-		public String getSwitchState();
-
-		@Property("switch_state")
-		public void setSwitchState(String switchState);
-
-		@Property("error_state_type")
-		public String getErrorStateType();
-
-		@Property("error_state_type")
-		public void setErrorStateType(String errorStateType);
-
-		@Property("error_state_code")
-		public String getErrorStateCode();
-
-		@Property("error_state_code")
-		public void setErrorStateCode(String errorStateCode);
-
-		@Property("matchInPort")
-		public Short getMatchInPort();
-
-		@Property("matchInPort")
-		public void setMatchInPort(Short matchInPort);
-
-		@Property("matchEthernetFrameType")
-		public Short getMatchEthernetFrameType();
-
-		@Property("matchEthernetFrameType")
-		public void setMatchEthernetFrameType(Short matchEthernetFrameType);
-
-		@Property("matchSrcMac")
-		public String getMatchSrcMac();
-
-		@Property("matchSrcMac")
-		public void setMatchSrcMac(String matchSrcMac);
-
-		@Property("matchDstMac")
-		public String getMatchDstMac();
-
-		@Property("matchDstMac")
-		public void setMatchDstMac(String matchDstMac);
-
-		@Property("matchSrcIPv4Net")
-		public String getMatchSrcIPv4Net();
-
-		@Property("matchSrcIPv4Net")
-		public void setMatchSrcIPv4Net(String matchSrcIPv4Net);
-
-		@Property("matchDstIPv4Net")
-		public String getMatchDstIPv4Net();
-
-		@Property("matchDstIPv4Net")
-		public void setMatchDstIPv4Net(String matchDstIPv4Net);
-
-		@Property("actionOutput")
-		public Short getActionOutput();
-
-		@Property("actionOutput")
-		public void setActionOutput(Short actionOutput);
-
-		@Adjacency(label="flow")
-		public IFlowPath getFlow();
-
-		@Adjacency(label="flow")
-		public void setFlow(IFlowPath flow);
-
-		@Adjacency(label="switch")
-		public ISwitchObject getSwitch();
-
-		@Adjacency(label="switch")
-		public void setSwitch(ISwitchObject sw);
-
-		@Adjacency(label="inport")
-		public IPortObject getInPort();
-
-		@Adjacency(label="inport")
-		public void setInPort(IPortObject port);
-
-		@Adjacency(label="outport")
-		public IPortObject getOutPort();
-
-		@Adjacency(label="outport")
-		public void setOutPort(IPortObject port);
-	}
-}
diff --git a/src/main/java/net/floodlightcontroller/core/INetMapTopologyService.java b/src/main/java/net/floodlightcontroller/core/INetMapTopologyService.java
deleted file mode 100644
index f217c25..0000000
--- a/src/main/java/net/floodlightcontroller/core/INetMapTopologyService.java
+++ /dev/null
@@ -1,123 +0,0 @@
-package net.floodlightcontroller.core;
-
-import java.util.List;
-import java.util.Map;
-
-import net.floodlightcontroller.core.module.IFloodlightService;
-import net.floodlightcontroller.core.INetMapTopologyObjects.IDeviceObject;
-import net.floodlightcontroller.core.INetMapTopologyObjects.IPortObject;
-import net.floodlightcontroller.core.INetMapTopologyObjects.ISwitchObject;
-import net.floodlightcontroller.routing.Link;
-import net.floodlightcontroller.topology.NodePortTuple;
-import net.floodlightcontroller.util.DataPath;
-import net.floodlightcontroller.util.SwitchPort;
-
-public interface INetMapTopologyService extends INetMapService {
-
-	public interface ITopoSwitchService {
-		Iterable<ISwitchObject> getActiveSwitches();
-		Iterable<ISwitchObject> getAllSwitches();
-		Iterable<ISwitchObject> getInactiveSwitches();
-		Iterable<IPortObject> getPortsOnSwitch(String dpid);
-		IPortObject getPortOnSwitch(String dpid, short port_num);
-		void close();
-
-	}
-	
-	public interface ITopoLinkService {
-		List<Link> getActiveLinks();
-		List<Link> getLinksOnSwitch(String dpid);
-		void close();
-	}
-	public interface ITopoDeviceService {
-		Iterable<IDeviceObject> getActiveDevices();
-		Iterable<IDeviceObject> getDevicesOnSwitch(String dpid);
-		Iterable<IDeviceObject> getDevicesOnSwitch(String dpid, short port_num);
-	}
-	
-	public interface ITopoRouteService extends IFloodlightService {
-	    /**
-	     * Get the shortest path from a source to a destination.
-	     *
-	     * @param src the source in the shortest path computation.
-	     * @param dest the destination in the shortest path computation.
-	     * @return the data path with the computed shortest path if
-	     * found, otherwise null.
-	     */
-	    DataPath getShortestPath(SwitchPort src, SwitchPort dest);
-
-	    /**
-	     * Fetch the Switch and Ports info from the Titan Graph
-	     * and return it for fast access during the shortest path
-	     * computation.
-	     *
-	     * After fetching the state, method @ref getTopoShortestPath()
-	     * can be used for fast shortest path computation.
-	     *
-	     * Note: There is certain cost to fetch the state, hence it should
-	     * be used only when there is a large number of shortest path
-	     * computations that need to be done on the same topology.
-	     * Typically, a single call to @ref prepareShortestPathTopo()
-	     * should be followed by a large number of calls to
-	     * method @ref getTopoShortestPath().
-	     * After the last @ref getTopoShortestPath() call,
-	     * method @ref dropShortestPathTopo() should be used to release
-	     * the internal state that is not needed anymore:
-	     *
-	     *       Map<Long, ?> shortestPathTopo;
-	     *       shortestPathTopo = prepareShortestPathTopo();
-	     *       for (int i = 0; i < 10000; i++) {
-	     *           dataPath = getTopoShortestPath(shortestPathTopo, ...);
-	     *           ...
-	     *        }
-	     *        dropShortestPathTopo(shortestPathTopo);
-	     *
-	     * @return the Shortest Path info handler stored in a map.
-	     */
-	    Map<Long, ?> prepareShortestPathTopo();
-
-	    /**
-	     * Release the state that was populated by
-	     * method @ref prepareShortestPathTopo().
-	     *
-	     * See the documentation for method @ref prepareShortestPathTopo()
-	     * for additional information and usage.
-	     *
-	     * @shortestPathTopo the Shortest Path info handler to release.
-	     */
-	    void dropShortestPathTopo(Map<Long, ?> shortestPathTopo);
-
-	    /**
-	     * Get the shortest path from a source to a destination by
-	     * using the pre-populated local topology state prepared
-	     * by method @ref prepareShortestPathTopo().
-	     *
-	     * See the documentation for method @ref prepareShortestPathTopo()
-	     * for additional information and usage.
-	     *
-	     * @paran shortestPathTopoHandler the Shortest Path info handler
-	     * to use.
-	     * @param src the source in the shortest path computation.
-	     * @param dest the destination in the shortest path computation.
-	     * @return the data path with the computed shortest path if
-	     * found, otherwise null.
-	     */
-	    DataPath getTopoShortestPath(Map<Long, ?> shortestPathTopo,
-					 SwitchPort src, SwitchPort dest);
-
-	    /**
-	     * Test whether a route exists from a source to a destination.
-	     *
-	     * @param src the source node for the test.
-	     * @param dest the destination node for the test.
-	     * @return true if a route exists, otherwise false.
-	     */
-	    Boolean routeExists(SwitchPort src, SwitchPort dest);
-	}
-	
-	public interface ITopoFlowService {
-		Boolean flowExists(NodePortTuple src, NodePortTuple dest);
-		List<NodePortTuple> getShortestFlowPath(NodePortTuple src, NodePortTuple dest);
-		
-	}
-}
diff --git a/src/main/java/net/floodlightcontroller/core/ISwitchStorage.java b/src/main/java/net/floodlightcontroller/core/ISwitchStorage.java
deleted file mode 100644
index 1219aac..0000000
--- a/src/main/java/net/floodlightcontroller/core/ISwitchStorage.java
+++ /dev/null
@@ -1,60 +0,0 @@
-package net.floodlightcontroller.core;
-
-import java.util.Collection;
-
-import net.floodlightcontroller.core.INetMapTopologyObjects.ISwitchObject;
-
-import org.openflow.protocol.OFPhysicalPort;
-
-public interface ISwitchStorage extends INetMapStorage {
-	
-	public enum SwitchState {
-		INACTIVE,
-		ACTIVE
-	}
-	
-	/*
-	 * Update the switch details
-	 */
-	public void update(String dpid,SwitchState state, DM_OPERATION op);
-	/*
-	 * Associate a port on switch
-	 */
-	public void addPort(String dpid, OFPhysicalPort port);
-	/*
-	 * Get all ports associated on a switch
-	 */
-	public Collection<OFPhysicalPort> getPorts(long dpid);
-	/*
-	 * Get Port by Number
-	 */
-	public OFPhysicalPort getPort(String dpid, short portnum);
-	/*
-	 * Get port by name
-	 */
-	public OFPhysicalPort getPort(String dpid, String portName);
-	/*
-	 * Add a switch
-	 */
-	public void addSwitch(String dpid);
-	/*
-	 * Delete switch and associated ports
-	 */
-	public void deleteSwitch(String dpid);
-	/*
-	 * Delete a port on a switch by num
-	 */
-	public void deletePort(String dpid, short port);
-	/*
-	 * Delete port on a switch by name
-	 */
-	public void deletePort(String dpid, String portName);
-	
-	
-	/*
-	 * Initialize
-	 */
-	public void init(String conf);
-	
-
-}
diff --git a/src/main/java/net/floodlightcontroller/core/internal/Controller.java b/src/main/java/net/floodlightcontroller/core/internal/Controller.java
index dc421a4..ad33c41 100644
--- a/src/main/java/net/floodlightcontroller/core/internal/Controller.java
+++ b/src/main/java/net/floodlightcontroller/core/internal/Controller.java
@@ -54,13 +54,10 @@
 import net.floodlightcontroller.core.IHAListener;
 import net.floodlightcontroller.core.IInfoProvider;
 import net.floodlightcontroller.core.IListener.Command;
-import net.floodlightcontroller.core.INetMapStorage.DM_OPERATION;
-import net.floodlightcontroller.core.INetMapTopologyService.ITopoRouteService;
 import net.floodlightcontroller.core.IOFMessageListener;
 import net.floodlightcontroller.core.IOFSwitch;
 import net.floodlightcontroller.core.IOFSwitchFilter;
 import net.floodlightcontroller.core.IOFSwitchListener;
-import net.floodlightcontroller.core.ISwitchStorage.SwitchState;
 import net.floodlightcontroller.core.annotations.LogMessageDoc;
 import net.floodlightcontroller.core.annotations.LogMessageDocs;
 import net.floodlightcontroller.core.internal.OFChannelState.HandshakeState;
@@ -77,6 +74,9 @@
 import net.floodlightcontroller.storage.OperatorPredicate;
 import net.floodlightcontroller.storage.StorageException;
 import net.floodlightcontroller.threadpool.IThreadPoolService;
+import net.onrc.onos.ofcontroller.core.INetMapStorage.DM_OPERATION;
+import net.onrc.onos.ofcontroller.core.INetMapTopologyService.ITopoRouteService;
+import net.onrc.onos.ofcontroller.core.ISwitchStorage.SwitchState;
 import net.onrc.onos.registry.controller.IControllerRegistryService;
 import net.onrc.onos.registry.controller.IControllerRegistryService.ControlChangeCallback;
 import net.onrc.onos.registry.controller.RegistryException;
diff --git a/src/main/java/net/floodlightcontroller/core/internal/SwitchStorageImpl.java b/src/main/java/net/floodlightcontroller/core/internal/SwitchStorageImpl.java
index b8197b7..275dc21 100644
--- a/src/main/java/net/floodlightcontroller/core/internal/SwitchStorageImpl.java
+++ b/src/main/java/net/floodlightcontroller/core/internal/SwitchStorageImpl.java
@@ -2,9 +2,9 @@
 
 import java.util.Collection;
 
-import net.floodlightcontroller.core.INetMapTopologyObjects.IPortObject;
-import net.floodlightcontroller.core.INetMapTopologyObjects.ISwitchObject;
-import net.floodlightcontroller.core.ISwitchStorage;
+import net.onrc.onos.ofcontroller.core.ISwitchStorage;
+import net.onrc.onos.ofcontroller.core.INetMapTopologyObjects.IPortObject;
+import net.onrc.onos.ofcontroller.core.INetMapTopologyObjects.ISwitchObject;
 import net.onrc.onos.util.GraphDBConnection;
 import net.onrc.onos.util.GraphDBConnection.GenerateEvent;
 import net.onrc.onos.util.GraphDBConnection.Transaction;
diff --git a/src/main/java/net/floodlightcontroller/core/internal/TopoSwitchServiceImpl.java b/src/main/java/net/floodlightcontroller/core/internal/TopoSwitchServiceImpl.java
index 502fad6..5110957 100644
--- a/src/main/java/net/floodlightcontroller/core/internal/TopoSwitchServiceImpl.java
+++ b/src/main/java/net/floodlightcontroller/core/internal/TopoSwitchServiceImpl.java
@@ -1,8 +1,8 @@
 package net.floodlightcontroller.core.internal;
 
-import net.floodlightcontroller.core.INetMapTopologyObjects.IPortObject;
-import net.floodlightcontroller.core.INetMapTopologyObjects.ISwitchObject;
-import net.floodlightcontroller.core.INetMapTopologyService.ITopoSwitchService;
+import net.onrc.onos.ofcontroller.core.INetMapTopologyObjects.IPortObject;
+import net.onrc.onos.ofcontroller.core.INetMapTopologyObjects.ISwitchObject;
+import net.onrc.onos.ofcontroller.core.INetMapTopologyService.ITopoSwitchService;
 import net.onrc.onos.util.GraphDBConnection;
 import net.onrc.onos.util.GraphDBConnection.Transaction;
 
diff --git a/src/main/java/net/floodlightcontroller/core/web/TopoSwitchesResource.java b/src/main/java/net/floodlightcontroller/core/web/TopoSwitchesResource.java
index 7a8511b..f431524 100644
--- a/src/main/java/net/floodlightcontroller/core/web/TopoSwitchesResource.java
+++ b/src/main/java/net/floodlightcontroller/core/web/TopoSwitchesResource.java
@@ -2,8 +2,8 @@
 
 import java.util.Iterator;
 
-import net.floodlightcontroller.core.INetMapTopologyObjects.ISwitchObject;
 import net.floodlightcontroller.core.internal.TopoSwitchServiceImpl;
+import net.onrc.onos.ofcontroller.core.INetMapTopologyObjects.ISwitchObject;
 
 import org.restlet.resource.Get;
 import org.restlet.resource.ServerResource;
diff --git a/src/main/java/net/floodlightcontroller/devicemanager/IDeviceStorage.java b/src/main/java/net/floodlightcontroller/devicemanager/IDeviceStorage.java
index f41e32c..739e6d5 100644
--- a/src/main/java/net/floodlightcontroller/devicemanager/IDeviceStorage.java
+++ b/src/main/java/net/floodlightcontroller/devicemanager/IDeviceStorage.java
@@ -1,7 +1,7 @@
 package net.floodlightcontroller.devicemanager;
 
-import net.floodlightcontroller.core.INetMapStorage;
-import net.floodlightcontroller.core.INetMapTopologyObjects.IDeviceObject;
+import net.onrc.onos.ofcontroller.core.INetMapStorage;
+import net.onrc.onos.ofcontroller.core.INetMapTopologyObjects.IDeviceObject;
 
 public interface IDeviceStorage extends INetMapStorage {
 	
diff --git a/src/main/java/net/floodlightcontroller/devicemanager/internal/DeviceStorageImpl.java b/src/main/java/net/floodlightcontroller/devicemanager/internal/DeviceStorageImpl.java
index e964b8e..0fbd2dc 100644
--- a/src/main/java/net/floodlightcontroller/devicemanager/internal/DeviceStorageImpl.java
+++ b/src/main/java/net/floodlightcontroller/devicemanager/internal/DeviceStorageImpl.java
@@ -7,12 +7,12 @@
 
 import com.google.common.collect.Lists;
 import com.thinkaurelius.titan.core.TitanException;
-import net.floodlightcontroller.core.INetMapTopologyObjects.IDeviceObject;
-import net.floodlightcontroller.core.INetMapTopologyObjects.IPortObject;
 import net.floodlightcontroller.core.internal.SwitchStorageImpl;
 import net.floodlightcontroller.devicemanager.IDevice;
 import net.floodlightcontroller.devicemanager.IDeviceStorage;
 import net.floodlightcontroller.devicemanager.SwitchPort;
+import net.onrc.onos.ofcontroller.core.INetMapTopologyObjects.IDeviceObject;
+import net.onrc.onos.ofcontroller.core.INetMapTopologyObjects.IPortObject;
 import net.onrc.onos.util.GraphDBConnection;
 import net.onrc.onos.util.GraphDBConnection.Transaction;
 
diff --git a/src/main/java/net/floodlightcontroller/devicemanager/web/TopoDevicesResource.java b/src/main/java/net/floodlightcontroller/devicemanager/web/TopoDevicesResource.java
index db7059f..80fadaa 100644
--- a/src/main/java/net/floodlightcontroller/devicemanager/web/TopoDevicesResource.java
+++ b/src/main/java/net/floodlightcontroller/devicemanager/web/TopoDevicesResource.java
@@ -2,7 +2,7 @@
 
 import java.util.Iterator;
 
-import net.floodlightcontroller.core.INetMapTopologyObjects.IDeviceObject;
+import net.onrc.onos.ofcontroller.core.INetMapTopologyObjects.IDeviceObject;
 import net.onrc.onos.util.GraphDBConnection;
 
 import org.restlet.resource.Get;
diff --git a/src/main/java/net/floodlightcontroller/flowcache/FlowManager.java b/src/main/java/net/floodlightcontroller/flowcache/FlowManager.java
index 8aec20f..6eed485 100644
--- a/src/main/java/net/floodlightcontroller/flowcache/FlowManager.java
+++ b/src/main/java/net/floodlightcontroller/flowcache/FlowManager.java
@@ -19,12 +19,6 @@
 import java.util.concurrent.TimeUnit;
 
 import net.floodlightcontroller.core.IFloodlightProviderService;
-import net.floodlightcontroller.core.INetMapStorage;
-import net.floodlightcontroller.core.INetMapTopologyObjects.IFlowEntry;
-import net.floodlightcontroller.core.INetMapTopologyObjects.IFlowPath;
-import net.floodlightcontroller.core.INetMapTopologyObjects.IPortObject;
-import net.floodlightcontroller.core.INetMapTopologyObjects.ISwitchObject;
-import net.floodlightcontroller.core.INetMapTopologyService.ITopoRouteService;
 import net.floodlightcontroller.core.IOFSwitch;
 import net.floodlightcontroller.core.module.FloodlightModuleContext;
 import net.floodlightcontroller.core.module.FloodlightModuleException;
@@ -49,6 +43,12 @@
 import net.floodlightcontroller.util.OFMessageDamper;
 import net.floodlightcontroller.util.Port;
 import net.floodlightcontroller.util.SwitchPort;
+import net.onrc.onos.ofcontroller.core.INetMapStorage;
+import net.onrc.onos.ofcontroller.core.INetMapTopologyObjects.IFlowEntry;
+import net.onrc.onos.ofcontroller.core.INetMapTopologyObjects.IFlowPath;
+import net.onrc.onos.ofcontroller.core.INetMapTopologyObjects.IPortObject;
+import net.onrc.onos.ofcontroller.core.INetMapTopologyObjects.ISwitchObject;
+import net.onrc.onos.ofcontroller.core.INetMapTopologyService.ITopoRouteService;
 import net.onrc.onos.util.GraphDBConnection;
 import net.onrc.onos.util.GraphDBConnection.Transaction;
 
diff --git a/src/main/java/net/floodlightcontroller/flowcache/IFlowService.java b/src/main/java/net/floodlightcontroller/flowcache/IFlowService.java
index 6c19fd0..937082f 100644
--- a/src/main/java/net/floodlightcontroller/flowcache/IFlowService.java
+++ b/src/main/java/net/floodlightcontroller/flowcache/IFlowService.java
@@ -2,12 +2,12 @@
 
 import java.util.ArrayList;
 
-import net.floodlightcontroller.core.INetMapTopologyObjects.IFlowPath;
 import net.floodlightcontroller.core.module.IFloodlightService;
 import net.floodlightcontroller.util.CallerId;
 import net.floodlightcontroller.util.DataPathEndpoints;
 import net.floodlightcontroller.util.FlowId;
 import net.floodlightcontroller.util.FlowPath;
+import net.onrc.onos.ofcontroller.core.INetMapTopologyObjects.IFlowPath;
 
 /**
  * @short Interface for providing Flow Service to other modules.
diff --git a/src/main/java/net/floodlightcontroller/flowcache/web/GetSummaryFlowsResource.java b/src/main/java/net/floodlightcontroller/flowcache/web/GetSummaryFlowsResource.java
index 5f63222..c5a6823 100644
--- a/src/main/java/net/floodlightcontroller/flowcache/web/GetSummaryFlowsResource.java
+++ b/src/main/java/net/floodlightcontroller/flowcache/web/GetSummaryFlowsResource.java
@@ -2,10 +2,10 @@
 
 import java.util.ArrayList;
 
-import net.floodlightcontroller.core.INetMapTopologyObjects.IFlowPath;
 import net.floodlightcontroller.flowcache.IFlowService;
 import net.floodlightcontroller.util.FlowId;
 import net.floodlightcontroller.util.FlowPath;
+import net.onrc.onos.ofcontroller.core.INetMapTopologyObjects.IFlowPath;
 
 import org.restlet.resource.Get;
 import org.restlet.resource.ServerResource;
diff --git a/src/main/java/net/floodlightcontroller/linkdiscovery/ILinkStorage.java b/src/main/java/net/floodlightcontroller/linkdiscovery/ILinkStorage.java
index 90836ca..9a70708 100644
--- a/src/main/java/net/floodlightcontroller/linkdiscovery/ILinkStorage.java
+++ b/src/main/java/net/floodlightcontroller/linkdiscovery/ILinkStorage.java
@@ -2,8 +2,8 @@
 
 import java.util.List;
 
-import net.floodlightcontroller.core.INetMapStorage;
 import net.floodlightcontroller.routing.Link;
+import net.onrc.onos.ofcontroller.core.INetMapStorage;
 
 public interface ILinkStorage extends INetMapStorage {
 	
diff --git a/src/main/java/net/floodlightcontroller/linkdiscovery/internal/LinkStorageImpl.java b/src/main/java/net/floodlightcontroller/linkdiscovery/internal/LinkStorageImpl.java
index c8ca86f..fb85636 100644
--- a/src/main/java/net/floodlightcontroller/linkdiscovery/internal/LinkStorageImpl.java
+++ b/src/main/java/net/floodlightcontroller/linkdiscovery/internal/LinkStorageImpl.java
@@ -3,11 +3,11 @@
 import java.util.ArrayList;
 import java.util.List;
 
-import net.floodlightcontroller.core.INetMapTopologyObjects.IPortObject;
-import net.floodlightcontroller.core.INetMapTopologyObjects.ISwitchObject;
 import net.floodlightcontroller.linkdiscovery.ILinkStorage;
 import net.floodlightcontroller.linkdiscovery.LinkInfo;
 import net.floodlightcontroller.routing.Link;
+import net.onrc.onos.ofcontroller.core.INetMapTopologyObjects.IPortObject;
+import net.onrc.onos.ofcontroller.core.INetMapTopologyObjects.ISwitchObject;
 import net.onrc.onos.util.GraphDBConnection;
 import net.onrc.onos.util.GraphDBConnection.Transaction;
 
diff --git a/src/main/java/net/floodlightcontroller/linkdiscovery/internal/TopoLinkServiceImpl.java b/src/main/java/net/floodlightcontroller/linkdiscovery/internal/TopoLinkServiceImpl.java
index 9d5fdba..9c81d7e 100644
--- a/src/main/java/net/floodlightcontroller/linkdiscovery/internal/TopoLinkServiceImpl.java
+++ b/src/main/java/net/floodlightcontroller/linkdiscovery/internal/TopoLinkServiceImpl.java
@@ -3,10 +3,10 @@
 import java.util.ArrayList;
 import java.util.List;
 
-import net.floodlightcontroller.core.INetMapTopologyObjects.ISwitchObject;
-import net.floodlightcontroller.core.INetMapTopologyService.ITopoLinkService;
 import net.floodlightcontroller.linkdiscovery.internal.LinkStorageImpl.ExtractLink;
 import net.floodlightcontroller.routing.Link;
+import net.onrc.onos.ofcontroller.core.INetMapTopologyObjects.ISwitchObject;
+import net.onrc.onos.ofcontroller.core.INetMapTopologyService.ITopoLinkService;
 import net.onrc.onos.util.GraphDBConnection;
 import net.onrc.onos.util.GraphDBConnection.Transaction;
 
diff --git a/src/main/java/net/floodlightcontroller/onoslistener/OnosPublisher.java b/src/main/java/net/floodlightcontroller/onoslistener/OnosPublisher.java
index 19ed705..da7461c 100644
--- a/src/main/java/net/floodlightcontroller/onoslistener/OnosPublisher.java
+++ b/src/main/java/net/floodlightcontroller/onoslistener/OnosPublisher.java
@@ -12,13 +12,8 @@
 import org.slf4j.LoggerFactory;
 
 import net.floodlightcontroller.core.IFloodlightProviderService;
-import net.floodlightcontroller.core.INetMapStorage.DM_OPERATION;
-import net.floodlightcontroller.core.INetMapTopologyObjects.IPortObject;
-import net.floodlightcontroller.core.INetMapTopologyObjects.ISwitchObject;
-import net.floodlightcontroller.core.ISwitchStorage.SwitchState;
 import net.floodlightcontroller.core.IOFSwitch;
 import net.floodlightcontroller.core.IOFSwitchListener;
-import net.floodlightcontroller.core.ISwitchStorage;
 import net.floodlightcontroller.core.internal.SwitchStorageImpl;
 import net.floodlightcontroller.core.internal.TopoSwitchServiceImpl;
 import net.floodlightcontroller.core.module.FloodlightModuleContext;
@@ -37,6 +32,11 @@
 import net.floodlightcontroller.linkdiscovery.internal.LinkStorageImpl;
 import net.floodlightcontroller.routing.Link;
 import net.floodlightcontroller.threadpool.IThreadPoolService;
+import net.onrc.onos.ofcontroller.core.ISwitchStorage;
+import net.onrc.onos.ofcontroller.core.INetMapStorage.DM_OPERATION;
+import net.onrc.onos.ofcontroller.core.INetMapTopologyObjects.IPortObject;
+import net.onrc.onos.ofcontroller.core.INetMapTopologyObjects.ISwitchObject;
+import net.onrc.onos.ofcontroller.core.ISwitchStorage.SwitchState;
 import net.onrc.onos.registry.controller.IControllerRegistryService;
 import net.onrc.onos.registry.controller.IControllerRegistryService.ControlChangeCallback;
 import net.onrc.onos.registry.controller.RegistryException;
diff --git a/src/main/java/net/floodlightcontroller/routing/TopoRouteService.java b/src/main/java/net/floodlightcontroller/routing/TopoRouteService.java
index 1e002aa..9120de8 100644
--- a/src/main/java/net/floodlightcontroller/routing/TopoRouteService.java
+++ b/src/main/java/net/floodlightcontroller/routing/TopoRouteService.java
@@ -11,9 +11,6 @@
 import java.util.Queue;
 import java.util.Set;
 
-import net.floodlightcontroller.core.INetMapTopologyObjects.ISwitchObject;
-import net.floodlightcontroller.core.INetMapTopologyService.ITopoRouteService;
-import net.floodlightcontroller.core.ISwitchStorage.SwitchState;
 import net.floodlightcontroller.core.module.FloodlightModuleContext;
 import net.floodlightcontroller.core.module.FloodlightModuleException;
 import net.floodlightcontroller.core.module.IFloodlightModule;
@@ -23,6 +20,9 @@
 import net.floodlightcontroller.util.FlowEntry;
 import net.floodlightcontroller.util.Port;
 import net.floodlightcontroller.util.SwitchPort;
+import net.onrc.onos.ofcontroller.core.INetMapTopologyObjects.ISwitchObject;
+import net.onrc.onos.ofcontroller.core.INetMapTopologyService.ITopoRouteService;
+import net.onrc.onos.ofcontroller.core.ISwitchStorage.SwitchState;
 import net.onrc.onos.util.GraphDBConnection;
 import net.onrc.onos.util.GraphDBConnection.Transaction;
 
diff --git a/src/main/java/net/floodlightcontroller/topology/TopologyManager.java b/src/main/java/net/floodlightcontroller/topology/TopologyManager.java
index 958fc84..27f4df2 100644
--- a/src/main/java/net/floodlightcontroller/topology/TopologyManager.java
+++ b/src/main/java/net/floodlightcontroller/topology/TopologyManager.java
@@ -17,7 +17,6 @@
 import net.floodlightcontroller.core.FloodlightContext;
 import net.floodlightcontroller.core.IFloodlightProviderService;
 import net.floodlightcontroller.core.IFloodlightProviderService.Role;
-import net.floodlightcontroller.core.INetMapStorage.DM_OPERATION;
 import net.floodlightcontroller.core.IOFMessageListener;
 import net.floodlightcontroller.core.IOFSwitch;
 import net.floodlightcontroller.core.IHAListener;
@@ -40,6 +39,7 @@
 import net.floodlightcontroller.routing.Route;
 import net.floodlightcontroller.threadpool.IThreadPoolService;
 import net.floodlightcontroller.topology.web.TopologyWebRoutable;
+import net.onrc.onos.ofcontroller.core.INetMapStorage.DM_OPERATION;
 
 import org.openflow.protocol.OFMessage;
 import org.openflow.protocol.OFPacketIn;
diff --git a/src/main/java/net/floodlightcontroller/topology/web/RouteResource.java b/src/main/java/net/floodlightcontroller/topology/web/RouteResource.java
index 20f39d4..66db33e 100644
--- a/src/main/java/net/floodlightcontroller/topology/web/RouteResource.java
+++ b/src/main/java/net/floodlightcontroller/topology/web/RouteResource.java
@@ -2,7 +2,6 @@
 
 import java.util.List;
 
-import net.floodlightcontroller.core.INetMapTopologyService.ITopoRouteService;
 import net.floodlightcontroller.routing.IRoutingService;
 import net.floodlightcontroller.routing.Route;
 import net.floodlightcontroller.topology.NodePortTuple;
@@ -10,6 +9,7 @@
 import net.floodlightcontroller.util.Dpid;
 import net.floodlightcontroller.util.Port;
 import net.floodlightcontroller.util.SwitchPort;
+import net.onrc.onos.ofcontroller.core.INetMapTopologyService.ITopoRouteService;
 
 import org.openflow.util.HexString;
 import org.restlet.resource.Get;
diff --git a/src/main/java/net/floodlightcontroller/util/FlowPath.java b/src/main/java/net/floodlightcontroller/util/FlowPath.java
index b171b88..d906444 100644
--- a/src/main/java/net/floodlightcontroller/util/FlowPath.java
+++ b/src/main/java/net/floodlightcontroller/util/FlowPath.java
@@ -2,12 +2,12 @@
 
 import java.util.ArrayList;
 
-import net.floodlightcontroller.core.INetMapTopologyObjects.IFlowEntry;
-import net.floodlightcontroller.core.INetMapTopologyObjects.IFlowPath;
 import net.floodlightcontroller.util.CallerId;
 import net.floodlightcontroller.util.DataPath;
 import net.floodlightcontroller.util.FlowEntryMatch;
 import net.floodlightcontroller.util.FlowId;
+import net.onrc.onos.ofcontroller.core.INetMapTopologyObjects.IFlowEntry;
+import net.onrc.onos.ofcontroller.core.INetMapTopologyObjects.IFlowPath;
 
 import org.codehaus.jackson.annotate.JsonProperty;
 
