diff --git a/src/main/java/net/onrc/onos/apps/forwarding/Forwarding.java b/src/main/java/net/onrc/onos/apps/forwarding/Forwarding.java
index 29a5169..1b0c107 100644
--- a/src/main/java/net/onrc/onos/apps/forwarding/Forwarding.java
+++ b/src/main/java/net/onrc/onos/apps/forwarding/Forwarding.java
@@ -35,15 +35,15 @@
 import net.onrc.onos.core.intent.Intent.IntentState;
 import net.onrc.onos.core.intent.runtime.IPathCalcRuntimeService;
 import net.onrc.onos.core.intent.runtime.IntentStateList;
+import net.onrc.onos.core.topology.Device;
+import net.onrc.onos.core.topology.INetworkGraphService;
+import net.onrc.onos.core.topology.LinkEvent;
+import net.onrc.onos.core.topology.NetworkGraph;
+import net.onrc.onos.core.topology.Switch;
 import net.onrc.onos.core.util.Dpid;
 import net.onrc.onos.core.util.FlowPath;
 import net.onrc.onos.core.util.Port;
 import net.onrc.onos.core.util.SwitchPort;
-import net.onrc.onos.ofcontroller.networkgraph.Device;
-import net.onrc.onos.ofcontroller.networkgraph.INetworkGraphService;
-import net.onrc.onos.ofcontroller.networkgraph.LinkEvent;
-import net.onrc.onos.ofcontroller.networkgraph.NetworkGraph;
-import net.onrc.onos.ofcontroller.networkgraph.Switch;
 import net.onrc.onos.packet.Ethernet;
 import net.onrc.onos.registry.controller.IControllerRegistryService;
 
@@ -319,7 +319,7 @@
 		log.debug("Start continuehandlePacketIn");
 		
 		//Iterator<IPortObject> ports = deviceObject.getAttachedPorts().iterator();	
-		Iterator<net.onrc.onos.ofcontroller.networkgraph.Port> ports = deviceObject.getAttachmentPoints().iterator();	
+		Iterator<net.onrc.onos.core.topology.Port> ports = deviceObject.getAttachmentPoints().iterator();	
 		if (!ports.hasNext()) {
 			log.debug("No attachment point found for device {} - broadcasting packet", 
 					deviceObject.getMacAddress());
@@ -328,7 +328,7 @@
 		}
 
 		//This code assumes the device has only one port. It should be problem.
-		net.onrc.onos.ofcontroller.networkgraph.Port portObject = ports.next();
+		net.onrc.onos.core.topology.Port portObject = ports.next();
 		short destinationPort = portObject.getNumber().shortValue();
 		Switch switchObject = portObject.getSwitch();
 		long destinationDpid = switchObject.getDpid();
@@ -376,7 +376,7 @@
 					}
 					
 					Boolean isflowEntryForThisSwitch = false;		
-					net.onrc.onos.ofcontroller.networkgraph.Path path = pathIntent.getPath();
+					net.onrc.onos.core.topology.Path path = pathIntent.getPath();
 
 					for(Iterator<LinkEvent> i = path.iterator(); i.hasNext();) {
 						LinkEvent le = (LinkEvent)i.next();
@@ -497,7 +497,7 @@
 		// packets in the meantime and probably don't want to send very old packets.
 		
 		List<PacketToPush> packets = null;
-		net.onrc.onos.ofcontroller.networkgraph.Path graphPath = installedPath.getPath();
+		net.onrc.onos.core.topology.Path graphPath = installedPath.getPath();
 		
 		log.debug("path{}", graphPath);
 		Short outPort = graphPath.get(0).getSrc().getNumber().shortValue();
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 149c0ee..22a8729 100644
--- a/src/main/java/net/onrc/onos/apps/proxyarp/ProxyArpManager.java
+++ b/src/main/java/net/onrc/onos/apps/proxyarp/ProxyArpManager.java
@@ -29,13 +29,13 @@
 import net.onrc.onos.core.devicemanager.IOnosDeviceService;
 import net.onrc.onos.core.flowprogrammer.IFlowPusherService;
 import net.onrc.onos.core.main.config.IConfigInfoService;
+import net.onrc.onos.core.topology.Device;
+import net.onrc.onos.core.topology.INetworkGraphService;
+import net.onrc.onos.core.topology.NetworkGraph;
+import net.onrc.onos.core.topology.Switch;
 import net.onrc.onos.core.util.Dpid;
 import net.onrc.onos.core.util.Port;
 import net.onrc.onos.core.util.SwitchPort;
-import net.onrc.onos.ofcontroller.networkgraph.Device;
-import net.onrc.onos.ofcontroller.networkgraph.INetworkGraphService;
-import net.onrc.onos.ofcontroller.networkgraph.NetworkGraph;
-import net.onrc.onos.ofcontroller.networkgraph.Switch;
 import net.onrc.onos.packet.ARP;
 import net.onrc.onos.packet.Ethernet;
 import net.onrc.onos.packet.IPv4;
@@ -527,7 +527,7 @@
 
 			// sendArpReply(arp, sw.getId(), pi.getInPort(), macAddress);
 
-			Iterable<net.onrc.onos.ofcontroller.networkgraph.Port> outPorts = targetDevice.getAttachmentPoints();
+			Iterable<net.onrc.onos.core.topology.Port> outPorts = targetDevice.getAttachmentPoints();
 
 			if (!outPorts.iterator().hasNext()){
 				if (log.isTraceEnabled()) {
@@ -541,7 +541,7 @@
 //				broadcastPacketOutEventChannel.addTransientEntry(eth.getDestinationMAC().toLong(), key);
 			} 
 			else {
-				for (net.onrc.onos.ofcontroller.networkgraph.Port portObject : outPorts) {
+				for (net.onrc.onos.core.topology.Port portObject : outPorts) {
 					//long outSwitch = 0;
 					//short outPort = 0;
 
@@ -738,13 +738,13 @@
             List<OFAction> actions = new ArrayList<OFAction>();
 
 			Switch graphSw = networkGraph.getSwitch(sw.getId());
-			Collection<net.onrc.onos.ofcontroller.networkgraph.Port> ports = graphSw.getPorts();
+			Collection<net.onrc.onos.core.topology.Port> ports = graphSw.getPorts();
 			
 			if (ports == null) {
 				continue;
 			}
 			
-			for (net.onrc.onos.ofcontroller.networkgraph.Port portObject : ports) {
+			for (net.onrc.onos.core.topology.Port portObject : ports) {
 				if (portObject.getOutgoingLink() == null && portObject.getNumber() > 0) {
 					Long portNumber = portObject.getNumber();
 					
