Renamed networkgraph package to topology.
Moved NetworkGraphPublisher into new topology package.

net.onrc.onos.ofcontroller.networkgraph.* => net.onrc.onos.core.topology.*
net.onrc.onos.ofcontroller.floodlightlistener.NetworkGraphPublisher => net.onrc.onos.core.topology.NetworkGraphPublisher

Change-Id: I8b156d0fcbba520fee61e92ab659bb02cfa704ac
diff --git a/conf/onos.properties b/conf/onos.properties
index f9d0b3c..416b25a 100644
--- a/conf/onos.properties
+++ b/conf/onos.properties
@@ -1,6 +1,6 @@
 floodlight.modules = net.floodlightcontroller.core.FloodlightProvider,\
 net.floodlightcontroller.threadpool.ThreadPool,\
-net.onrc.onos.ofcontroller.floodlightlistener.NetworkGraphPublisher, \
+net.onrc.onos.core.topology.NetworkGraphPublisher, \
 net.onrc.onos.core.datagrid.HazelcastDatagrid,\
 net.onrc.onos.core.flowprogrammer.FlowProgrammer,\
 net.onrc.onos.core.intent.runtime.PathCalcRuntimeModule,\
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();
 					
diff --git a/src/main/java/net/onrc/onos/core/datagrid/web/GetNGEventsResource.java b/src/main/java/net/onrc/onos/core/datagrid/web/GetNGEventsResource.java
index f319d23..52fccdc 100644
--- a/src/main/java/net/onrc/onos/core/datagrid/web/GetNGEventsResource.java
+++ b/src/main/java/net/onrc/onos/core/datagrid/web/GetNGEventsResource.java
@@ -4,8 +4,8 @@
 
 import net.onrc.onos.core.datagrid.IDatagridService;
 import net.onrc.onos.core.datagrid.IEventChannel;
-import net.onrc.onos.ofcontroller.networkgraph.TopologyEvent;
-import net.onrc.onos.ofcontroller.networkgraph.TopologyManager;
+import net.onrc.onos.core.topology.TopologyEvent;
+import net.onrc.onos.core.topology.TopologyManager;
 
 import org.restlet.resource.Get;
 import org.restlet.resource.ServerResource;
diff --git a/src/main/java/net/onrc/onos/core/datagrid/web/GetNGFlowsSummaryResource.java b/src/main/java/net/onrc/onos/core/datagrid/web/GetNGFlowsSummaryResource.java
index 22b74ae..7aa8e01 100644
--- a/src/main/java/net/onrc/onos/core/datagrid/web/GetNGFlowsSummaryResource.java
+++ b/src/main/java/net/onrc/onos/core/datagrid/web/GetNGFlowsSummaryResource.java
@@ -10,6 +10,8 @@
 import net.onrc.onos.core.intent.ShortestPathIntent;
 import net.onrc.onos.core.intent.Intent.IntentState;
 import net.onrc.onos.core.intent.runtime.IPathCalcRuntimeService;
+import net.onrc.onos.core.topology.LinkEvent;
+import net.onrc.onos.core.topology.Path;
 import net.onrc.onos.core.util.CallerId;
 import net.onrc.onos.core.util.Dpid;
 import net.onrc.onos.core.util.FlowEntry;
@@ -19,8 +21,6 @@
 import net.onrc.onos.core.util.FlowPathUserState;
 import net.onrc.onos.core.util.Port;
 import net.onrc.onos.core.util.SwitchPort;
-import net.onrc.onos.ofcontroller.networkgraph.LinkEvent;
-import net.onrc.onos.ofcontroller.networkgraph.Path;
 
 import org.restlet.resource.Get;
 import org.restlet.resource.ServerResource;
diff --git a/src/main/java/net/onrc/onos/core/datastore/topology/KVDevice.java b/src/main/java/net/onrc/onos/core/datastore/topology/KVDevice.java
index 96411a9..14268b5 100644
--- a/src/main/java/net/onrc/onos/core/datastore/topology/KVDevice.java
+++ b/src/main/java/net/onrc/onos/core/datastore/topology/KVDevice.java
@@ -16,7 +16,7 @@
 import net.onrc.onos.core.datastore.utils.ByteArrayComparator;
 import net.onrc.onos.core.datastore.utils.ByteArrayUtil;
 import net.onrc.onos.core.datastore.utils.KVObject;
-import net.onrc.onos.ofcontroller.networkgraph.DeviceEvent;
+import net.onrc.onos.core.topology.DeviceEvent;
 
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
diff --git a/src/main/java/net/onrc/onos/core/datastore/topology/KVLink.java b/src/main/java/net/onrc/onos/core/datastore/topology/KVLink.java
index 971cb6d..23001ff 100644
--- a/src/main/java/net/onrc/onos/core/datastore/topology/KVLink.java
+++ b/src/main/java/net/onrc/onos/core/datastore/topology/KVLink.java
@@ -9,8 +9,8 @@
 import net.onrc.onos.core.datastore.IKVTable.IKVEntry;
 import net.onrc.onos.core.datastore.RCProtos.LinkProperty;
 import net.onrc.onos.core.datastore.utils.KVObject;
-import net.onrc.onos.ofcontroller.networkgraph.LinkEvent;
-import net.onrc.onos.ofcontroller.networkgraph.PortEvent;
+import net.onrc.onos.core.topology.LinkEvent;
+import net.onrc.onos.core.topology.PortEvent;
 
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
diff --git a/src/main/java/net/onrc/onos/core/datastore/topology/KVPort.java b/src/main/java/net/onrc/onos/core/datastore/topology/KVPort.java
index 9ab2d2a..a5b41e6 100644
--- a/src/main/java/net/onrc/onos/core/datastore/topology/KVPort.java
+++ b/src/main/java/net/onrc/onos/core/datastore/topology/KVPort.java
@@ -10,7 +10,7 @@
 import net.onrc.onos.core.datastore.RCProtos.PortProperty;
 import net.onrc.onos.core.datastore.utils.ByteArrayUtil;
 import net.onrc.onos.core.datastore.utils.KVObject;
-import net.onrc.onos.ofcontroller.networkgraph.PortEvent;
+import net.onrc.onos.core.topology.PortEvent;
 
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
diff --git a/src/main/java/net/onrc/onos/core/datastore/topology/KVSwitch.java b/src/main/java/net/onrc/onos/core/datastore/topology/KVSwitch.java
index eb27f7a..474e99a 100644
--- a/src/main/java/net/onrc/onos/core/datastore/topology/KVSwitch.java
+++ b/src/main/java/net/onrc/onos/core/datastore/topology/KVSwitch.java
@@ -9,7 +9,7 @@
 import net.onrc.onos.core.datastore.IKVTable.IKVEntry;
 import net.onrc.onos.core.datastore.RCProtos.SwitchProperty;
 import net.onrc.onos.core.datastore.utils.KVObject;
-import net.onrc.onos.ofcontroller.networkgraph.SwitchEvent;
+import net.onrc.onos.core.topology.SwitchEvent;
 
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
diff --git a/src/main/java/net/onrc/onos/core/devicemanager/OnosDeviceManager.java b/src/main/java/net/onrc/onos/core/devicemanager/OnosDeviceManager.java
index e673674..9f5fcdb 100644
--- a/src/main/java/net/onrc/onos/core/devicemanager/OnosDeviceManager.java
+++ b/src/main/java/net/onrc/onos/core/devicemanager/OnosDeviceManager.java
@@ -27,13 +27,13 @@
 import net.onrc.onos.core.datagrid.IDatagridService;
 import net.onrc.onos.core.datagrid.IEventChannel;
 import net.onrc.onos.core.datagrid.IEventChannelListener;
+import net.onrc.onos.core.topology.INetworkGraphService;
+import net.onrc.onos.core.topology.NetworkGraph;
 import net.onrc.onos.packet.ARP;
 import net.onrc.onos.packet.DHCP;
 import net.onrc.onos.packet.Ethernet;
 import net.onrc.onos.packet.IPv4;
 import net.onrc.onos.packet.UDP;
-import net.onrc.onos.ofcontroller.networkgraph.INetworkGraphService;
-import net.onrc.onos.ofcontroller.networkgraph.NetworkGraph;
 
 import org.openflow.protocol.OFMessage;
 import org.openflow.protocol.OFPacketIn;
diff --git a/src/main/java/net/onrc/onos/core/intent/ConstrainedBFSTree.java b/src/main/java/net/onrc/onos/core/intent/ConstrainedBFSTree.java
index ed03a8e..fece148 100644
--- a/src/main/java/net/onrc/onos/core/intent/ConstrainedBFSTree.java
+++ b/src/main/java/net/onrc/onos/core/intent/ConstrainedBFSTree.java
@@ -4,10 +4,10 @@
 import java.util.HashSet;
 import java.util.LinkedList;
 
-import net.onrc.onos.ofcontroller.networkgraph.Link;
-import net.onrc.onos.ofcontroller.networkgraph.LinkEvent;
-import net.onrc.onos.ofcontroller.networkgraph.Path;
-import net.onrc.onos.ofcontroller.networkgraph.Switch;
+import net.onrc.onos.core.topology.Link;
+import net.onrc.onos.core.topology.LinkEvent;
+import net.onrc.onos.core.topology.Path;
+import net.onrc.onos.core.topology.Switch;
 
 /**
  * This class creates bandwidth constrained breadth first tree
diff --git a/src/main/java/net/onrc/onos/core/intent/Match.java b/src/main/java/net/onrc/onos/core/intent/Match.java
index 7ddf429..5f92254 100644
--- a/src/main/java/net/onrc/onos/core/intent/Match.java
+++ b/src/main/java/net/onrc/onos/core/intent/Match.java
@@ -3,8 +3,8 @@
 import java.util.Arrays;
 
 import net.floodlightcontroller.util.MACAddress;
-//import net.onrc.onos.ofcontroller.networkgraph.Port;
-//import net.onrc.onos.ofcontroller.networkgraph.Switch;
+//import net.onrc.onos.core.topology.Port;
+//import net.onrc.onos.core.topology.Switch;
 import net.onrc.onos.core.util.FlowEntryMatch;
 
 /**
diff --git a/src/main/java/net/onrc/onos/core/intent/PathIntent.java b/src/main/java/net/onrc/onos/core/intent/PathIntent.java
index c84d739..b06fb81 100644
--- a/src/main/java/net/onrc/onos/core/intent/PathIntent.java
+++ b/src/main/java/net/onrc/onos/core/intent/PathIntent.java
@@ -1,6 +1,6 @@
 package net.onrc.onos.core.intent;
 
-import net.onrc.onos.ofcontroller.networkgraph.Path;
+import net.onrc.onos.core.topology.Path;
 
 /**
  * @author Toshio Koide (t-koide@onlab.us)
diff --git a/src/main/java/net/onrc/onos/core/intent/PathIntentMap.java b/src/main/java/net/onrc/onos/core/intent/PathIntentMap.java
index 89e70fb..6f66cb7 100644
--- a/src/main/java/net/onrc/onos/core/intent/PathIntentMap.java
+++ b/src/main/java/net/onrc/onos/core/intent/PathIntentMap.java
@@ -5,9 +5,9 @@
 import java.util.HashMap;
 import java.util.HashSet;
 
-import net.onrc.onos.ofcontroller.networkgraph.Link;
-import net.onrc.onos.ofcontroller.networkgraph.LinkEvent;
-import net.onrc.onos.ofcontroller.networkgraph.PortEvent.SwitchPort;
+import net.onrc.onos.core.topology.Link;
+import net.onrc.onos.core.topology.LinkEvent;
+import net.onrc.onos.core.topology.PortEvent.SwitchPort;
 
 /**
  * @author Toshio Koide (t-koide@onlab.us)
diff --git a/src/main/java/net/onrc/onos/core/intent/runtime/PathCalcRuntime.java b/src/main/java/net/onrc/onos/core/intent/runtime/PathCalcRuntime.java
index 89a0b1a..e4ff80c 100644
--- a/src/main/java/net/onrc/onos/core/intent/runtime/PathCalcRuntime.java
+++ b/src/main/java/net/onrc/onos/core/intent/runtime/PathCalcRuntime.java
@@ -16,9 +16,9 @@
 import net.onrc.onos.core.intent.ErrorIntent.ErrorType;
 import net.onrc.onos.core.intent.Intent.IntentState;
 import net.onrc.onos.core.intent.IntentOperation.Operator;
-import net.onrc.onos.ofcontroller.networkgraph.NetworkGraph;
-import net.onrc.onos.ofcontroller.networkgraph.Path;
-import net.onrc.onos.ofcontroller.networkgraph.Switch;
+import net.onrc.onos.core.topology.NetworkGraph;
+import net.onrc.onos.core.topology.Path;
+import net.onrc.onos.core.topology.Switch;
 
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
diff --git a/src/main/java/net/onrc/onos/core/intent/runtime/PathCalcRuntimeModule.java b/src/main/java/net/onrc/onos/core/intent/runtime/PathCalcRuntimeModule.java
index 9f6353e..e773cf8 100755
--- a/src/main/java/net/onrc/onos/core/intent/runtime/PathCalcRuntimeModule.java
+++ b/src/main/java/net/onrc/onos/core/intent/runtime/PathCalcRuntimeModule.java
@@ -29,12 +29,12 @@
 import net.onrc.onos.core.intent.ShortestPathIntent;
 import net.onrc.onos.core.intent.Intent.IntentState;
 import net.onrc.onos.core.intent.IntentOperation.Operator;
-import net.onrc.onos.ofcontroller.networkgraph.DeviceEvent;
-import net.onrc.onos.ofcontroller.networkgraph.INetworkGraphListener;
-import net.onrc.onos.ofcontroller.networkgraph.INetworkGraphService;
-import net.onrc.onos.ofcontroller.networkgraph.LinkEvent;
-import net.onrc.onos.ofcontroller.networkgraph.PortEvent;
-import net.onrc.onos.ofcontroller.networkgraph.SwitchEvent;
+import net.onrc.onos.core.topology.DeviceEvent;
+import net.onrc.onos.core.topology.INetworkGraphListener;
+import net.onrc.onos.core.topology.INetworkGraphService;
+import net.onrc.onos.core.topology.LinkEvent;
+import net.onrc.onos.core.topology.PortEvent;
+import net.onrc.onos.core.topology.SwitchEvent;
 import net.onrc.onos.registry.controller.IControllerRegistryService;
 
 /**
diff --git a/src/main/java/net/onrc/onos/core/intent/runtime/PersistIntent.java b/src/main/java/net/onrc/onos/core/intent/runtime/PersistIntent.java
index 103d131..285c1f0 100755
--- a/src/main/java/net/onrc/onos/core/intent/runtime/PersistIntent.java
+++ b/src/main/java/net/onrc/onos/core/intent/runtime/PersistIntent.java
@@ -18,9 +18,9 @@
 import net.onrc.onos.core.datastore.IKVTable;
 import net.onrc.onos.core.datastore.ObjectExistsException;
 import net.onrc.onos.core.intent.IntentOperationList;
+import net.onrc.onos.core.topology.INetworkGraphService;
+import net.onrc.onos.core.topology.NetworkGraph;
 import net.onrc.onos.core.util.serializers.KryoFactory;
-import net.onrc.onos.ofcontroller.networkgraph.INetworkGraphService;
-import net.onrc.onos.ofcontroller.networkgraph.NetworkGraph;
 import net.onrc.onos.registry.controller.IControllerRegistryService;
 import net.onrc.onos.registry.controller.IdBlock;
 
diff --git a/src/main/java/net/onrc/onos/core/intent/runtime/PlanCalcRuntime.java b/src/main/java/net/onrc/onos/core/intent/runtime/PlanCalcRuntime.java
index 7c92115..aa757a0 100644
--- a/src/main/java/net/onrc/onos/core/intent/runtime/PlanCalcRuntime.java
+++ b/src/main/java/net/onrc/onos/core/intent/runtime/PlanCalcRuntime.java
@@ -18,8 +18,9 @@
 import net.onrc.onos.core.intent.PathIntent;
 import net.onrc.onos.core.intent.ShortestPathIntent;
 import net.onrc.onos.core.intent.IntentOperation.Operator;
-import net.onrc.onos.ofcontroller.networkgraph.LinkEvent;
-//import net.onrc.onos.ofcontroller.networkgraph.NetworkGraph;
+import net.onrc.onos.core.topology.LinkEvent;
+//import net.onrc.onos.core.topology.NetworkGraph;
+
 
 
 import org.slf4j.Logger;
diff --git a/src/main/java/net/onrc/onos/core/intent/runtime/PlanInstallModule.java b/src/main/java/net/onrc/onos/core/intent/runtime/PlanInstallModule.java
index eded26a..b397554 100644
--- a/src/main/java/net/onrc/onos/core/intent/runtime/PlanInstallModule.java
+++ b/src/main/java/net/onrc/onos/core/intent/runtime/PlanInstallModule.java
@@ -22,8 +22,9 @@
 import net.onrc.onos.core.intent.IntentOperation;
 import net.onrc.onos.core.intent.IntentOperationList;
 import net.onrc.onos.core.intent.Intent.IntentState;
-import net.onrc.onos.ofcontroller.networkgraph.INetworkGraphService;
-//import net.onrc.onos.ofcontroller.networkgraph.NetworkGraph;
+import net.onrc.onos.core.topology.INetworkGraphService;
+//import net.onrc.onos.core.topology.NetworkGraph;
+
 
 
 
diff --git a/src/main/java/net/onrc/onos/core/intent/runtime/PlanInstallRuntime.java b/src/main/java/net/onrc/onos/core/intent/runtime/PlanInstallRuntime.java
index 9f4a4d5..6d5c985 100644
--- a/src/main/java/net/onrc/onos/core/intent/runtime/PlanInstallRuntime.java
+++ b/src/main/java/net/onrc/onos/core/intent/runtime/PlanInstallRuntime.java
@@ -13,7 +13,7 @@
 import net.floodlightcontroller.core.internal.OFMessageFuture;
 import net.onrc.onos.core.flowprogrammer.IFlowPusherService;
 import net.onrc.onos.core.intent.FlowEntry;
-//import net.onrc.onos.ofcontroller.networkgraph.NetworkGraph;
+//import net.onrc.onos.core.topology.NetworkGraph;
 import net.onrc.onos.core.util.Pair;
 
 import org.openflow.protocol.OFBarrierReply;
diff --git a/src/main/java/net/onrc/onos/ofcontroller/networkgraph/Device.java b/src/main/java/net/onrc/onos/core/topology/Device.java
similarity index 95%
rename from src/main/java/net/onrc/onos/ofcontroller/networkgraph/Device.java
rename to src/main/java/net/onrc/onos/core/topology/Device.java
index c6e1ec2..25a27be 100644
--- a/src/main/java/net/onrc/onos/ofcontroller/networkgraph/Device.java
+++ b/src/main/java/net/onrc/onos/core/topology/Device.java
@@ -1,4 +1,4 @@
-package net.onrc.onos.ofcontroller.networkgraph;
+package net.onrc.onos.core.topology;
 
 import java.net.InetAddress;
 import java.util.Collection;
diff --git a/src/main/java/net/onrc/onos/ofcontroller/networkgraph/DeviceEvent.java b/src/main/java/net/onrc/onos/core/topology/DeviceEvent.java
similarity index 95%
rename from src/main/java/net/onrc/onos/ofcontroller/networkgraph/DeviceEvent.java
rename to src/main/java/net/onrc/onos/core/topology/DeviceEvent.java
index 1846d8b..f7331a0 100644
--- a/src/main/java/net/onrc/onos/ofcontroller/networkgraph/DeviceEvent.java
+++ b/src/main/java/net/onrc/onos/core/topology/DeviceEvent.java
@@ -1,4 +1,4 @@
-package net.onrc.onos.ofcontroller.networkgraph;
+package net.onrc.onos.core.topology;
 
 import java.net.InetAddress;
 import java.nio.ByteBuffer;
@@ -8,7 +8,7 @@
 import java.util.Set;
 
 import net.floodlightcontroller.util.MACAddress;
-import net.onrc.onos.ofcontroller.networkgraph.PortEvent.SwitchPort;
+import net.onrc.onos.core.topology.PortEvent.SwitchPort;
 
 /**
  * Self-contained Device event(s) Object
diff --git a/src/main/java/net/onrc/onos/ofcontroller/networkgraph/DeviceImpl.java b/src/main/java/net/onrc/onos/core/topology/DeviceImpl.java
similarity index 97%
rename from src/main/java/net/onrc/onos/ofcontroller/networkgraph/DeviceImpl.java
rename to src/main/java/net/onrc/onos/core/topology/DeviceImpl.java
index 8f46f31..5b96e08 100644
--- a/src/main/java/net/onrc/onos/ofcontroller/networkgraph/DeviceImpl.java
+++ b/src/main/java/net/onrc/onos/core/topology/DeviceImpl.java
@@ -1,4 +1,4 @@
-package net.onrc.onos.ofcontroller.networkgraph;
+package net.onrc.onos.core.topology;
 
 import java.net.InetAddress;
 import java.util.Collection;
diff --git a/src/main/java/net/onrc/onos/ofcontroller/networkgraph/INetworkGraphListener.java b/src/main/java/net/onrc/onos/core/topology/INetworkGraphListener.java
similarity index 97%
rename from src/main/java/net/onrc/onos/ofcontroller/networkgraph/INetworkGraphListener.java
rename to src/main/java/net/onrc/onos/core/topology/INetworkGraphListener.java
index b69cd80..c64b126 100644
--- a/src/main/java/net/onrc/onos/ofcontroller/networkgraph/INetworkGraphListener.java
+++ b/src/main/java/net/onrc/onos/core/topology/INetworkGraphListener.java
@@ -1,4 +1,4 @@
-package net.onrc.onos.ofcontroller.networkgraph;
+package net.onrc.onos.core.topology;
 
 import java.util.Collection;
 
diff --git a/src/main/java/net/onrc/onos/ofcontroller/networkgraph/INetworkGraphService.java b/src/main/java/net/onrc/onos/core/topology/INetworkGraphService.java
similarity index 94%
rename from src/main/java/net/onrc/onos/ofcontroller/networkgraph/INetworkGraphService.java
rename to src/main/java/net/onrc/onos/core/topology/INetworkGraphService.java
index 5d94f65..9d4cb3a 100644
--- a/src/main/java/net/onrc/onos/ofcontroller/networkgraph/INetworkGraphService.java
+++ b/src/main/java/net/onrc/onos/core/topology/INetworkGraphService.java
@@ -1,4 +1,4 @@
-package net.onrc.onos.ofcontroller.networkgraph;
+package net.onrc.onos.core.topology;
 
 import net.floodlightcontroller.core.module.IFloodlightService;
 
diff --git a/src/main/java/net/onrc/onos/ofcontroller/networkgraph/Link.java b/src/main/java/net/onrc/onos/core/topology/Link.java
similarity index 96%
rename from src/main/java/net/onrc/onos/ofcontroller/networkgraph/Link.java
rename to src/main/java/net/onrc/onos/core/topology/Link.java
index 996997a..f73bccf 100644
--- a/src/main/java/net/onrc/onos/ofcontroller/networkgraph/Link.java
+++ b/src/main/java/net/onrc/onos/core/topology/Link.java
@@ -1,4 +1,4 @@
-package net.onrc.onos.ofcontroller.networkgraph;
+package net.onrc.onos.core.topology;
 
 /**
  * Interface of Link Object exposed to the "NB" read-only Topology.
diff --git a/src/main/java/net/onrc/onos/ofcontroller/networkgraph/LinkEvent.java b/src/main/java/net/onrc/onos/core/topology/LinkEvent.java
similarity index 94%
rename from src/main/java/net/onrc/onos/ofcontroller/networkgraph/LinkEvent.java
rename to src/main/java/net/onrc/onos/core/topology/LinkEvent.java
index 03c1a43..bf43155 100644
--- a/src/main/java/net/onrc/onos/ofcontroller/networkgraph/LinkEvent.java
+++ b/src/main/java/net/onrc/onos/core/topology/LinkEvent.java
@@ -1,8 +1,8 @@
-package net.onrc.onos.ofcontroller.networkgraph;
+package net.onrc.onos.core.topology;
 
 import java.nio.ByteBuffer;
 
-import net.onrc.onos.ofcontroller.networkgraph.PortEvent.SwitchPort;
+import net.onrc.onos.core.topology.PortEvent.SwitchPort;
 
 /**
  * Self-contained Link event Object
diff --git a/src/main/java/net/onrc/onos/ofcontroller/networkgraph/LinkImpl.java b/src/main/java/net/onrc/onos/core/topology/LinkImpl.java
similarity index 97%
rename from src/main/java/net/onrc/onos/ofcontroller/networkgraph/LinkImpl.java
rename to src/main/java/net/onrc/onos/core/topology/LinkImpl.java
index bb598fe..d95d4fd 100644
--- a/src/main/java/net/onrc/onos/ofcontroller/networkgraph/LinkImpl.java
+++ b/src/main/java/net/onrc/onos/core/topology/LinkImpl.java
@@ -1,4 +1,4 @@
-package net.onrc.onos.ofcontroller.networkgraph;
+package net.onrc.onos.core.topology;
 
 /**
  * Link Object stored in In-memory Topology.
diff --git a/src/main/java/net/onrc/onos/ofcontroller/networkgraph/NetworkGraph.java b/src/main/java/net/onrc/onos/core/topology/NetworkGraph.java
similarity index 97%
rename from src/main/java/net/onrc/onos/ofcontroller/networkgraph/NetworkGraph.java
rename to src/main/java/net/onrc/onos/core/topology/NetworkGraph.java
index 11f4405..4e83263 100644
--- a/src/main/java/net/onrc/onos/ofcontroller/networkgraph/NetworkGraph.java
+++ b/src/main/java/net/onrc/onos/core/topology/NetworkGraph.java
@@ -1,4 +1,4 @@
-package net.onrc.onos.ofcontroller.networkgraph;
+package net.onrc.onos.core.topology;
 
 import java.net.InetAddress;
 
diff --git a/src/main/java/net/onrc/onos/ofcontroller/networkgraph/NetworkGraphDatastore.java b/src/main/java/net/onrc/onos/core/topology/NetworkGraphDatastore.java
similarity index 97%
rename from src/main/java/net/onrc/onos/ofcontroller/networkgraph/NetworkGraphDatastore.java
rename to src/main/java/net/onrc/onos/core/topology/NetworkGraphDatastore.java
index b9ed471..446dd1e 100644
--- a/src/main/java/net/onrc/onos/ofcontroller/networkgraph/NetworkGraphDatastore.java
+++ b/src/main/java/net/onrc/onos/core/topology/NetworkGraphDatastore.java
@@ -1,4 +1,4 @@
-package net.onrc.onos.ofcontroller.networkgraph;
+package net.onrc.onos.core.topology;
 
 import java.net.Inet4Address;
 import java.net.InetAddress;
@@ -15,7 +15,7 @@
 import net.onrc.onos.core.datastore.topology.KVPort.STATUS;
 import net.onrc.onos.core.datastore.utils.KVObject;
 import net.onrc.onos.core.datastore.utils.KVObject.WriteOp;
-import net.onrc.onos.ofcontroller.networkgraph.PortEvent.SwitchPort;
+import net.onrc.onos.core.topology.PortEvent.SwitchPort;
 
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
diff --git a/src/main/java/net/onrc/onos/ofcontroller/networkgraph/NetworkGraphDiscoveryInterface.java b/src/main/java/net/onrc/onos/core/topology/NetworkGraphDiscoveryInterface.java
similarity index 96%
rename from src/main/java/net/onrc/onos/ofcontroller/networkgraph/NetworkGraphDiscoveryInterface.java
rename to src/main/java/net/onrc/onos/core/topology/NetworkGraphDiscoveryInterface.java
index cabcd38..14ef0ea 100644
--- a/src/main/java/net/onrc/onos/ofcontroller/networkgraph/NetworkGraphDiscoveryInterface.java
+++ b/src/main/java/net/onrc/onos/core/topology/NetworkGraphDiscoveryInterface.java
@@ -1,4 +1,4 @@
-package net.onrc.onos.ofcontroller.networkgraph;
+package net.onrc.onos.core.topology;
 
 import java.util.Collection;
 
diff --git a/src/main/java/net/onrc/onos/ofcontroller/networkgraph/NetworkGraphImpl.java b/src/main/java/net/onrc/onos/core/topology/NetworkGraphImpl.java
similarity index 98%
rename from src/main/java/net/onrc/onos/ofcontroller/networkgraph/NetworkGraphImpl.java
rename to src/main/java/net/onrc/onos/core/topology/NetworkGraphImpl.java
index da4df84..902ffa6 100644
--- a/src/main/java/net/onrc/onos/ofcontroller/networkgraph/NetworkGraphImpl.java
+++ b/src/main/java/net/onrc/onos/core/topology/NetworkGraphImpl.java
@@ -1,4 +1,4 @@
-package net.onrc.onos.ofcontroller.networkgraph;
+package net.onrc.onos.core.topology;
 
 import java.net.InetAddress;
 import java.util.Collections;
diff --git a/src/main/java/net/onrc/onos/ofcontroller/networkgraph/NetworkGraphModule.java b/src/main/java/net/onrc/onos/core/topology/NetworkGraphModule.java
similarity index 95%
rename from src/main/java/net/onrc/onos/ofcontroller/networkgraph/NetworkGraphModule.java
rename to src/main/java/net/onrc/onos/core/topology/NetworkGraphModule.java
index c437d3f..8fa6408 100644
--- a/src/main/java/net/onrc/onos/ofcontroller/networkgraph/NetworkGraphModule.java
+++ b/src/main/java/net/onrc/onos/core/topology/NetworkGraphModule.java
@@ -1,4 +1,4 @@
-package net.onrc.onos.ofcontroller.networkgraph;
+package net.onrc.onos.core.topology;
 
 import java.util.ArrayList;
 import java.util.Collection;
@@ -13,7 +13,7 @@
 import net.floodlightcontroller.core.module.IFloodlightService;
 import net.floodlightcontroller.restserver.IRestApiService;
 import net.onrc.onos.core.datagrid.IDatagridService;
-import net.onrc.onos.ofcontroller.networkgraph.web.NetworkGraphWebRoutable;
+import net.onrc.onos.core.topology.web.NetworkGraphWebRoutable;
 import net.onrc.onos.registry.controller.IControllerRegistryService;
 
 public class NetworkGraphModule implements IFloodlightModule, INetworkGraphService {
diff --git a/src/main/java/net/onrc/onos/ofcontroller/networkgraph/NetworkGraphObject.java b/src/main/java/net/onrc/onos/core/topology/NetworkGraphObject.java
similarity index 75%
rename from src/main/java/net/onrc/onos/ofcontroller/networkgraph/NetworkGraphObject.java
rename to src/main/java/net/onrc/onos/core/topology/NetworkGraphObject.java
index 4bea422..fde4a44 100644
--- a/src/main/java/net/onrc/onos/ofcontroller/networkgraph/NetworkGraphObject.java
+++ b/src/main/java/net/onrc/onos/core/topology/NetworkGraphObject.java
@@ -1,4 +1,4 @@
-package net.onrc.onos.ofcontroller.networkgraph;
+package net.onrc.onos.core.topology;
 
 
 public class NetworkGraphObject {
diff --git a/src/main/java/net/onrc/onos/ofcontroller/floodlightlistener/NetworkGraphPublisher.java b/src/main/java/net/onrc/onos/core/topology/NetworkGraphPublisher.java
similarity index 94%
rename from src/main/java/net/onrc/onos/ofcontroller/floodlightlistener/NetworkGraphPublisher.java
rename to src/main/java/net/onrc/onos/core/topology/NetworkGraphPublisher.java
index 62f4f16..0727a27 100644
--- a/src/main/java/net/onrc/onos/ofcontroller/floodlightlistener/NetworkGraphPublisher.java
+++ b/src/main/java/net/onrc/onos/core/topology/NetworkGraphPublisher.java
@@ -1,4 +1,4 @@
-package net.onrc.onos.ofcontroller.floodlightlistener;
+package net.onrc.onos.core.topology;
 
 import java.net.InetAddress;
 import java.util.ArrayList;
@@ -21,15 +21,7 @@
 import net.onrc.onos.core.linkdiscovery.ILinkDiscoveryListener;
 import net.onrc.onos.core.linkdiscovery.ILinkDiscoveryService;
 import net.onrc.onos.core.main.IOFSwitchPortListener;
-import net.onrc.onos.ofcontroller.networkgraph.DeviceEvent;
-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.NetworkGraphDiscoveryInterface;
-import net.onrc.onos.ofcontroller.networkgraph.PortEvent;
-import net.onrc.onos.ofcontroller.networkgraph.PortEvent.SwitchPort;
-import net.onrc.onos.ofcontroller.networkgraph.Switch;
-import net.onrc.onos.ofcontroller.networkgraph.SwitchEvent;
+import net.onrc.onos.core.topology.PortEvent.SwitchPort;
 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/onrc/onos/ofcontroller/networkgraph/Path.java b/src/main/java/net/onrc/onos/core/topology/Path.java
similarity index 91%
rename from src/main/java/net/onrc/onos/ofcontroller/networkgraph/Path.java
rename to src/main/java/net/onrc/onos/core/topology/Path.java
index c250903..1d15fc7 100644
--- a/src/main/java/net/onrc/onos/ofcontroller/networkgraph/Path.java
+++ b/src/main/java/net/onrc/onos/core/topology/Path.java
@@ -1,4 +1,4 @@
-package net.onrc.onos.ofcontroller.networkgraph;
+package net.onrc.onos.core.topology;
 
 import java.util.Iterator;
 import java.util.LinkedList;
diff --git a/src/main/java/net/onrc/onos/ofcontroller/networkgraph/Port.java b/src/main/java/net/onrc/onos/core/topology/Port.java
similarity index 90%
rename from src/main/java/net/onrc/onos/ofcontroller/networkgraph/Port.java
rename to src/main/java/net/onrc/onos/core/topology/Port.java
index 91f36b9..e9f6bb8 100644
--- a/src/main/java/net/onrc/onos/ofcontroller/networkgraph/Port.java
+++ b/src/main/java/net/onrc/onos/core/topology/Port.java
@@ -1,4 +1,4 @@
-package net.onrc.onos.ofcontroller.networkgraph;
+package net.onrc.onos.core.topology;
 
 
 
diff --git a/src/main/java/net/onrc/onos/ofcontroller/networkgraph/PortEvent.java b/src/main/java/net/onrc/onos/core/topology/PortEvent.java
similarity index 98%
rename from src/main/java/net/onrc/onos/ofcontroller/networkgraph/PortEvent.java
rename to src/main/java/net/onrc/onos/core/topology/PortEvent.java
index 801bc1c..65d0b94 100644
--- a/src/main/java/net/onrc/onos/ofcontroller/networkgraph/PortEvent.java
+++ b/src/main/java/net/onrc/onos/core/topology/PortEvent.java
@@ -1,4 +1,4 @@
-package net.onrc.onos.ofcontroller.networkgraph;
+package net.onrc.onos.core.topology;
 
 import java.nio.ByteBuffer;
 
diff --git a/src/main/java/net/onrc/onos/ofcontroller/networkgraph/PortImpl.java b/src/main/java/net/onrc/onos/core/topology/PortImpl.java
similarity index 97%
rename from src/main/java/net/onrc/onos/ofcontroller/networkgraph/PortImpl.java
rename to src/main/java/net/onrc/onos/core/topology/PortImpl.java
index ca7cd25..cd7d82b 100644
--- a/src/main/java/net/onrc/onos/ofcontroller/networkgraph/PortImpl.java
+++ b/src/main/java/net/onrc/onos/core/topology/PortImpl.java
@@ -1,4 +1,4 @@
-package net.onrc.onos.ofcontroller.networkgraph;
+package net.onrc.onos.core.topology;
 
 import java.util.Collections;
 import java.util.HashSet;
diff --git a/src/main/java/net/onrc/onos/ofcontroller/networkgraph/Switch.java b/src/main/java/net/onrc/onos/core/topology/Switch.java
similarity index 93%
rename from src/main/java/net/onrc/onos/ofcontroller/networkgraph/Switch.java
rename to src/main/java/net/onrc/onos/core/topology/Switch.java
index 8e7b153..0b97dfa 100644
--- a/src/main/java/net/onrc/onos/ofcontroller/networkgraph/Switch.java
+++ b/src/main/java/net/onrc/onos/core/topology/Switch.java
@@ -1,4 +1,4 @@
-package net.onrc.onos.ofcontroller.networkgraph;
+package net.onrc.onos.core.topology;
 
 import java.util.Collection;
 
diff --git a/src/main/java/net/onrc/onos/ofcontroller/networkgraph/SwitchEvent.java b/src/main/java/net/onrc/onos/core/topology/SwitchEvent.java
similarity index 95%
rename from src/main/java/net/onrc/onos/ofcontroller/networkgraph/SwitchEvent.java
rename to src/main/java/net/onrc/onos/core/topology/SwitchEvent.java
index f483e77..b36eba2 100644
--- a/src/main/java/net/onrc/onos/ofcontroller/networkgraph/SwitchEvent.java
+++ b/src/main/java/net/onrc/onos/core/topology/SwitchEvent.java
@@ -1,4 +1,4 @@
-package net.onrc.onos.ofcontroller.networkgraph;
+package net.onrc.onos.core.topology;
 
 import java.nio.ByteBuffer;
 
diff --git a/src/main/java/net/onrc/onos/ofcontroller/networkgraph/SwitchImpl.java b/src/main/java/net/onrc/onos/core/topology/SwitchImpl.java
similarity index 97%
rename from src/main/java/net/onrc/onos/ofcontroller/networkgraph/SwitchImpl.java
rename to src/main/java/net/onrc/onos/core/topology/SwitchImpl.java
index 500e6d2..8a45b76 100644
--- a/src/main/java/net/onrc/onos/ofcontroller/networkgraph/SwitchImpl.java
+++ b/src/main/java/net/onrc/onos/core/topology/SwitchImpl.java
@@ -1,4 +1,4 @@
-package net.onrc.onos.ofcontroller.networkgraph;
+package net.onrc.onos.core.topology;
 
 import java.util.ArrayList;
 import java.util.Collection;
diff --git a/src/main/java/net/onrc/onos/ofcontroller/networkgraph/TopologyEvent.java b/src/main/java/net/onrc/onos/core/topology/TopologyEvent.java
similarity index 97%
rename from src/main/java/net/onrc/onos/ofcontroller/networkgraph/TopologyEvent.java
rename to src/main/java/net/onrc/onos/core/topology/TopologyEvent.java
index 68da896..84cd5cb 100644
--- a/src/main/java/net/onrc/onos/ofcontroller/networkgraph/TopologyEvent.java
+++ b/src/main/java/net/onrc/onos/core/topology/TopologyEvent.java
@@ -1,4 +1,4 @@
-package net.onrc.onos.ofcontroller.networkgraph;
+package net.onrc.onos.core.topology;
 
 /**
  * Self-contained Topology event Object
diff --git a/src/main/java/net/onrc/onos/ofcontroller/networkgraph/TopologyManager.java b/src/main/java/net/onrc/onos/core/topology/TopologyManager.java
similarity index 99%
rename from src/main/java/net/onrc/onos/ofcontroller/networkgraph/TopologyManager.java
rename to src/main/java/net/onrc/onos/core/topology/TopologyManager.java
index d002c2e..9699c6c 100644
--- a/src/main/java/net/onrc/onos/ofcontroller/networkgraph/TopologyManager.java
+++ b/src/main/java/net/onrc/onos/core/topology/TopologyManager.java
@@ -1,4 +1,4 @@
-package net.onrc.onos.ofcontroller.networkgraph;
+package net.onrc.onos.core.topology;
 
 import java.net.InetAddress;
 import java.nio.ByteBuffer;
@@ -20,8 +20,8 @@
 import net.onrc.onos.core.datastore.topology.KVLink;
 import net.onrc.onos.core.datastore.topology.KVPort;
 import net.onrc.onos.core.datastore.topology.KVSwitch;
+import net.onrc.onos.core.topology.PortEvent.SwitchPort;
 import net.onrc.onos.core.util.EventEntry;
-import net.onrc.onos.ofcontroller.networkgraph.PortEvent.SwitchPort;
 import net.onrc.onos.registry.controller.IControllerRegistryService;
 
 import org.slf4j.Logger;
diff --git a/src/main/java/net/onrc/onos/ofcontroller/networkgraph/serializers/LinkSerializer.java b/src/main/java/net/onrc/onos/core/topology/serializers/LinkSerializer.java
similarity index 89%
rename from src/main/java/net/onrc/onos/ofcontroller/networkgraph/serializers/LinkSerializer.java
rename to src/main/java/net/onrc/onos/core/topology/serializers/LinkSerializer.java
index 57bcbe8..93bce90 100644
--- a/src/main/java/net/onrc/onos/ofcontroller/networkgraph/serializers/LinkSerializer.java
+++ b/src/main/java/net/onrc/onos/core/topology/serializers/LinkSerializer.java
@@ -1,8 +1,8 @@
-package net.onrc.onos.ofcontroller.networkgraph.serializers;
+package net.onrc.onos.core.topology.serializers;
 
 import java.io.IOException;
 
-import net.onrc.onos.ofcontroller.networkgraph.Link;
+import net.onrc.onos.core.topology.Link;
 
 import org.codehaus.jackson.JsonGenerationException;
 import org.codehaus.jackson.JsonGenerator;
diff --git a/src/main/java/net/onrc/onos/ofcontroller/networkgraph/serializers/PortSerializer.java b/src/main/java/net/onrc/onos/core/topology/serializers/PortSerializer.java
similarity index 87%
rename from src/main/java/net/onrc/onos/ofcontroller/networkgraph/serializers/PortSerializer.java
rename to src/main/java/net/onrc/onos/core/topology/serializers/PortSerializer.java
index 7469dbe..25e64d0 100644
--- a/src/main/java/net/onrc/onos/ofcontroller/networkgraph/serializers/PortSerializer.java
+++ b/src/main/java/net/onrc/onos/core/topology/serializers/PortSerializer.java
@@ -1,8 +1,8 @@
-package net.onrc.onos.ofcontroller.networkgraph.serializers;
+package net.onrc.onos.core.topology.serializers;
 
 import java.io.IOException;
 
-import net.onrc.onos.ofcontroller.networkgraph.Port;
+import net.onrc.onos.core.topology.Port;
 
 import org.codehaus.jackson.JsonGenerator;
 import org.codehaus.jackson.JsonProcessingException;
diff --git a/src/main/java/net/onrc/onos/ofcontroller/networkgraph/serializers/SwitchSerializer.java b/src/main/java/net/onrc/onos/core/topology/serializers/SwitchSerializer.java
similarity index 84%
rename from src/main/java/net/onrc/onos/ofcontroller/networkgraph/serializers/SwitchSerializer.java
rename to src/main/java/net/onrc/onos/core/topology/serializers/SwitchSerializer.java
index 774377d..e36d35c 100644
--- a/src/main/java/net/onrc/onos/ofcontroller/networkgraph/serializers/SwitchSerializer.java
+++ b/src/main/java/net/onrc/onos/core/topology/serializers/SwitchSerializer.java
@@ -1,9 +1,9 @@
-package net.onrc.onos.ofcontroller.networkgraph.serializers;
+package net.onrc.onos.core.topology.serializers;
 
 import java.io.IOException;
 
-import net.onrc.onos.ofcontroller.networkgraph.Port;
-import net.onrc.onos.ofcontroller.networkgraph.Switch;
+import net.onrc.onos.core.topology.Port;
+import net.onrc.onos.core.topology.Switch;
 
 import org.codehaus.jackson.JsonGenerator;
 import org.codehaus.jackson.JsonProcessingException;
diff --git a/src/main/java/net/onrc/onos/ofcontroller/networkgraph/web/DatastoreLinksResource.java b/src/main/java/net/onrc/onos/core/topology/web/DatastoreLinksResource.java
similarity index 84%
rename from src/main/java/net/onrc/onos/ofcontroller/networkgraph/web/DatastoreLinksResource.java
rename to src/main/java/net/onrc/onos/core/topology/web/DatastoreLinksResource.java
index 94823b8..4837055 100644
--- a/src/main/java/net/onrc/onos/ofcontroller/networkgraph/web/DatastoreLinksResource.java
+++ b/src/main/java/net/onrc/onos/core/topology/web/DatastoreLinksResource.java
@@ -1,4 +1,4 @@
-package net.onrc.onos.ofcontroller.networkgraph.web;
+package net.onrc.onos.core.topology.web;
 
 import net.onrc.onos.core.datastore.topology.KVLink;
 
diff --git a/src/main/java/net/onrc/onos/ofcontroller/networkgraph/web/DatastorePortsResource.java b/src/main/java/net/onrc/onos/core/topology/web/DatastorePortsResource.java
similarity index 84%
rename from src/main/java/net/onrc/onos/ofcontroller/networkgraph/web/DatastorePortsResource.java
rename to src/main/java/net/onrc/onos/core/topology/web/DatastorePortsResource.java
index f5a68fb..46eaf1a 100644
--- a/src/main/java/net/onrc/onos/ofcontroller/networkgraph/web/DatastorePortsResource.java
+++ b/src/main/java/net/onrc/onos/core/topology/web/DatastorePortsResource.java
@@ -1,4 +1,4 @@
-package net.onrc.onos.ofcontroller.networkgraph.web;
+package net.onrc.onos.core.topology.web;
 
 import net.onrc.onos.core.datastore.topology.KVPort;
 
diff --git a/src/main/java/net/onrc/onos/ofcontroller/networkgraph/web/DatastoreSwitchesResource.java b/src/main/java/net/onrc/onos/core/topology/web/DatastoreSwitchesResource.java
similarity index 84%
rename from src/main/java/net/onrc/onos/ofcontroller/networkgraph/web/DatastoreSwitchesResource.java
rename to src/main/java/net/onrc/onos/core/topology/web/DatastoreSwitchesResource.java
index e373cec..fe2cfcd 100644
--- a/src/main/java/net/onrc/onos/ofcontroller/networkgraph/web/DatastoreSwitchesResource.java
+++ b/src/main/java/net/onrc/onos/core/topology/web/DatastoreSwitchesResource.java
@@ -1,4 +1,4 @@
-package net.onrc.onos.ofcontroller.networkgraph.web;
+package net.onrc.onos.core.topology.web;
 
 import net.onrc.onos.core.datastore.topology.KVSwitch;
 
diff --git a/src/main/java/net/onrc/onos/ofcontroller/networkgraph/web/NetworkGraphLinksResource.java b/src/main/java/net/onrc/onos/core/topology/web/NetworkGraphLinksResource.java
similarity index 81%
rename from src/main/java/net/onrc/onos/ofcontroller/networkgraph/web/NetworkGraphLinksResource.java
rename to src/main/java/net/onrc/onos/core/topology/web/NetworkGraphLinksResource.java
index 16da940..5886aa5 100644
--- a/src/main/java/net/onrc/onos/ofcontroller/networkgraph/web/NetworkGraphLinksResource.java
+++ b/src/main/java/net/onrc/onos/core/topology/web/NetworkGraphLinksResource.java
@@ -1,10 +1,10 @@
-package net.onrc.onos.ofcontroller.networkgraph.web;
+package net.onrc.onos.core.topology.web;
 
 import java.io.IOException;
 
-import net.onrc.onos.ofcontroller.networkgraph.INetworkGraphService;
-import net.onrc.onos.ofcontroller.networkgraph.NetworkGraph;
-import net.onrc.onos.ofcontroller.networkgraph.serializers.LinkSerializer;
+import net.onrc.onos.core.topology.INetworkGraphService;
+import net.onrc.onos.core.topology.NetworkGraph;
+import net.onrc.onos.core.topology.serializers.LinkSerializer;
 
 import org.codehaus.jackson.Version;
 import org.codehaus.jackson.map.ObjectMapper;
diff --git a/src/main/java/net/onrc/onos/ofcontroller/networkgraph/web/NetworkGraphShortestPathResource.java b/src/main/java/net/onrc/onos/core/topology/web/NetworkGraphShortestPathResource.java
similarity index 82%
rename from src/main/java/net/onrc/onos/ofcontroller/networkgraph/web/NetworkGraphShortestPathResource.java
rename to src/main/java/net/onrc/onos/core/topology/web/NetworkGraphShortestPathResource.java
index f5a6479..1d4164b 100644
--- a/src/main/java/net/onrc/onos/ofcontroller/networkgraph/web/NetworkGraphShortestPathResource.java
+++ b/src/main/java/net/onrc/onos/core/topology/web/NetworkGraphShortestPathResource.java
@@ -1,18 +1,18 @@
-package net.onrc.onos.ofcontroller.networkgraph.web;
+package net.onrc.onos.core.topology.web;
 
 import java.io.IOException;
 import java.util.LinkedList;
 import java.util.List;
 
 import net.onrc.onos.core.intent.ConstrainedBFSTree;
+import net.onrc.onos.core.topology.INetworkGraphService;
+import net.onrc.onos.core.topology.Link;
+import net.onrc.onos.core.topology.LinkEvent;
+import net.onrc.onos.core.topology.NetworkGraph;
+import net.onrc.onos.core.topology.Path;
+import net.onrc.onos.core.topology.Switch;
+import net.onrc.onos.core.topology.serializers.LinkSerializer;
 import net.onrc.onos.core.util.Dpid;
-import net.onrc.onos.ofcontroller.networkgraph.INetworkGraphService;
-import net.onrc.onos.ofcontroller.networkgraph.Link;
-import net.onrc.onos.ofcontroller.networkgraph.LinkEvent;
-import net.onrc.onos.ofcontroller.networkgraph.NetworkGraph;
-import net.onrc.onos.ofcontroller.networkgraph.Path;
-import net.onrc.onos.ofcontroller.networkgraph.Switch;
-import net.onrc.onos.ofcontroller.networkgraph.serializers.LinkSerializer;
 
 import org.codehaus.jackson.Version;
 import org.codehaus.jackson.map.ObjectMapper;
diff --git a/src/main/java/net/onrc/onos/ofcontroller/networkgraph/web/NetworkGraphSwitchesResource.java b/src/main/java/net/onrc/onos/core/topology/web/NetworkGraphSwitchesResource.java
similarity index 78%
rename from src/main/java/net/onrc/onos/ofcontroller/networkgraph/web/NetworkGraphSwitchesResource.java
rename to src/main/java/net/onrc/onos/core/topology/web/NetworkGraphSwitchesResource.java
index 3e2a57c..059771f 100644
--- a/src/main/java/net/onrc/onos/ofcontroller/networkgraph/web/NetworkGraphSwitchesResource.java
+++ b/src/main/java/net/onrc/onos/core/topology/web/NetworkGraphSwitchesResource.java
@@ -1,11 +1,11 @@
-package net.onrc.onos.ofcontroller.networkgraph.web;
+package net.onrc.onos.core.topology.web;
 
 import java.io.IOException;
 
-import net.onrc.onos.ofcontroller.networkgraph.INetworkGraphService;
-import net.onrc.onos.ofcontroller.networkgraph.NetworkGraph;
-import net.onrc.onos.ofcontroller.networkgraph.serializers.PortSerializer;
-import net.onrc.onos.ofcontroller.networkgraph.serializers.SwitchSerializer;
+import net.onrc.onos.core.topology.INetworkGraphService;
+import net.onrc.onos.core.topology.NetworkGraph;
+import net.onrc.onos.core.topology.serializers.PortSerializer;
+import net.onrc.onos.core.topology.serializers.SwitchSerializer;
 
 import org.codehaus.jackson.Version;
 import org.codehaus.jackson.map.ObjectMapper;
diff --git a/src/main/java/net/onrc/onos/ofcontroller/networkgraph/web/NetworkGraphWebRoutable.java b/src/main/java/net/onrc/onos/core/topology/web/NetworkGraphWebRoutable.java
similarity index 95%
rename from src/main/java/net/onrc/onos/ofcontroller/networkgraph/web/NetworkGraphWebRoutable.java
rename to src/main/java/net/onrc/onos/core/topology/web/NetworkGraphWebRoutable.java
index 95cb392..51bb3f5 100644
--- a/src/main/java/net/onrc/onos/ofcontroller/networkgraph/web/NetworkGraphWebRoutable.java
+++ b/src/main/java/net/onrc/onos/core/topology/web/NetworkGraphWebRoutable.java
@@ -1,4 +1,4 @@
-package net.onrc.onos.ofcontroller.networkgraph.web;
+package net.onrc.onos.core.topology.web;
 
 import org.restlet.Context;
 import org.restlet.Restlet;
diff --git a/src/main/java/net/onrc/onos/core/util/serializers/KryoFactory.java b/src/main/java/net/onrc/onos/core/util/serializers/KryoFactory.java
index 4cd4a00..4475a72 100644
--- a/src/main/java/net/onrc/onos/core/util/serializers/KryoFactory.java
+++ b/src/main/java/net/onrc/onos/core/util/serializers/KryoFactory.java
@@ -20,6 +20,12 @@
 import net.onrc.onos.core.intent.PathIntent;
 import net.onrc.onos.core.intent.ShortestPathIntent;
 import net.onrc.onos.core.intent.runtime.IntentStateList;
+import net.onrc.onos.core.topology.DeviceEvent;
+import net.onrc.onos.core.topology.LinkEvent;
+import net.onrc.onos.core.topology.Path;
+import net.onrc.onos.core.topology.PortEvent;
+import net.onrc.onos.core.topology.SwitchEvent;
+import net.onrc.onos.core.topology.TopologyEvent;
 import net.onrc.onos.core.util.CallerId;
 import net.onrc.onos.core.util.DataPath;
 import net.onrc.onos.core.util.DataPathEndpoints;
@@ -43,12 +49,6 @@
 import net.onrc.onos.core.util.IPv6Net;
 import net.onrc.onos.core.util.Port;
 import net.onrc.onos.core.util.Switch;
-import net.onrc.onos.ofcontroller.networkgraph.DeviceEvent;
-import net.onrc.onos.ofcontroller.networkgraph.LinkEvent;
-import net.onrc.onos.ofcontroller.networkgraph.Path;
-import net.onrc.onos.ofcontroller.networkgraph.PortEvent;
-import net.onrc.onos.ofcontroller.networkgraph.SwitchEvent;
-import net.onrc.onos.ofcontroller.networkgraph.TopologyEvent;
 // import net.onrc.onos.core.util.SwitchPort;
 
 
@@ -64,6 +64,7 @@
 
 
 
+
 import com.esotericsoftware.kryo.Kryo;
 
 /**
diff --git a/src/main/resources/META-INF/services/net.floodlightcontroller.core.module.IFloodlightModule b/src/main/resources/META-INF/services/net.floodlightcontroller.core.module.IFloodlightModule
index 0101abd..fa5692d 100644
--- a/src/main/resources/META-INF/services/net.floodlightcontroller.core.module.IFloodlightModule
+++ b/src/main/resources/META-INF/services/net.floodlightcontroller.core.module.IFloodlightModule
@@ -1,5 +1,5 @@
 net.floodlightcontroller.core.FloodlightProvider
-net.onrc.onos.ofcontroller.floodlightlistener.NetworkGraphPublisher
+net.onrc.onos.core.topology.NetworkGraphPublisher
 net.onrc.onos.core.linkdiscovery.internal.LinkDiscoveryManager
 net.floodlightcontroller.topology.TopologyManager
 net.floodlightcontroller.forwarding.Forwarding
@@ -18,6 +18,6 @@
 net.onrc.onos.apps.proxyarp.ProxyArpManager
 net.onrc.onos.core.main.config.DefaultConfiguration
 net.onrc.onos.core.devicemanager.OnosDeviceManager
-net.onrc.onos.ofcontroller.networkgraph.NetworkGraphModule
+net.onrc.onos.core.topology.NetworkGraphModule
 net.onrc.onos.core.intent.runtime.PathCalcRuntimeModule
 net.onrc.onos.core.intent.runtime.PlanInstallModule
diff --git a/src/test/java/net/onrc/onos/core/intent/ConstrainedBFSTreeTest.java b/src/test/java/net/onrc/onos/core/intent/ConstrainedBFSTreeTest.java
index 473b32b..dab2098 100644
--- a/src/test/java/net/onrc/onos/core/intent/ConstrainedBFSTreeTest.java
+++ b/src/test/java/net/onrc/onos/core/intent/ConstrainedBFSTreeTest.java
@@ -7,8 +7,8 @@
 import net.onrc.onos.core.intent.PathIntent;
 import net.onrc.onos.core.intent.PathIntentMap;
 import net.onrc.onos.core.intent.IntentOperation.Operator;
-import net.onrc.onos.ofcontroller.networkgraph.LinkEvent;
-import net.onrc.onos.ofcontroller.networkgraph.Path;
+import net.onrc.onos.core.topology.LinkEvent;
+import net.onrc.onos.core.topology.Path;
 
 import org.junit.After;
 import org.junit.Before;
diff --git a/src/test/java/net/onrc/onos/core/intent/IntentOperationListTest.java b/src/test/java/net/onrc/onos/core/intent/IntentOperationListTest.java
index aa87cbd..273fa07 100644
--- a/src/test/java/net/onrc/onos/core/intent/IntentOperationListTest.java
+++ b/src/test/java/net/onrc/onos/core/intent/IntentOperationListTest.java
@@ -6,9 +6,9 @@
 import net.onrc.onos.core.intent.IntentOperation;
 import net.onrc.onos.core.intent.IntentOperationList;
 import net.onrc.onos.core.intent.PathIntent;
+import net.onrc.onos.core.topology.LinkEvent;
+import net.onrc.onos.core.topology.Path;
 import net.onrc.onos.core.util.serializers.KryoFactory;
-import net.onrc.onos.ofcontroller.networkgraph.LinkEvent;
-import net.onrc.onos.ofcontroller.networkgraph.Path;
 
 import org.junit.After;
 import org.junit.Before;
diff --git a/src/test/java/net/onrc/onos/core/intent/MockNetworkGraph.java b/src/test/java/net/onrc/onos/core/intent/MockNetworkGraph.java
index fce9cc2..3b40259 100644
--- a/src/test/java/net/onrc/onos/core/intent/MockNetworkGraph.java
+++ b/src/test/java/net/onrc/onos/core/intent/MockNetworkGraph.java
@@ -1,12 +1,12 @@
 package net.onrc.onos.core.intent;
 
-import net.onrc.onos.ofcontroller.networkgraph.NetworkGraph;
-import net.onrc.onos.ofcontroller.networkgraph.NetworkGraphImpl;
-import net.onrc.onos.ofcontroller.networkgraph.Link;
-import net.onrc.onos.ofcontroller.networkgraph.LinkImpl;
-import net.onrc.onos.ofcontroller.networkgraph.Port;
-import net.onrc.onos.ofcontroller.networkgraph.Switch;
-import net.onrc.onos.ofcontroller.networkgraph.SwitchImpl;
+import net.onrc.onos.core.topology.Link;
+import net.onrc.onos.core.topology.LinkImpl;
+import net.onrc.onos.core.topology.NetworkGraph;
+import net.onrc.onos.core.topology.NetworkGraphImpl;
+import net.onrc.onos.core.topology.Port;
+import net.onrc.onos.core.topology.Switch;
+import net.onrc.onos.core.topology.SwitchImpl;
 
 /**
  * A mock class of NetworkGraph.
diff --git a/src/test/java/net/onrc/onos/core/intent/PathIntentMapTest.java b/src/test/java/net/onrc/onos/core/intent/PathIntentMapTest.java
index 32f7e0f..3c6a445 100644
--- a/src/test/java/net/onrc/onos/core/intent/PathIntentMapTest.java
+++ b/src/test/java/net/onrc/onos/core/intent/PathIntentMapTest.java
@@ -10,11 +10,11 @@
 import net.onrc.onos.core.intent.PathIntent;
 import net.onrc.onos.core.intent.PathIntentMap;
 import net.onrc.onos.core.intent.IntentOperation.Operator;
-import net.onrc.onos.ofcontroller.networkgraph.Link;
-import net.onrc.onos.ofcontroller.networkgraph.LinkEvent;
-import net.onrc.onos.ofcontroller.networkgraph.Path;
-import net.onrc.onos.ofcontroller.networkgraph.Port;
-import net.onrc.onos.ofcontroller.networkgraph.Switch;
+import net.onrc.onos.core.topology.Link;
+import net.onrc.onos.core.topology.LinkEvent;
+import net.onrc.onos.core.topology.Path;
+import net.onrc.onos.core.topology.Port;
+import net.onrc.onos.core.topology.Switch;
 
 import org.junit.After;
 import org.junit.Before;
diff --git a/src/test/java/net/onrc/onos/core/intent/PathIntentTest.java b/src/test/java/net/onrc/onos/core/intent/PathIntentTest.java
index 520d87d..0bff4f4 100644
--- a/src/test/java/net/onrc/onos/core/intent/PathIntentTest.java
+++ b/src/test/java/net/onrc/onos/core/intent/PathIntentTest.java
@@ -3,9 +3,9 @@
 import static org.junit.Assert.assertEquals;
 import net.onrc.onos.core.intent.ConstrainedShortestPathIntent;
 import net.onrc.onos.core.intent.PathIntent;
+import net.onrc.onos.core.topology.LinkEvent;
+import net.onrc.onos.core.topology.Path;
 import net.onrc.onos.core.util.serializers.KryoFactory;
-import net.onrc.onos.ofcontroller.networkgraph.LinkEvent;
-import net.onrc.onos.ofcontroller.networkgraph.Path;
 
 import org.junit.After;
 import org.junit.Before;
diff --git a/src/test/java/net/onrc/onos/core/intent/runtime/PathCalcRuntimeModuleTest.java b/src/test/java/net/onrc/onos/core/intent/runtime/PathCalcRuntimeModuleTest.java
index be8ad9a..9060a51 100644
--- a/src/test/java/net/onrc/onos/core/intent/runtime/PathCalcRuntimeModuleTest.java
+++ b/src/test/java/net/onrc/onos/core/intent/runtime/PathCalcRuntimeModuleTest.java
@@ -15,12 +15,12 @@
 import net.onrc.onos.core.intent.runtime.IntentStateList;
 import net.onrc.onos.core.intent.runtime.PathCalcRuntimeModule;
 import net.onrc.onos.core.intent.runtime.PersistIntent;
-import net.onrc.onos.ofcontroller.networkgraph.DeviceEvent;
-import net.onrc.onos.ofcontroller.networkgraph.INetworkGraphListener;
-import net.onrc.onos.ofcontroller.networkgraph.INetworkGraphService;
-import net.onrc.onos.ofcontroller.networkgraph.LinkEvent;
-import net.onrc.onos.ofcontroller.networkgraph.PortEvent;
-import net.onrc.onos.ofcontroller.networkgraph.SwitchEvent;
+import net.onrc.onos.core.topology.DeviceEvent;
+import net.onrc.onos.core.topology.INetworkGraphListener;
+import net.onrc.onos.core.topology.INetworkGraphService;
+import net.onrc.onos.core.topology.LinkEvent;
+import net.onrc.onos.core.topology.PortEvent;
+import net.onrc.onos.core.topology.SwitchEvent;
 import net.onrc.onos.registry.controller.IControllerRegistryService;
 
 import org.junit.After;
diff --git a/src/test/java/net/onrc/onos/core/intent/runtime/UseCaseTest.java b/src/test/java/net/onrc/onos/core/intent/runtime/UseCaseTest.java
index 2505bb4..b8afdf2 100755
--- a/src/test/java/net/onrc/onos/core/intent/runtime/UseCaseTest.java
+++ b/src/test/java/net/onrc/onos/core/intent/runtime/UseCaseTest.java
@@ -25,13 +25,13 @@
 import net.onrc.onos.core.intent.runtime.PathCalcRuntimeModule;
 import net.onrc.onos.core.intent.runtime.PersistIntent;
 import net.onrc.onos.core.intent.runtime.PlanCalcRuntime;
-import net.onrc.onos.ofcontroller.networkgraph.DeviceEvent;
-import net.onrc.onos.ofcontroller.networkgraph.INetworkGraphListener;
-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.PortEvent;
-import net.onrc.onos.ofcontroller.networkgraph.SwitchEvent;
+import net.onrc.onos.core.topology.DeviceEvent;
+import net.onrc.onos.core.topology.INetworkGraphListener;
+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.PortEvent;
+import net.onrc.onos.core.topology.SwitchEvent;
 import net.onrc.onos.registry.controller.IControllerRegistryService;
 
 import org.junit.After;