diff --git a/conf/findbugs/exclude.xml b/conf/findbugs/exclude.xml
index 7fe430a..ce20793 100644
--- a/conf/findbugs/exclude.xml
+++ b/conf/findbugs/exclude.xml
@@ -7,7 +7,7 @@
           (under build and reporting)
      -->
      <Match>
-       <Class name="~net.onrc.onos.datastore.RCProtos(.*)?" />
+       <Class name="~net.onrc.onos.core.datastore.RCProtos(.*)?" />
      </Match>
      <Match>
        <Class name="~.*edu\.stanford\..*"/>
diff --git a/conf/onos.properties b/conf/onos.properties
index 953ab78..129551b 100644
--- a/conf/onos.properties
+++ b/conf/onos.properties
@@ -1,7 +1,7 @@
 floodlight.modules = net.floodlightcontroller.core.FloodlightProvider,\
 net.floodlightcontroller.threadpool.ThreadPool,\
 net.onrc.onos.ofcontroller.floodlightlistener.NetworkGraphPublisher, \
-net.onrc.onos.datagrid.HazelcastDatagrid,\
+net.onrc.onos.core.datagrid.HazelcastDatagrid,\
 net.onrc.onos.ofcontroller.flowprogrammer.FlowProgrammer,\
 net.onrc.onos.intent.runtime.PathCalcRuntimeModule,\
 net.onrc.onos.intent.runtime.PlanInstallModule,\
@@ -11,4 +11,4 @@
 net.floodlightcontroller.core.FloodlightProvider.workerthreads = 16
 net.floodlightcontroller.forwarding.Forwarding.idletimeout = 5
 net.floodlightcontroller.forwarding.Forwarding.hardtimeout = 0
-net.onrc.onos.datagrid.HazelcastDatagrid.datagridConfig = conf/hazelcast.xml
+net.onrc.onos.core.datagrid.HazelcastDatagrid.datagridConfig = conf/hazelcast.xml
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 3d1623c..e2efdbb 100644
--- a/src/main/java/net/onrc/onos/apps/forwarding/Forwarding.java
+++ b/src/main/java/net/onrc/onos/apps/forwarding/Forwarding.java
@@ -21,9 +21,9 @@
 import net.floodlightcontroller.util.MACAddress;
 import net.onrc.onos.apps.proxyarp.BroadcastPacketOutNotification;
 import net.onrc.onos.apps.proxyarp.IProxyArpService;
-import net.onrc.onos.datagrid.IDatagridService;
-import net.onrc.onos.datagrid.IEventChannel;
-import net.onrc.onos.datagrid.IEventChannelListener;
+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.intent.Intent;
 import net.onrc.onos.intent.IntentMap;
 import net.onrc.onos.intent.IntentOperation;
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 ef3bb83..2a897a5 100644
--- a/src/main/java/net/onrc/onos/apps/proxyarp/ProxyArpManager.java
+++ b/src/main/java/net/onrc/onos/apps/proxyarp/ProxyArpManager.java
@@ -23,9 +23,9 @@
 import net.floodlightcontroller.restserver.IRestApiService;
 import net.floodlightcontroller.util.MACAddress;
 import net.onrc.onos.apps.bgproute.Interface;
-import net.onrc.onos.datagrid.IDatagridService;
-import net.onrc.onos.datagrid.IEventChannel;
-import net.onrc.onos.datagrid.IEventChannelListener;
+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.ofcontroller.core.config.IConfigInfoService;
 import net.onrc.onos.ofcontroller.devicemanager.IOnosDeviceService;
 import net.onrc.onos.ofcontroller.flowprogrammer.IFlowPusherService;
diff --git a/src/main/java/net/onrc/onos/datagrid/HazelcastDatagrid.java b/src/main/java/net/onrc/onos/core/datagrid/HazelcastDatagrid.java
similarity index 98%
rename from src/main/java/net/onrc/onos/datagrid/HazelcastDatagrid.java
rename to src/main/java/net/onrc/onos/core/datagrid/HazelcastDatagrid.java
index 31de685..7d2b7f3 100755
--- a/src/main/java/net/onrc/onos/datagrid/HazelcastDatagrid.java
+++ b/src/main/java/net/onrc/onos/core/datagrid/HazelcastDatagrid.java
@@ -1,4 +1,4 @@
-package net.onrc.onos.datagrid;
+package net.onrc.onos.core.datagrid;
 
 import java.io.FileNotFoundException;
 import java.util.ArrayList;
@@ -12,7 +12,7 @@
 import net.floodlightcontroller.core.module.IFloodlightModule;
 import net.floodlightcontroller.core.module.IFloodlightService;
 import net.floodlightcontroller.restserver.IRestApiService;
-import net.onrc.onos.datagrid.web.DatagridWebRoutable;
+import net.onrc.onos.core.datagrid.web.DatagridWebRoutable;
 
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
diff --git a/src/main/java/net/onrc/onos/datagrid/HazelcastEventChannel.java b/src/main/java/net/onrc/onos/core/datagrid/HazelcastEventChannel.java
similarity index 99%
rename from src/main/java/net/onrc/onos/datagrid/HazelcastEventChannel.java
rename to src/main/java/net/onrc/onos/core/datagrid/HazelcastEventChannel.java
index 88fb544..8797dba 100644
--- a/src/main/java/net/onrc/onos/datagrid/HazelcastEventChannel.java
+++ b/src/main/java/net/onrc/onos/core/datagrid/HazelcastEventChannel.java
@@ -1,4 +1,4 @@
-package net.onrc.onos.datagrid;
+package net.onrc.onos.core.datagrid;
 
 import java.util.Collection;
 import java.util.LinkedList;
diff --git a/src/main/java/net/onrc/onos/datagrid/IDatagridService.java b/src/main/java/net/onrc/onos/core/datagrid/IDatagridService.java
similarity index 97%
rename from src/main/java/net/onrc/onos/datagrid/IDatagridService.java
rename to src/main/java/net/onrc/onos/core/datagrid/IDatagridService.java
index 7c067ae..5fe52cc 100755
--- a/src/main/java/net/onrc/onos/datagrid/IDatagridService.java
+++ b/src/main/java/net/onrc/onos/core/datagrid/IDatagridService.java
@@ -1,4 +1,4 @@
-package net.onrc.onos.datagrid;
+package net.onrc.onos.core.datagrid;
 
 import net.floodlightcontroller.core.module.IFloodlightService;
 
diff --git a/src/main/java/net/onrc/onos/datagrid/IEventChannel.java b/src/main/java/net/onrc/onos/core/datagrid/IEventChannel.java
similarity index 98%
rename from src/main/java/net/onrc/onos/datagrid/IEventChannel.java
rename to src/main/java/net/onrc/onos/core/datagrid/IEventChannel.java
index c76c7a6..5874b31 100644
--- a/src/main/java/net/onrc/onos/datagrid/IEventChannel.java
+++ b/src/main/java/net/onrc/onos/core/datagrid/IEventChannel.java
@@ -1,4 +1,4 @@
-package net.onrc.onos.datagrid;
+package net.onrc.onos.core.datagrid;
 
 import java.util.Collection;
 
diff --git a/src/main/java/net/onrc/onos/datagrid/IEventChannelListener.java b/src/main/java/net/onrc/onos/core/datagrid/IEventChannelListener.java
similarity index 93%
rename from src/main/java/net/onrc/onos/datagrid/IEventChannelListener.java
rename to src/main/java/net/onrc/onos/core/datagrid/IEventChannelListener.java
index 3f785ee..ca18aa7 100644
--- a/src/main/java/net/onrc/onos/datagrid/IEventChannelListener.java
+++ b/src/main/java/net/onrc/onos/core/datagrid/IEventChannelListener.java
@@ -1,4 +1,4 @@
-package net.onrc.onos.datagrid;
+package net.onrc.onos.core.datagrid;
 
 /**
  * Event Channel Listener Interface.
diff --git a/src/main/java/net/onrc/onos/datagrid/web/DatagridWebRoutable.java b/src/main/java/net/onrc/onos/core/datagrid/web/DatagridWebRoutable.java
similarity index 96%
rename from src/main/java/net/onrc/onos/datagrid/web/DatagridWebRoutable.java
rename to src/main/java/net/onrc/onos/core/datagrid/web/DatagridWebRoutable.java
index 5491d34..672f66d 100755
--- a/src/main/java/net/onrc/onos/datagrid/web/DatagridWebRoutable.java
+++ b/src/main/java/net/onrc/onos/core/datagrid/web/DatagridWebRoutable.java
@@ -1,4 +1,4 @@
-package net.onrc.onos.datagrid.web;
+package net.onrc.onos.core.datagrid.web;
 
 import net.floodlightcontroller.restserver.RestletRoutable;
 
diff --git a/src/main/java/net/onrc/onos/datagrid/web/GetNGEventsResource.java b/src/main/java/net/onrc/onos/core/datagrid/web/GetNGEventsResource.java
similarity index 88%
rename from src/main/java/net/onrc/onos/datagrid/web/GetNGEventsResource.java
rename to src/main/java/net/onrc/onos/core/datagrid/web/GetNGEventsResource.java
index bbf03cb..f319d23 100644
--- a/src/main/java/net/onrc/onos/datagrid/web/GetNGEventsResource.java
+++ b/src/main/java/net/onrc/onos/core/datagrid/web/GetNGEventsResource.java
@@ -1,9 +1,9 @@
-package net.onrc.onos.datagrid.web;
+package net.onrc.onos.core.datagrid.web;
 
 import java.util.Collection;
 
-import net.onrc.onos.datagrid.IDatagridService;
-import net.onrc.onos.datagrid.IEventChannel;
+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;
 
diff --git a/src/main/java/net/onrc/onos/datagrid/web/GetNGFlowsSummaryResource.java b/src/main/java/net/onrc/onos/core/datagrid/web/GetNGFlowsSummaryResource.java
similarity index 98%
rename from src/main/java/net/onrc/onos/datagrid/web/GetNGFlowsSummaryResource.java
rename to src/main/java/net/onrc/onos/core/datagrid/web/GetNGFlowsSummaryResource.java
index 2b38caa..0ebeec9 100644
--- a/src/main/java/net/onrc/onos/datagrid/web/GetNGFlowsSummaryResource.java
+++ b/src/main/java/net/onrc/onos/core/datagrid/web/GetNGFlowsSummaryResource.java
@@ -1,4 +1,4 @@
-package net.onrc.onos.datagrid.web;
+package net.onrc.onos.core.datagrid.web;
 
 import java.util.ArrayList;
 import java.util.SortedMap;
diff --git a/src/main/java/net/onrc/onos/datagrid/web/IntentResource.java b/src/main/java/net/onrc/onos/core/datagrid/web/IntentResource.java
similarity index 99%
rename from src/main/java/net/onrc/onos/datagrid/web/IntentResource.java
rename to src/main/java/net/onrc/onos/core/datagrid/web/IntentResource.java
index dd73704..7d338b5 100755
--- a/src/main/java/net/onrc/onos/datagrid/web/IntentResource.java
+++ b/src/main/java/net/onrc/onos/core/datagrid/web/IntentResource.java
@@ -2,7 +2,7 @@
  * To change this template, choose Tools | Templates
  * and open the template in the editor.
  */
-package net.onrc.onos.datagrid.web;
+package net.onrc.onos.core.datagrid.web;
 
 import java.io.IOException;
 import java.util.Collection;
diff --git a/src/main/java/net/onrc/onos/datastore/DataStoreClient.java b/src/main/java/net/onrc/onos/core/datastore/DataStoreClient.java
similarity index 74%
rename from src/main/java/net/onrc/onos/datastore/DataStoreClient.java
rename to src/main/java/net/onrc/onos/core/datastore/DataStoreClient.java
index bdf5df5..7ec6251 100644
--- a/src/main/java/net/onrc/onos/datastore/DataStoreClient.java
+++ b/src/main/java/net/onrc/onos/core/datastore/DataStoreClient.java
@@ -1,11 +1,11 @@
-package net.onrc.onos.datastore;
+package net.onrc.onos.core.datastore;
 
-import net.onrc.onos.datastore.hazelcast.HZClient;
-import net.onrc.onos.datastore.ramcloud.RCClient;
+import net.onrc.onos.core.datastore.hazelcast.HZClient;
+import net.onrc.onos.core.datastore.ramcloud.RCClient;
 
 // This class probably need to be a service
 public class DataStoreClient {
-    private static final String BACKEND = System.getProperty("net.onrc.onos.datastore.backend", "hazelcast");
+    private static final String BACKEND = System.getProperty("net.onrc.onos.core.datastore.backend", "hazelcast");
 
     // Suppresses default constructor, ensuring non-instantiability.
     private DataStoreClient() {}
diff --git a/src/main/java/net/onrc/onos/datastore/IKVClient.java b/src/main/java/net/onrc/onos/core/datastore/IKVClient.java
similarity index 97%
rename from src/main/java/net/onrc/onos/datastore/IKVClient.java
rename to src/main/java/net/onrc/onos/core/datastore/IKVClient.java
index d2602c9..e298548 100644
--- a/src/main/java/net/onrc/onos/datastore/IKVClient.java
+++ b/src/main/java/net/onrc/onos/core/datastore/IKVClient.java
@@ -1,9 +1,9 @@
-package net.onrc.onos.datastore;
+package net.onrc.onos.core.datastore;
 
 import java.util.Collection;
 import java.util.List;
 
-import net.onrc.onos.datastore.IKVTable.IKVEntry;
+import net.onrc.onos.core.datastore.IKVTable.IKVEntry;
 
 /**
  * Interface for a client class used to access the Key-Value store
diff --git a/src/main/java/net/onrc/onos/datastore/IKVTable.java b/src/main/java/net/onrc/onos/core/datastore/IKVTable.java
similarity index 98%
rename from src/main/java/net/onrc/onos/datastore/IKVTable.java
rename to src/main/java/net/onrc/onos/core/datastore/IKVTable.java
index 3151808..864b270 100644
--- a/src/main/java/net/onrc/onos/datastore/IKVTable.java
+++ b/src/main/java/net/onrc/onos/core/datastore/IKVTable.java
@@ -1,4 +1,4 @@
-package net.onrc.onos.datastore;
+package net.onrc.onos.core.datastore;
 
 
 /**
diff --git a/src/main/java/net/onrc/onos/datastore/IKVTableID.java b/src/main/java/net/onrc/onos/core/datastore/IKVTableID.java
similarity index 64%
rename from src/main/java/net/onrc/onos/datastore/IKVTableID.java
rename to src/main/java/net/onrc/onos/core/datastore/IKVTableID.java
index d66370c..c736908 100644
--- a/src/main/java/net/onrc/onos/datastore/IKVTableID.java
+++ b/src/main/java/net/onrc/onos/core/datastore/IKVTableID.java
@@ -1,4 +1,4 @@
-package net.onrc.onos.datastore;
+package net.onrc.onos.core.datastore;
 
 public interface IKVTableID {
 
diff --git a/src/main/java/net/onrc/onos/datastore/IMultiEntryOperation.java b/src/main/java/net/onrc/onos/core/datastore/IMultiEntryOperation.java
similarity index 93%
rename from src/main/java/net/onrc/onos/datastore/IMultiEntryOperation.java
rename to src/main/java/net/onrc/onos/core/datastore/IMultiEntryOperation.java
index dab1aad..535fe95 100644
--- a/src/main/java/net/onrc/onos/datastore/IMultiEntryOperation.java
+++ b/src/main/java/net/onrc/onos/core/datastore/IMultiEntryOperation.java
@@ -1,4 +1,4 @@
-package net.onrc.onos.datastore;
+package net.onrc.onos.core.datastore;
 
 /**
  * Interface for a class to specify which K-V pair to batch read/write/delete.
diff --git a/src/main/java/net/onrc/onos/core/datastore/IMultiObjectOperation.java b/src/main/java/net/onrc/onos/core/datastore/IMultiObjectOperation.java
new file mode 100644
index 0000000..898327f
--- /dev/null
+++ b/src/main/java/net/onrc/onos/core/datastore/IMultiObjectOperation.java
@@ -0,0 +1,9 @@
+package net.onrc.onos.core.datastore;
+
+import net.onrc.onos.core.datastore.utils.KVObject;
+
+public interface IMultiObjectOperation {
+
+    public KVObject getObject();
+
+}
\ No newline at end of file
diff --git a/src/main/java/net/onrc/onos/datastore/ObjectDoesntExistException.java b/src/main/java/net/onrc/onos/core/datastore/ObjectDoesntExistException.java
similarity index 88%
rename from src/main/java/net/onrc/onos/datastore/ObjectDoesntExistException.java
rename to src/main/java/net/onrc/onos/core/datastore/ObjectDoesntExistException.java
index 030680f..06d21ca 100644
--- a/src/main/java/net/onrc/onos/datastore/ObjectDoesntExistException.java
+++ b/src/main/java/net/onrc/onos/core/datastore/ObjectDoesntExistException.java
@@ -1,6 +1,6 @@
-package net.onrc.onos.datastore;
+package net.onrc.onos.core.datastore;
 
-import net.onrc.onos.datastore.utils.ByteArrayUtil;
+import net.onrc.onos.core.datastore.utils.ByteArrayUtil;
 
 /**
  * Exception thrown when object was expected, but not found in data store.
diff --git a/src/main/java/net/onrc/onos/datastore/ObjectExistsException.java b/src/main/java/net/onrc/onos/core/datastore/ObjectExistsException.java
similarity index 88%
rename from src/main/java/net/onrc/onos/datastore/ObjectExistsException.java
rename to src/main/java/net/onrc/onos/core/datastore/ObjectExistsException.java
index 8ce6055..75c4e4d 100644
--- a/src/main/java/net/onrc/onos/datastore/ObjectExistsException.java
+++ b/src/main/java/net/onrc/onos/core/datastore/ObjectExistsException.java
@@ -1,6 +1,6 @@
-package net.onrc.onos.datastore;
+package net.onrc.onos.core.datastore;
 
-import net.onrc.onos.datastore.utils.ByteArrayUtil;
+import net.onrc.onos.core.datastore.utils.ByteArrayUtil;
 
 /**
  * Exception thrown when object was not expected to be in data store.
diff --git a/src/main/java/net/onrc/onos/datastore/RCProtos.java b/src/main/java/net/onrc/onos/core/datastore/RCProtos.java
similarity index 86%
rename from src/main/java/net/onrc/onos/datastore/RCProtos.java
rename to src/main/java/net/onrc/onos/core/datastore/RCProtos.java
index a451b05..5e823ee 100644
--- a/src/main/java/net/onrc/onos/datastore/RCProtos.java
+++ b/src/main/java/net/onrc/onos/core/datastore/RCProtos.java
@@ -1,7 +1,7 @@
 // Generated by the protocol buffer compiler.  DO NOT EDIT!
 // source: protobuf/ramcloud.proto
 
-package net.onrc.onos.datastore;
+package net.onrc.onos.core.datastore;
 
 public final class RCProtos {
   private RCProtos() {}
@@ -121,14 +121,14 @@
     }
     public static final com.google.protobuf.Descriptors.Descriptor
         getDescriptor() {
-      return net.onrc.onos.datastore.RCProtos.internal_static_ProtoBuffer_SwitchProperty_descriptor;
+      return net.onrc.onos.core.datastore.RCProtos.internal_static_ProtoBuffer_SwitchProperty_descriptor;
     }
 
     protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
         internalGetFieldAccessorTable() {
-      return net.onrc.onos.datastore.RCProtos.internal_static_ProtoBuffer_SwitchProperty_fieldAccessorTable
+      return net.onrc.onos.core.datastore.RCProtos.internal_static_ProtoBuffer_SwitchProperty_fieldAccessorTable
           .ensureFieldAccessorsInitialized(
-              net.onrc.onos.datastore.RCProtos.SwitchProperty.class, net.onrc.onos.datastore.RCProtos.SwitchProperty.Builder.class);
+              net.onrc.onos.core.datastore.RCProtos.SwitchProperty.class, net.onrc.onos.core.datastore.RCProtos.SwitchProperty.Builder.class);
     }
 
     public static com.google.protobuf.Parser<SwitchProperty> PARSER =
@@ -262,53 +262,53 @@
       return super.writeReplace();
     }
 
-    public static net.onrc.onos.datastore.RCProtos.SwitchProperty parseFrom(
+    public static net.onrc.onos.core.datastore.RCProtos.SwitchProperty parseFrom(
         com.google.protobuf.ByteString data)
         throws com.google.protobuf.InvalidProtocolBufferException {
       return PARSER.parseFrom(data);
     }
-    public static net.onrc.onos.datastore.RCProtos.SwitchProperty parseFrom(
+    public static net.onrc.onos.core.datastore.RCProtos.SwitchProperty parseFrom(
         com.google.protobuf.ByteString data,
         com.google.protobuf.ExtensionRegistryLite extensionRegistry)
         throws com.google.protobuf.InvalidProtocolBufferException {
       return PARSER.parseFrom(data, extensionRegistry);
     }
-    public static net.onrc.onos.datastore.RCProtos.SwitchProperty parseFrom(byte[] data)
+    public static net.onrc.onos.core.datastore.RCProtos.SwitchProperty parseFrom(byte[] data)
         throws com.google.protobuf.InvalidProtocolBufferException {
       return PARSER.parseFrom(data);
     }
-    public static net.onrc.onos.datastore.RCProtos.SwitchProperty parseFrom(
+    public static net.onrc.onos.core.datastore.RCProtos.SwitchProperty parseFrom(
         byte[] data,
         com.google.protobuf.ExtensionRegistryLite extensionRegistry)
         throws com.google.protobuf.InvalidProtocolBufferException {
       return PARSER.parseFrom(data, extensionRegistry);
     }
-    public static net.onrc.onos.datastore.RCProtos.SwitchProperty parseFrom(java.io.InputStream input)
+    public static net.onrc.onos.core.datastore.RCProtos.SwitchProperty parseFrom(java.io.InputStream input)
         throws java.io.IOException {
       return PARSER.parseFrom(input);
     }
-    public static net.onrc.onos.datastore.RCProtos.SwitchProperty parseFrom(
+    public static net.onrc.onos.core.datastore.RCProtos.SwitchProperty parseFrom(
         java.io.InputStream input,
         com.google.protobuf.ExtensionRegistryLite extensionRegistry)
         throws java.io.IOException {
       return PARSER.parseFrom(input, extensionRegistry);
     }
-    public static net.onrc.onos.datastore.RCProtos.SwitchProperty parseDelimitedFrom(java.io.InputStream input)
+    public static net.onrc.onos.core.datastore.RCProtos.SwitchProperty parseDelimitedFrom(java.io.InputStream input)
         throws java.io.IOException {
       return PARSER.parseDelimitedFrom(input);
     }
-    public static net.onrc.onos.datastore.RCProtos.SwitchProperty parseDelimitedFrom(
+    public static net.onrc.onos.core.datastore.RCProtos.SwitchProperty parseDelimitedFrom(
         java.io.InputStream input,
         com.google.protobuf.ExtensionRegistryLite extensionRegistry)
         throws java.io.IOException {
       return PARSER.parseDelimitedFrom(input, extensionRegistry);
     }
-    public static net.onrc.onos.datastore.RCProtos.SwitchProperty parseFrom(
+    public static net.onrc.onos.core.datastore.RCProtos.SwitchProperty parseFrom(
         com.google.protobuf.CodedInputStream input)
         throws java.io.IOException {
       return PARSER.parseFrom(input);
     }
-    public static net.onrc.onos.datastore.RCProtos.SwitchProperty parseFrom(
+    public static net.onrc.onos.core.datastore.RCProtos.SwitchProperty parseFrom(
         com.google.protobuf.CodedInputStream input,
         com.google.protobuf.ExtensionRegistryLite extensionRegistry)
         throws java.io.IOException {
@@ -317,7 +317,7 @@
 
     public static Builder newBuilder() { return Builder.create(); }
     public Builder newBuilderForType() { return newBuilder(); }
-    public static Builder newBuilder(net.onrc.onos.datastore.RCProtos.SwitchProperty prototype) {
+    public static Builder newBuilder(net.onrc.onos.core.datastore.RCProtos.SwitchProperty prototype) {
       return newBuilder().mergeFrom(prototype);
     }
     public Builder toBuilder() { return newBuilder(this); }
@@ -333,20 +333,20 @@
      */
     public static final class Builder extends
         com.google.protobuf.GeneratedMessage.Builder<Builder>
-       implements net.onrc.onos.datastore.RCProtos.SwitchPropertyOrBuilder {
+       implements net.onrc.onos.core.datastore.RCProtos.SwitchPropertyOrBuilder {
       public static final com.google.protobuf.Descriptors.Descriptor
           getDescriptor() {
-        return net.onrc.onos.datastore.RCProtos.internal_static_ProtoBuffer_SwitchProperty_descriptor;
+        return net.onrc.onos.core.datastore.RCProtos.internal_static_ProtoBuffer_SwitchProperty_descriptor;
       }
 
       protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
           internalGetFieldAccessorTable() {
-        return net.onrc.onos.datastore.RCProtos.internal_static_ProtoBuffer_SwitchProperty_fieldAccessorTable
+        return net.onrc.onos.core.datastore.RCProtos.internal_static_ProtoBuffer_SwitchProperty_fieldAccessorTable
             .ensureFieldAccessorsInitialized(
-                net.onrc.onos.datastore.RCProtos.SwitchProperty.class, net.onrc.onos.datastore.RCProtos.SwitchProperty.Builder.class);
+                net.onrc.onos.core.datastore.RCProtos.SwitchProperty.class, net.onrc.onos.core.datastore.RCProtos.SwitchProperty.Builder.class);
       }
 
-      // Construct using net.onrc.onos.datastore.RCProtos.SwitchProperty.newBuilder()
+      // Construct using net.onrc.onos.core.datastore.RCProtos.SwitchProperty.newBuilder()
       private Builder() {
         maybeForceBuilderInitialization();
       }
@@ -381,23 +381,23 @@
 
       public com.google.protobuf.Descriptors.Descriptor
           getDescriptorForType() {
-        return net.onrc.onos.datastore.RCProtos.internal_static_ProtoBuffer_SwitchProperty_descriptor;
+        return net.onrc.onos.core.datastore.RCProtos.internal_static_ProtoBuffer_SwitchProperty_descriptor;
       }
 
-      public net.onrc.onos.datastore.RCProtos.SwitchProperty getDefaultInstanceForType() {
-        return net.onrc.onos.datastore.RCProtos.SwitchProperty.getDefaultInstance();
+      public net.onrc.onos.core.datastore.RCProtos.SwitchProperty getDefaultInstanceForType() {
+        return net.onrc.onos.core.datastore.RCProtos.SwitchProperty.getDefaultInstance();
       }
 
-      public net.onrc.onos.datastore.RCProtos.SwitchProperty build() {
-        net.onrc.onos.datastore.RCProtos.SwitchProperty result = buildPartial();
+      public net.onrc.onos.core.datastore.RCProtos.SwitchProperty build() {
+        net.onrc.onos.core.datastore.RCProtos.SwitchProperty result = buildPartial();
         if (!result.isInitialized()) {
           throw newUninitializedMessageException(result);
         }
         return result;
       }
 
-      public net.onrc.onos.datastore.RCProtos.SwitchProperty buildPartial() {
-        net.onrc.onos.datastore.RCProtos.SwitchProperty result = new net.onrc.onos.datastore.RCProtos.SwitchProperty(this);
+      public net.onrc.onos.core.datastore.RCProtos.SwitchProperty buildPartial() {
+        net.onrc.onos.core.datastore.RCProtos.SwitchProperty result = new net.onrc.onos.core.datastore.RCProtos.SwitchProperty(this);
         int from_bitField0_ = bitField0_;
         int to_bitField0_ = 0;
         if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
@@ -418,16 +418,16 @@
       }
 
       public Builder mergeFrom(com.google.protobuf.Message other) {
-        if (other instanceof net.onrc.onos.datastore.RCProtos.SwitchProperty) {
-          return mergeFrom((net.onrc.onos.datastore.RCProtos.SwitchProperty)other);
+        if (other instanceof net.onrc.onos.core.datastore.RCProtos.SwitchProperty) {
+          return mergeFrom((net.onrc.onos.core.datastore.RCProtos.SwitchProperty)other);
         } else {
           super.mergeFrom(other);
           return this;
         }
       }
 
-      public Builder mergeFrom(net.onrc.onos.datastore.RCProtos.SwitchProperty other) {
-        if (other == net.onrc.onos.datastore.RCProtos.SwitchProperty.getDefaultInstance()) return this;
+      public Builder mergeFrom(net.onrc.onos.core.datastore.RCProtos.SwitchProperty other) {
+        if (other == net.onrc.onos.core.datastore.RCProtos.SwitchProperty.getDefaultInstance()) return this;
         if (other.hasDpid()) {
           setDpid(other.getDpid());
         }
@@ -457,11 +457,11 @@
           com.google.protobuf.CodedInputStream input,
           com.google.protobuf.ExtensionRegistryLite extensionRegistry)
           throws java.io.IOException {
-        net.onrc.onos.datastore.RCProtos.SwitchProperty parsedMessage = null;
+        net.onrc.onos.core.datastore.RCProtos.SwitchProperty parsedMessage = null;
         try {
           parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
         } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-          parsedMessage = (net.onrc.onos.datastore.RCProtos.SwitchProperty) e.getUnfinishedMessage();
+          parsedMessage = (net.onrc.onos.core.datastore.RCProtos.SwitchProperty) e.getUnfinishedMessage();
           throw e;
         } finally {
           if (parsedMessage != null) {
@@ -713,14 +713,14 @@
     }
     public static final com.google.protobuf.Descriptors.Descriptor
         getDescriptor() {
-      return net.onrc.onos.datastore.RCProtos.internal_static_ProtoBuffer_PortProperty_descriptor;
+      return net.onrc.onos.core.datastore.RCProtos.internal_static_ProtoBuffer_PortProperty_descriptor;
     }
 
     protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
         internalGetFieldAccessorTable() {
-      return net.onrc.onos.datastore.RCProtos.internal_static_ProtoBuffer_PortProperty_fieldAccessorTable
+      return net.onrc.onos.core.datastore.RCProtos.internal_static_ProtoBuffer_PortProperty_fieldAccessorTable
           .ensureFieldAccessorsInitialized(
-              net.onrc.onos.datastore.RCProtos.PortProperty.class, net.onrc.onos.datastore.RCProtos.PortProperty.Builder.class);
+              net.onrc.onos.core.datastore.RCProtos.PortProperty.class, net.onrc.onos.core.datastore.RCProtos.PortProperty.Builder.class);
     }
 
     public static com.google.protobuf.Parser<PortProperty> PARSER =
@@ -882,53 +882,53 @@
       return super.writeReplace();
     }
 
-    public static net.onrc.onos.datastore.RCProtos.PortProperty parseFrom(
+    public static net.onrc.onos.core.datastore.RCProtos.PortProperty parseFrom(
         com.google.protobuf.ByteString data)
         throws com.google.protobuf.InvalidProtocolBufferException {
       return PARSER.parseFrom(data);
     }
-    public static net.onrc.onos.datastore.RCProtos.PortProperty parseFrom(
+    public static net.onrc.onos.core.datastore.RCProtos.PortProperty parseFrom(
         com.google.protobuf.ByteString data,
         com.google.protobuf.ExtensionRegistryLite extensionRegistry)
         throws com.google.protobuf.InvalidProtocolBufferException {
       return PARSER.parseFrom(data, extensionRegistry);
     }
-    public static net.onrc.onos.datastore.RCProtos.PortProperty parseFrom(byte[] data)
+    public static net.onrc.onos.core.datastore.RCProtos.PortProperty parseFrom(byte[] data)
         throws com.google.protobuf.InvalidProtocolBufferException {
       return PARSER.parseFrom(data);
     }
-    public static net.onrc.onos.datastore.RCProtos.PortProperty parseFrom(
+    public static net.onrc.onos.core.datastore.RCProtos.PortProperty parseFrom(
         byte[] data,
         com.google.protobuf.ExtensionRegistryLite extensionRegistry)
         throws com.google.protobuf.InvalidProtocolBufferException {
       return PARSER.parseFrom(data, extensionRegistry);
     }
-    public static net.onrc.onos.datastore.RCProtos.PortProperty parseFrom(java.io.InputStream input)
+    public static net.onrc.onos.core.datastore.RCProtos.PortProperty parseFrom(java.io.InputStream input)
         throws java.io.IOException {
       return PARSER.parseFrom(input);
     }
-    public static net.onrc.onos.datastore.RCProtos.PortProperty parseFrom(
+    public static net.onrc.onos.core.datastore.RCProtos.PortProperty parseFrom(
         java.io.InputStream input,
         com.google.protobuf.ExtensionRegistryLite extensionRegistry)
         throws java.io.IOException {
       return PARSER.parseFrom(input, extensionRegistry);
     }
-    public static net.onrc.onos.datastore.RCProtos.PortProperty parseDelimitedFrom(java.io.InputStream input)
+    public static net.onrc.onos.core.datastore.RCProtos.PortProperty parseDelimitedFrom(java.io.InputStream input)
         throws java.io.IOException {
       return PARSER.parseDelimitedFrom(input);
     }
-    public static net.onrc.onos.datastore.RCProtos.PortProperty parseDelimitedFrom(
+    public static net.onrc.onos.core.datastore.RCProtos.PortProperty parseDelimitedFrom(
         java.io.InputStream input,
         com.google.protobuf.ExtensionRegistryLite extensionRegistry)
         throws java.io.IOException {
       return PARSER.parseDelimitedFrom(input, extensionRegistry);
     }
-    public static net.onrc.onos.datastore.RCProtos.PortProperty parseFrom(
+    public static net.onrc.onos.core.datastore.RCProtos.PortProperty parseFrom(
         com.google.protobuf.CodedInputStream input)
         throws java.io.IOException {
       return PARSER.parseFrom(input);
     }
-    public static net.onrc.onos.datastore.RCProtos.PortProperty parseFrom(
+    public static net.onrc.onos.core.datastore.RCProtos.PortProperty parseFrom(
         com.google.protobuf.CodedInputStream input,
         com.google.protobuf.ExtensionRegistryLite extensionRegistry)
         throws java.io.IOException {
@@ -937,7 +937,7 @@
 
     public static Builder newBuilder() { return Builder.create(); }
     public Builder newBuilderForType() { return newBuilder(); }
-    public static Builder newBuilder(net.onrc.onos.datastore.RCProtos.PortProperty prototype) {
+    public static Builder newBuilder(net.onrc.onos.core.datastore.RCProtos.PortProperty prototype) {
       return newBuilder().mergeFrom(prototype);
     }
     public Builder toBuilder() { return newBuilder(this); }
@@ -953,20 +953,20 @@
      */
     public static final class Builder extends
         com.google.protobuf.GeneratedMessage.Builder<Builder>
-       implements net.onrc.onos.datastore.RCProtos.PortPropertyOrBuilder {
+       implements net.onrc.onos.core.datastore.RCProtos.PortPropertyOrBuilder {
       public static final com.google.protobuf.Descriptors.Descriptor
           getDescriptor() {
-        return net.onrc.onos.datastore.RCProtos.internal_static_ProtoBuffer_PortProperty_descriptor;
+        return net.onrc.onos.core.datastore.RCProtos.internal_static_ProtoBuffer_PortProperty_descriptor;
       }
 
       protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
           internalGetFieldAccessorTable() {
-        return net.onrc.onos.datastore.RCProtos.internal_static_ProtoBuffer_PortProperty_fieldAccessorTable
+        return net.onrc.onos.core.datastore.RCProtos.internal_static_ProtoBuffer_PortProperty_fieldAccessorTable
             .ensureFieldAccessorsInitialized(
-                net.onrc.onos.datastore.RCProtos.PortProperty.class, net.onrc.onos.datastore.RCProtos.PortProperty.Builder.class);
+                net.onrc.onos.core.datastore.RCProtos.PortProperty.class, net.onrc.onos.core.datastore.RCProtos.PortProperty.Builder.class);
       }
 
-      // Construct using net.onrc.onos.datastore.RCProtos.PortProperty.newBuilder()
+      // Construct using net.onrc.onos.core.datastore.RCProtos.PortProperty.newBuilder()
       private Builder() {
         maybeForceBuilderInitialization();
       }
@@ -1003,23 +1003,23 @@
 
       public com.google.protobuf.Descriptors.Descriptor
           getDescriptorForType() {
-        return net.onrc.onos.datastore.RCProtos.internal_static_ProtoBuffer_PortProperty_descriptor;
+        return net.onrc.onos.core.datastore.RCProtos.internal_static_ProtoBuffer_PortProperty_descriptor;
       }
 
-      public net.onrc.onos.datastore.RCProtos.PortProperty getDefaultInstanceForType() {
-        return net.onrc.onos.datastore.RCProtos.PortProperty.getDefaultInstance();
+      public net.onrc.onos.core.datastore.RCProtos.PortProperty getDefaultInstanceForType() {
+        return net.onrc.onos.core.datastore.RCProtos.PortProperty.getDefaultInstance();
       }
 
-      public net.onrc.onos.datastore.RCProtos.PortProperty build() {
-        net.onrc.onos.datastore.RCProtos.PortProperty result = buildPartial();
+      public net.onrc.onos.core.datastore.RCProtos.PortProperty build() {
+        net.onrc.onos.core.datastore.RCProtos.PortProperty result = buildPartial();
         if (!result.isInitialized()) {
           throw newUninitializedMessageException(result);
         }
         return result;
       }
 
-      public net.onrc.onos.datastore.RCProtos.PortProperty buildPartial() {
-        net.onrc.onos.datastore.RCProtos.PortProperty result = new net.onrc.onos.datastore.RCProtos.PortProperty(this);
+      public net.onrc.onos.core.datastore.RCProtos.PortProperty buildPartial() {
+        net.onrc.onos.core.datastore.RCProtos.PortProperty result = new net.onrc.onos.core.datastore.RCProtos.PortProperty(this);
         int from_bitField0_ = bitField0_;
         int to_bitField0_ = 0;
         if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
@@ -1044,16 +1044,16 @@
       }
 
       public Builder mergeFrom(com.google.protobuf.Message other) {
-        if (other instanceof net.onrc.onos.datastore.RCProtos.PortProperty) {
-          return mergeFrom((net.onrc.onos.datastore.RCProtos.PortProperty)other);
+        if (other instanceof net.onrc.onos.core.datastore.RCProtos.PortProperty) {
+          return mergeFrom((net.onrc.onos.core.datastore.RCProtos.PortProperty)other);
         } else {
           super.mergeFrom(other);
           return this;
         }
       }
 
-      public Builder mergeFrom(net.onrc.onos.datastore.RCProtos.PortProperty other) {
-        if (other == net.onrc.onos.datastore.RCProtos.PortProperty.getDefaultInstance()) return this;
+      public Builder mergeFrom(net.onrc.onos.core.datastore.RCProtos.PortProperty other) {
+        if (other == net.onrc.onos.core.datastore.RCProtos.PortProperty.getDefaultInstance()) return this;
         if (other.hasDpid()) {
           setDpid(other.getDpid());
         }
@@ -1090,11 +1090,11 @@
           com.google.protobuf.CodedInputStream input,
           com.google.protobuf.ExtensionRegistryLite extensionRegistry)
           throws java.io.IOException {
-        net.onrc.onos.datastore.RCProtos.PortProperty parsedMessage = null;
+        net.onrc.onos.core.datastore.RCProtos.PortProperty parsedMessage = null;
         try {
           parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
         } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-          parsedMessage = (net.onrc.onos.datastore.RCProtos.PortProperty) e.getUnfinishedMessage();
+          parsedMessage = (net.onrc.onos.core.datastore.RCProtos.PortProperty) e.getUnfinishedMessage();
           throw e;
         } finally {
           if (parsedMessage != null) {
@@ -1409,14 +1409,14 @@
     }
     public static final com.google.protobuf.Descriptors.Descriptor
         getDescriptor() {
-      return net.onrc.onos.datastore.RCProtos.internal_static_ProtoBuffer_LinkProperty_descriptor;
+      return net.onrc.onos.core.datastore.RCProtos.internal_static_ProtoBuffer_LinkProperty_descriptor;
     }
 
     protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
         internalGetFieldAccessorTable() {
-      return net.onrc.onos.datastore.RCProtos.internal_static_ProtoBuffer_LinkProperty_fieldAccessorTable
+      return net.onrc.onos.core.datastore.RCProtos.internal_static_ProtoBuffer_LinkProperty_fieldAccessorTable
           .ensureFieldAccessorsInitialized(
-              net.onrc.onos.datastore.RCProtos.LinkProperty.class, net.onrc.onos.datastore.RCProtos.LinkProperty.Builder.class);
+              net.onrc.onos.core.datastore.RCProtos.LinkProperty.class, net.onrc.onos.core.datastore.RCProtos.LinkProperty.Builder.class);
     }
 
     public static com.google.protobuf.Parser<LinkProperty> PARSER =
@@ -1634,53 +1634,53 @@
       return super.writeReplace();
     }
 
-    public static net.onrc.onos.datastore.RCProtos.LinkProperty parseFrom(
+    public static net.onrc.onos.core.datastore.RCProtos.LinkProperty parseFrom(
         com.google.protobuf.ByteString data)
         throws com.google.protobuf.InvalidProtocolBufferException {
       return PARSER.parseFrom(data);
     }
-    public static net.onrc.onos.datastore.RCProtos.LinkProperty parseFrom(
+    public static net.onrc.onos.core.datastore.RCProtos.LinkProperty parseFrom(
         com.google.protobuf.ByteString data,
         com.google.protobuf.ExtensionRegistryLite extensionRegistry)
         throws com.google.protobuf.InvalidProtocolBufferException {
       return PARSER.parseFrom(data, extensionRegistry);
     }
-    public static net.onrc.onos.datastore.RCProtos.LinkProperty parseFrom(byte[] data)
+    public static net.onrc.onos.core.datastore.RCProtos.LinkProperty parseFrom(byte[] data)
         throws com.google.protobuf.InvalidProtocolBufferException {
       return PARSER.parseFrom(data);
     }
-    public static net.onrc.onos.datastore.RCProtos.LinkProperty parseFrom(
+    public static net.onrc.onos.core.datastore.RCProtos.LinkProperty parseFrom(
         byte[] data,
         com.google.protobuf.ExtensionRegistryLite extensionRegistry)
         throws com.google.protobuf.InvalidProtocolBufferException {
       return PARSER.parseFrom(data, extensionRegistry);
     }
-    public static net.onrc.onos.datastore.RCProtos.LinkProperty parseFrom(java.io.InputStream input)
+    public static net.onrc.onos.core.datastore.RCProtos.LinkProperty parseFrom(java.io.InputStream input)
         throws java.io.IOException {
       return PARSER.parseFrom(input);
     }
-    public static net.onrc.onos.datastore.RCProtos.LinkProperty parseFrom(
+    public static net.onrc.onos.core.datastore.RCProtos.LinkProperty parseFrom(
         java.io.InputStream input,
         com.google.protobuf.ExtensionRegistryLite extensionRegistry)
         throws java.io.IOException {
       return PARSER.parseFrom(input, extensionRegistry);
     }
-    public static net.onrc.onos.datastore.RCProtos.LinkProperty parseDelimitedFrom(java.io.InputStream input)
+    public static net.onrc.onos.core.datastore.RCProtos.LinkProperty parseDelimitedFrom(java.io.InputStream input)
         throws java.io.IOException {
       return PARSER.parseDelimitedFrom(input);
     }
-    public static net.onrc.onos.datastore.RCProtos.LinkProperty parseDelimitedFrom(
+    public static net.onrc.onos.core.datastore.RCProtos.LinkProperty parseDelimitedFrom(
         java.io.InputStream input,
         com.google.protobuf.ExtensionRegistryLite extensionRegistry)
         throws java.io.IOException {
       return PARSER.parseDelimitedFrom(input, extensionRegistry);
     }
-    public static net.onrc.onos.datastore.RCProtos.LinkProperty parseFrom(
+    public static net.onrc.onos.core.datastore.RCProtos.LinkProperty parseFrom(
         com.google.protobuf.CodedInputStream input)
         throws java.io.IOException {
       return PARSER.parseFrom(input);
     }
-    public static net.onrc.onos.datastore.RCProtos.LinkProperty parseFrom(
+    public static net.onrc.onos.core.datastore.RCProtos.LinkProperty parseFrom(
         com.google.protobuf.CodedInputStream input,
         com.google.protobuf.ExtensionRegistryLite extensionRegistry)
         throws java.io.IOException {
@@ -1689,7 +1689,7 @@
 
     public static Builder newBuilder() { return Builder.create(); }
     public Builder newBuilderForType() { return newBuilder(); }
-    public static Builder newBuilder(net.onrc.onos.datastore.RCProtos.LinkProperty prototype) {
+    public static Builder newBuilder(net.onrc.onos.core.datastore.RCProtos.LinkProperty prototype) {
       return newBuilder().mergeFrom(prototype);
     }
     public Builder toBuilder() { return newBuilder(this); }
@@ -1705,20 +1705,20 @@
      */
     public static final class Builder extends
         com.google.protobuf.GeneratedMessage.Builder<Builder>
-       implements net.onrc.onos.datastore.RCProtos.LinkPropertyOrBuilder {
+       implements net.onrc.onos.core.datastore.RCProtos.LinkPropertyOrBuilder {
       public static final com.google.protobuf.Descriptors.Descriptor
           getDescriptor() {
-        return net.onrc.onos.datastore.RCProtos.internal_static_ProtoBuffer_LinkProperty_descriptor;
+        return net.onrc.onos.core.datastore.RCProtos.internal_static_ProtoBuffer_LinkProperty_descriptor;
       }
 
       protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
           internalGetFieldAccessorTable() {
-        return net.onrc.onos.datastore.RCProtos.internal_static_ProtoBuffer_LinkProperty_fieldAccessorTable
+        return net.onrc.onos.core.datastore.RCProtos.internal_static_ProtoBuffer_LinkProperty_fieldAccessorTable
             .ensureFieldAccessorsInitialized(
-                net.onrc.onos.datastore.RCProtos.LinkProperty.class, net.onrc.onos.datastore.RCProtos.LinkProperty.Builder.class);
+                net.onrc.onos.core.datastore.RCProtos.LinkProperty.class, net.onrc.onos.core.datastore.RCProtos.LinkProperty.Builder.class);
       }
 
-      // Construct using net.onrc.onos.datastore.RCProtos.LinkProperty.newBuilder()
+      // Construct using net.onrc.onos.core.datastore.RCProtos.LinkProperty.newBuilder()
       private Builder() {
         maybeForceBuilderInitialization();
       }
@@ -1759,23 +1759,23 @@
 
       public com.google.protobuf.Descriptors.Descriptor
           getDescriptorForType() {
-        return net.onrc.onos.datastore.RCProtos.internal_static_ProtoBuffer_LinkProperty_descriptor;
+        return net.onrc.onos.core.datastore.RCProtos.internal_static_ProtoBuffer_LinkProperty_descriptor;
       }
 
-      public net.onrc.onos.datastore.RCProtos.LinkProperty getDefaultInstanceForType() {
-        return net.onrc.onos.datastore.RCProtos.LinkProperty.getDefaultInstance();
+      public net.onrc.onos.core.datastore.RCProtos.LinkProperty getDefaultInstanceForType() {
+        return net.onrc.onos.core.datastore.RCProtos.LinkProperty.getDefaultInstance();
       }
 
-      public net.onrc.onos.datastore.RCProtos.LinkProperty build() {
-        net.onrc.onos.datastore.RCProtos.LinkProperty result = buildPartial();
+      public net.onrc.onos.core.datastore.RCProtos.LinkProperty build() {
+        net.onrc.onos.core.datastore.RCProtos.LinkProperty result = buildPartial();
         if (!result.isInitialized()) {
           throw newUninitializedMessageException(result);
         }
         return result;
       }
 
-      public net.onrc.onos.datastore.RCProtos.LinkProperty buildPartial() {
-        net.onrc.onos.datastore.RCProtos.LinkProperty result = new net.onrc.onos.datastore.RCProtos.LinkProperty(this);
+      public net.onrc.onos.core.datastore.RCProtos.LinkProperty buildPartial() {
+        net.onrc.onos.core.datastore.RCProtos.LinkProperty result = new net.onrc.onos.core.datastore.RCProtos.LinkProperty(this);
         int from_bitField0_ = bitField0_;
         int to_bitField0_ = 0;
         if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
@@ -1808,16 +1808,16 @@
       }
 
       public Builder mergeFrom(com.google.protobuf.Message other) {
-        if (other instanceof net.onrc.onos.datastore.RCProtos.LinkProperty) {
-          return mergeFrom((net.onrc.onos.datastore.RCProtos.LinkProperty)other);
+        if (other instanceof net.onrc.onos.core.datastore.RCProtos.LinkProperty) {
+          return mergeFrom((net.onrc.onos.core.datastore.RCProtos.LinkProperty)other);
         } else {
           super.mergeFrom(other);
           return this;
         }
       }
 
-      public Builder mergeFrom(net.onrc.onos.datastore.RCProtos.LinkProperty other) {
-        if (other == net.onrc.onos.datastore.RCProtos.LinkProperty.getDefaultInstance()) return this;
+      public Builder mergeFrom(net.onrc.onos.core.datastore.RCProtos.LinkProperty other) {
+        if (other == net.onrc.onos.core.datastore.RCProtos.LinkProperty.getDefaultInstance()) return this;
         if (other.hasSrcSwId()) {
           setSrcSwId(other.getSrcSwId());
         }
@@ -1868,11 +1868,11 @@
           com.google.protobuf.CodedInputStream input,
           com.google.protobuf.ExtensionRegistryLite extensionRegistry)
           throws java.io.IOException {
-        net.onrc.onos.datastore.RCProtos.LinkProperty parsedMessage = null;
+        net.onrc.onos.core.datastore.RCProtos.LinkProperty parsedMessage = null;
         try {
           parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
         } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-          parsedMessage = (net.onrc.onos.datastore.RCProtos.LinkProperty) e.getUnfinishedMessage();
+          parsedMessage = (net.onrc.onos.core.datastore.RCProtos.LinkProperty) e.getUnfinishedMessage();
           throw e;
         } finally {
           if (parsedMessage != null) {
diff --git a/src/main/java/net/onrc/onos/datastore/RejectRulesException.java b/src/main/java/net/onrc/onos/core/datastore/RejectRulesException.java
similarity index 93%
rename from src/main/java/net/onrc/onos/datastore/RejectRulesException.java
rename to src/main/java/net/onrc/onos/core/datastore/RejectRulesException.java
index 1777ef6..351d1a1 100644
--- a/src/main/java/net/onrc/onos/datastore/RejectRulesException.java
+++ b/src/main/java/net/onrc/onos/core/datastore/RejectRulesException.java
@@ -1,4 +1,4 @@
-package net.onrc.onos.datastore;
+package net.onrc.onos.core.datastore;
 
 //
 // Not sure if we really need this base class.
diff --git a/src/main/java/net/onrc/onos/datastore/WrongVersionException.java b/src/main/java/net/onrc/onos/core/datastore/WrongVersionException.java
similarity index 91%
rename from src/main/java/net/onrc/onos/datastore/WrongVersionException.java
rename to src/main/java/net/onrc/onos/core/datastore/WrongVersionException.java
index 441409f..568f5e1 100644
--- a/src/main/java/net/onrc/onos/datastore/WrongVersionException.java
+++ b/src/main/java/net/onrc/onos/core/datastore/WrongVersionException.java
@@ -1,6 +1,6 @@
-package net.onrc.onos.datastore;
+package net.onrc.onos.core.datastore;
 
-import net.onrc.onos.datastore.utils.ByteArrayUtil;
+import net.onrc.onos.core.datastore.utils.ByteArrayUtil;
 
 /**
  * Exception thrown when conditional operation failed due to version mismatch.
diff --git a/src/main/java/net/onrc/onos/datastore/hazelcast/HZClient.java b/src/main/java/net/onrc/onos/core/datastore/hazelcast/HZClient.java
similarity index 91%
rename from src/main/java/net/onrc/onos/datastore/hazelcast/HZClient.java
rename to src/main/java/net/onrc/onos/core/datastore/hazelcast/HZClient.java
index aec9f9d..b21ef8e 100644
--- a/src/main/java/net/onrc/onos/datastore/hazelcast/HZClient.java
+++ b/src/main/java/net/onrc/onos/core/datastore/hazelcast/HZClient.java
@@ -1,21 +1,21 @@
-package net.onrc.onos.datastore.hazelcast;
+package net.onrc.onos.core.datastore.hazelcast;
 
 import java.io.FileNotFoundException;
 import java.util.Collection;
 import java.util.List;
 
-import net.onrc.onos.datastore.IKVClient;
-import net.onrc.onos.datastore.IKVTable;
-import net.onrc.onos.datastore.IKVTable.IKVEntry;
-import net.onrc.onos.datastore.IKVTableID;
-import net.onrc.onos.datastore.IMultiEntryOperation;
-import net.onrc.onos.datastore.IMultiEntryOperation.OPERATION;
-import net.onrc.onos.datastore.IMultiEntryOperation.STATUS;
-import net.onrc.onos.datastore.ObjectDoesntExistException;
-import net.onrc.onos.datastore.ObjectExistsException;
-import net.onrc.onos.datastore.WrongVersionException;
-import net.onrc.onos.datastore.hazelcast.HZTable.VersionedValue;
-import net.onrc.onos.datastore.internal.IModifiableMultiEntryOperation;
+import net.onrc.onos.core.datastore.IKVClient;
+import net.onrc.onos.core.datastore.IKVTable;
+import net.onrc.onos.core.datastore.IKVTableID;
+import net.onrc.onos.core.datastore.IMultiEntryOperation;
+import net.onrc.onos.core.datastore.ObjectDoesntExistException;
+import net.onrc.onos.core.datastore.ObjectExistsException;
+import net.onrc.onos.core.datastore.WrongVersionException;
+import net.onrc.onos.core.datastore.IKVTable.IKVEntry;
+import net.onrc.onos.core.datastore.IMultiEntryOperation.OPERATION;
+import net.onrc.onos.core.datastore.IMultiEntryOperation.STATUS;
+import net.onrc.onos.core.datastore.hazelcast.HZTable.VersionedValue;
+import net.onrc.onos.core.datastore.internal.IModifiableMultiEntryOperation;
 
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
@@ -38,11 +38,11 @@
     private static final String MAP_PREFIX = "datastore://";
 
     // make this path configurable
-    private static final String BASE_CONFIG_FILENAME = System.getProperty("net.onrc.onos.datastore.hazelcast.baseConfig", "conf/hazelcast.xml");
-    private static boolean useClientMode = Boolean.parseBoolean(System.getProperty("net.onrc.onos.datastore.hazelcast.clientMode", "true"));
+    private static final String BASE_CONFIG_FILENAME = System.getProperty("net.onrc.onos.core.datastore.hazelcast.baseConfig", "conf/hazelcast.xml");
+    private static boolean useClientMode = Boolean.parseBoolean(System.getProperty("net.onrc.onos.core.datastore.hazelcast.clientMode", "true"));
 
     // Note: xml configuration will overwrite this value if present
-    private static int backupCount = Integer.valueOf(System.getProperty("net.onrc.onos.datastore.hazelcast.backupCount", "3"));
+    private static int backupCount = Integer.valueOf(System.getProperty("net.onrc.onos.core.datastore.hazelcast.backupCount", "3"));
 
     private final HazelcastInstance hazelcastInstance;
 
@@ -77,7 +77,7 @@
             ClientConfig clientConfig = new ClientConfig();
             final int port = baseHzConfig.getNetworkConfig().getPort();
 
-            String server = System.getProperty("net.onrc.onos.datastore.hazelcast.client.server", "localhost");
+            String server = System.getProperty("net.onrc.onos.core.datastore.hazelcast.client.server", "localhost");
             clientConfig.addAddress(server + ":" + port);
 
             // copy group config from base Hazelcast configuration
diff --git a/src/main/java/net/onrc/onos/datastore/hazelcast/HZMultiEntryOperation.java b/src/main/java/net/onrc/onos/core/datastore/hazelcast/HZMultiEntryOperation.java
similarity index 91%
rename from src/main/java/net/onrc/onos/datastore/hazelcast/HZMultiEntryOperation.java
rename to src/main/java/net/onrc/onos/core/datastore/hazelcast/HZMultiEntryOperation.java
index 67a868e..a4842ef 100644
--- a/src/main/java/net/onrc/onos/datastore/hazelcast/HZMultiEntryOperation.java
+++ b/src/main/java/net/onrc/onos/core/datastore/hazelcast/HZMultiEntryOperation.java
@@ -1,4 +1,4 @@
-package net.onrc.onos.datastore.hazelcast;
+package net.onrc.onos.core.datastore.hazelcast;
 
 import java.util.concurrent.CancellationException;
 import java.util.concurrent.ExecutionException;
@@ -7,11 +7,11 @@
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
-import net.onrc.onos.datastore.IKVTableID;
-import net.onrc.onos.datastore.IMultiEntryOperation;
-import net.onrc.onos.datastore.hazelcast.HZTable.VersionedValue;
-import net.onrc.onos.datastore.internal.IModifiableMultiEntryOperation;
-import net.onrc.onos.datastore.utils.ByteArrayUtil;
+import net.onrc.onos.core.datastore.IKVTableID;
+import net.onrc.onos.core.datastore.IMultiEntryOperation;
+import net.onrc.onos.core.datastore.hazelcast.HZTable.VersionedValue;
+import net.onrc.onos.core.datastore.internal.IModifiableMultiEntryOperation;
+import net.onrc.onos.core.datastore.utils.ByteArrayUtil;
 
 public class HZMultiEntryOperation implements IMultiEntryOperation, IModifiableMultiEntryOperation {
     private static final Logger log = LoggerFactory.getLogger(HZMultiEntryOperation.class);
diff --git a/src/main/java/net/onrc/onos/datastore/hazelcast/HZTable.java b/src/main/java/net/onrc/onos/core/datastore/hazelcast/HZTable.java
similarity index 96%
rename from src/main/java/net/onrc/onos/datastore/hazelcast/HZTable.java
rename to src/main/java/net/onrc/onos/core/datastore/hazelcast/HZTable.java
index 894854c..f071ecc 100644
--- a/src/main/java/net/onrc/onos/datastore/hazelcast/HZTable.java
+++ b/src/main/java/net/onrc/onos/core/datastore/hazelcast/HZTable.java
@@ -1,4 +1,4 @@
-package net.onrc.onos.datastore.hazelcast;
+package net.onrc.onos.core.datastore.hazelcast;
 
 import java.io.IOException;
 import java.util.ArrayList;
@@ -7,11 +7,11 @@
 import java.util.Set;
 import java.util.concurrent.atomic.AtomicLong;
 
-import net.onrc.onos.datastore.IKVTable;
-import net.onrc.onos.datastore.IKVTableID;
-import net.onrc.onos.datastore.ObjectDoesntExistException;
-import net.onrc.onos.datastore.ObjectExistsException;
-import net.onrc.onos.datastore.WrongVersionException;
+import net.onrc.onos.core.datastore.IKVTable;
+import net.onrc.onos.core.datastore.IKVTableID;
+import net.onrc.onos.core.datastore.ObjectDoesntExistException;
+import net.onrc.onos.core.datastore.ObjectExistsException;
+import net.onrc.onos.core.datastore.WrongVersionException;
 
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
diff --git a/src/main/java/net/onrc/onos/datastore/hazelcast/VersionedValueSerializableFactory.java b/src/main/java/net/onrc/onos/core/datastore/hazelcast/VersionedValueSerializableFactory.java
similarity index 92%
rename from src/main/java/net/onrc/onos/datastore/hazelcast/VersionedValueSerializableFactory.java
rename to src/main/java/net/onrc/onos/core/datastore/hazelcast/VersionedValueSerializableFactory.java
index 3326890..7e77be7 100644
--- a/src/main/java/net/onrc/onos/datastore/hazelcast/VersionedValueSerializableFactory.java
+++ b/src/main/java/net/onrc/onos/core/datastore/hazelcast/VersionedValueSerializableFactory.java
@@ -1,4 +1,4 @@
-package net.onrc.onos.datastore.hazelcast;
+package net.onrc.onos.core.datastore.hazelcast;
 
 import com.hazelcast.nio.serialization.DataSerializableFactory;
 import com.hazelcast.nio.serialization.IdentifiedDataSerializable;
diff --git a/src/main/java/net/onrc/onos/datastore/internal/IModifiableMultiEntryOperation.java b/src/main/java/net/onrc/onos/core/datastore/internal/IModifiableMultiEntryOperation.java
similarity index 91%
rename from src/main/java/net/onrc/onos/datastore/internal/IModifiableMultiEntryOperation.java
rename to src/main/java/net/onrc/onos/core/datastore/internal/IModifiableMultiEntryOperation.java
index 8a23330..a607add 100644
--- a/src/main/java/net/onrc/onos/datastore/internal/IModifiableMultiEntryOperation.java
+++ b/src/main/java/net/onrc/onos/core/datastore/internal/IModifiableMultiEntryOperation.java
@@ -1,6 +1,6 @@
-package net.onrc.onos.datastore.internal;
+package net.onrc.onos.core.datastore.internal;
 
-import net.onrc.onos.datastore.IMultiEntryOperation;
+import net.onrc.onos.core.datastore.IMultiEntryOperation;
 
 /**
  * Interface for backend to realize IMultiEntryOperation.
diff --git a/src/main/java/net/onrc/onos/datastore/ramcloud/RCClient.java b/src/main/java/net/onrc/onos/core/datastore/ramcloud/RCClient.java
similarity index 96%
rename from src/main/java/net/onrc/onos/datastore/ramcloud/RCClient.java
rename to src/main/java/net/onrc/onos/core/datastore/ramcloud/RCClient.java
index c33cb74..18ef642 100644
--- a/src/main/java/net/onrc/onos/datastore/ramcloud/RCClient.java
+++ b/src/main/java/net/onrc/onos/core/datastore/ramcloud/RCClient.java
@@ -1,4 +1,4 @@
-package net.onrc.onos.datastore.ramcloud;
+package net.onrc.onos.core.datastore.ramcloud;
 
 import java.io.File;
 import java.util.ArrayList;
@@ -8,18 +8,18 @@
 import java.util.List;
 import java.util.concurrent.ConcurrentHashMap;
 
-import net.onrc.onos.datastore.IKVClient;
-import net.onrc.onos.datastore.IKVTable;
-import net.onrc.onos.datastore.IKVTable.IKVEntry;
-import net.onrc.onos.datastore.IKVTableID;
-import net.onrc.onos.datastore.IMultiEntryOperation;
-import net.onrc.onos.datastore.IMultiEntryOperation.STATUS;
-import net.onrc.onos.datastore.ObjectDoesntExistException;
-import net.onrc.onos.datastore.ObjectExistsException;
-import net.onrc.onos.datastore.WrongVersionException;
-import net.onrc.onos.datastore.internal.IModifiableMultiEntryOperation;
-import net.onrc.onos.datastore.ramcloud.RCTable.Entry;
-import net.onrc.onos.datastore.utils.ByteArrayUtil;
+import net.onrc.onos.core.datastore.IKVClient;
+import net.onrc.onos.core.datastore.IKVTable;
+import net.onrc.onos.core.datastore.IKVTableID;
+import net.onrc.onos.core.datastore.IMultiEntryOperation;
+import net.onrc.onos.core.datastore.ObjectDoesntExistException;
+import net.onrc.onos.core.datastore.ObjectExistsException;
+import net.onrc.onos.core.datastore.WrongVersionException;
+import net.onrc.onos.core.datastore.IKVTable.IKVEntry;
+import net.onrc.onos.core.datastore.IMultiEntryOperation.STATUS;
+import net.onrc.onos.core.datastore.internal.IModifiableMultiEntryOperation;
+import net.onrc.onos.core.datastore.ramcloud.RCTable.Entry;
+import net.onrc.onos.core.datastore.utils.ByteArrayUtil;
 
 import org.apache.commons.configuration.Configuration;
 import org.apache.commons.configuration.ConfigurationException;
diff --git a/src/main/java/net/onrc/onos/datastore/ramcloud/RCMultiEntryOperation.java b/src/main/java/net/onrc/onos/core/datastore/ramcloud/RCMultiEntryOperation.java
similarity index 91%
rename from src/main/java/net/onrc/onos/datastore/ramcloud/RCMultiEntryOperation.java
rename to src/main/java/net/onrc/onos/core/datastore/ramcloud/RCMultiEntryOperation.java
index 28c5a0b..9b8c8b6 100644
--- a/src/main/java/net/onrc/onos/datastore/ramcloud/RCMultiEntryOperation.java
+++ b/src/main/java/net/onrc/onos/core/datastore/ramcloud/RCMultiEntryOperation.java
@@ -1,9 +1,9 @@
-package net.onrc.onos.datastore.ramcloud;
+package net.onrc.onos.core.datastore.ramcloud;
 
-import net.onrc.onos.datastore.IKVTableID;
-import net.onrc.onos.datastore.IMultiEntryOperation;
-import net.onrc.onos.datastore.internal.IModifiableMultiEntryOperation;
-import net.onrc.onos.datastore.ramcloud.RCTable.Entry;
+import net.onrc.onos.core.datastore.IKVTableID;
+import net.onrc.onos.core.datastore.IMultiEntryOperation;
+import net.onrc.onos.core.datastore.internal.IModifiableMultiEntryOperation;
+import net.onrc.onos.core.datastore.ramcloud.RCTable.Entry;
 
 // FIXME move or extract this
 public class RCMultiEntryOperation implements IMultiEntryOperation, IModifiableMultiEntryOperation {
diff --git a/src/main/java/net/onrc/onos/datastore/ramcloud/RCTable.java b/src/main/java/net/onrc/onos/core/datastore/ramcloud/RCTable.java
similarity index 90%
rename from src/main/java/net/onrc/onos/datastore/ramcloud/RCTable.java
rename to src/main/java/net/onrc/onos/core/datastore/ramcloud/RCTable.java
index 741df0a..098215e 100644
--- a/src/main/java/net/onrc/onos/datastore/ramcloud/RCTable.java
+++ b/src/main/java/net/onrc/onos/core/datastore/ramcloud/RCTable.java
@@ -1,10 +1,10 @@
-package net.onrc.onos.datastore.ramcloud;
+package net.onrc.onos.core.datastore.ramcloud;
 
-import net.onrc.onos.datastore.IKVTable;
-import net.onrc.onos.datastore.IKVTableID;
-import net.onrc.onos.datastore.ObjectDoesntExistException;
-import net.onrc.onos.datastore.ObjectExistsException;
-import net.onrc.onos.datastore.WrongVersionException;
+import net.onrc.onos.core.datastore.IKVTable;
+import net.onrc.onos.core.datastore.IKVTableID;
+import net.onrc.onos.core.datastore.ObjectDoesntExistException;
+import net.onrc.onos.core.datastore.ObjectExistsException;
+import net.onrc.onos.core.datastore.WrongVersionException;
 
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
diff --git a/src/main/java/net/onrc/onos/datastore/ramcloud/RCTableID.java b/src/main/java/net/onrc/onos/core/datastore/ramcloud/RCTableID.java
similarity index 92%
rename from src/main/java/net/onrc/onos/datastore/ramcloud/RCTableID.java
rename to src/main/java/net/onrc/onos/core/datastore/ramcloud/RCTableID.java
index 83ff854..f69addc 100644
--- a/src/main/java/net/onrc/onos/datastore/ramcloud/RCTableID.java
+++ b/src/main/java/net/onrc/onos/core/datastore/ramcloud/RCTableID.java
@@ -1,8 +1,8 @@
-package net.onrc.onos.datastore.ramcloud;
+package net.onrc.onos.core.datastore.ramcloud;
 
 import java.util.Objects;
 
-import net.onrc.onos.datastore.IKVTableID;
+import net.onrc.onos.core.datastore.IKVTableID;
 
 public class RCTableID implements IKVTableID {
     private final String tableName;
diff --git a/src/main/java/net/onrc/onos/datastore/topology/KVDevice.java b/src/main/java/net/onrc/onos/core/datastore/topology/KVDevice.java
similarity index 93%
rename from src/main/java/net/onrc/onos/datastore/topology/KVDevice.java
rename to src/main/java/net/onrc/onos/core/datastore/topology/KVDevice.java
index 805be62..96411a9 100644
--- a/src/main/java/net/onrc/onos/datastore/topology/KVDevice.java
+++ b/src/main/java/net/onrc/onos/core/datastore/topology/KVDevice.java
@@ -1,4 +1,4 @@
-package net.onrc.onos.datastore.topology;
+package net.onrc.onos.core.datastore.topology;
 
 import java.nio.ByteBuffer;
 import java.util.Arrays;
@@ -10,12 +10,12 @@
 import java.util.Set;
 import java.util.TreeSet;
 
-import net.onrc.onos.datastore.DataStoreClient;
-import net.onrc.onos.datastore.IKVTable.IKVEntry;
-import net.onrc.onos.datastore.topology.KVLink.STATUS;
-import net.onrc.onos.datastore.utils.ByteArrayComparator;
-import net.onrc.onos.datastore.utils.ByteArrayUtil;
-import net.onrc.onos.datastore.utils.KVObject;
+import net.onrc.onos.core.datastore.DataStoreClient;
+import net.onrc.onos.core.datastore.IKVTable.IKVEntry;
+import net.onrc.onos.core.datastore.topology.KVLink.STATUS;
+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 org.slf4j.Logger;
diff --git a/src/main/java/net/onrc/onos/datastore/topology/KVLink.java b/src/main/java/net/onrc/onos/core/datastore/topology/KVLink.java
similarity index 95%
rename from src/main/java/net/onrc/onos/datastore/topology/KVLink.java
rename to src/main/java/net/onrc/onos/core/datastore/topology/KVLink.java
index 9d39787..971cb6d 100644
--- a/src/main/java/net/onrc/onos/datastore/topology/KVLink.java
+++ b/src/main/java/net/onrc/onos/core/datastore/topology/KVLink.java
@@ -1,14 +1,14 @@
-package net.onrc.onos.datastore.topology;
+package net.onrc.onos.core.datastore.topology;
 
 import java.nio.ByteBuffer;
 import java.util.HashMap;
 import java.util.Iterator;
 import java.util.Map;
 
-import net.onrc.onos.datastore.DataStoreClient;
-import net.onrc.onos.datastore.IKVTable.IKVEntry;
-import net.onrc.onos.datastore.RCProtos.LinkProperty;
-import net.onrc.onos.datastore.utils.KVObject;
+import net.onrc.onos.core.datastore.DataStoreClient;
+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;
 
diff --git a/src/main/java/net/onrc/onos/datastore/topology/KVPort.java b/src/main/java/net/onrc/onos/core/datastore/topology/KVPort.java
similarity index 94%
rename from src/main/java/net/onrc/onos/datastore/topology/KVPort.java
rename to src/main/java/net/onrc/onos/core/datastore/topology/KVPort.java
index d31026a..9ab2d2a 100644
--- a/src/main/java/net/onrc/onos/datastore/topology/KVPort.java
+++ b/src/main/java/net/onrc/onos/core/datastore/topology/KVPort.java
@@ -1,15 +1,15 @@
-package net.onrc.onos.datastore.topology;
+package net.onrc.onos.core.datastore.topology;
 
 import java.nio.ByteBuffer;
 import java.util.HashMap;
 import java.util.Iterator;
 import java.util.Map;
 
-import net.onrc.onos.datastore.DataStoreClient;
-import net.onrc.onos.datastore.IKVTable.IKVEntry;
-import net.onrc.onos.datastore.RCProtos.PortProperty;
-import net.onrc.onos.datastore.utils.ByteArrayUtil;
-import net.onrc.onos.datastore.utils.KVObject;
+import net.onrc.onos.core.datastore.DataStoreClient;
+import net.onrc.onos.core.datastore.IKVTable.IKVEntry;
+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 org.slf4j.Logger;
diff --git a/src/main/java/net/onrc/onos/datastore/topology/KVSwitch.java b/src/main/java/net/onrc/onos/core/datastore/topology/KVSwitch.java
similarity index 94%
rename from src/main/java/net/onrc/onos/datastore/topology/KVSwitch.java
rename to src/main/java/net/onrc/onos/core/datastore/topology/KVSwitch.java
index 5f1c8fd..eb27f7a 100644
--- a/src/main/java/net/onrc/onos/datastore/topology/KVSwitch.java
+++ b/src/main/java/net/onrc/onos/core/datastore/topology/KVSwitch.java
@@ -1,14 +1,14 @@
-package net.onrc.onos.datastore.topology;
+package net.onrc.onos.core.datastore.topology;
 
 import java.nio.ByteBuffer;
 import java.util.HashMap;
 import java.util.Iterator;
 import java.util.Map;
 
-import net.onrc.onos.datastore.DataStoreClient;
-import net.onrc.onos.datastore.IKVTable.IKVEntry;
-import net.onrc.onos.datastore.RCProtos.SwitchProperty;
-import net.onrc.onos.datastore.utils.KVObject;
+import net.onrc.onos.core.datastore.DataStoreClient;
+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 org.slf4j.Logger;
diff --git a/src/main/java/net/onrc/onos/datastore/utils/ByteArrayComparator.java b/src/main/java/net/onrc/onos/core/datastore/utils/ByteArrayComparator.java
similarity index 93%
rename from src/main/java/net/onrc/onos/datastore/utils/ByteArrayComparator.java
rename to src/main/java/net/onrc/onos/core/datastore/utils/ByteArrayComparator.java
index fbe3ebd..f937e50 100644
--- a/src/main/java/net/onrc/onos/datastore/utils/ByteArrayComparator.java
+++ b/src/main/java/net/onrc/onos/core/datastore/utils/ByteArrayComparator.java
@@ -1,4 +1,4 @@
-package net.onrc.onos.datastore.utils;
+package net.onrc.onos.core.datastore.utils;
 
 import java.nio.ByteBuffer;
 import java.util.Comparator;
diff --git a/src/main/java/net/onrc/onos/datastore/utils/ByteArrayUtil.java b/src/main/java/net/onrc/onos/core/datastore/utils/ByteArrayUtil.java
similarity index 96%
rename from src/main/java/net/onrc/onos/datastore/utils/ByteArrayUtil.java
rename to src/main/java/net/onrc/onos/core/datastore/utils/ByteArrayUtil.java
index c7e3765..14cd419 100644
--- a/src/main/java/net/onrc/onos/datastore/utils/ByteArrayUtil.java
+++ b/src/main/java/net/onrc/onos/core/datastore/utils/ByteArrayUtil.java
@@ -1,4 +1,4 @@
-package net.onrc.onos.datastore.utils;
+package net.onrc.onos.core.datastore.utils;
 
 import java.nio.ByteBuffer;
 
diff --git a/src/main/java/net/onrc/onos/datastore/utils/KVObject.java b/src/main/java/net/onrc/onos/core/datastore/utils/KVObject.java
similarity index 94%
rename from src/main/java/net/onrc/onos/datastore/utils/KVObject.java
rename to src/main/java/net/onrc/onos/core/datastore/utils/KVObject.java
index b46c9f5..522ced0 100644
--- a/src/main/java/net/onrc/onos/datastore/utils/KVObject.java
+++ b/src/main/java/net/onrc/onos/core/datastore/utils/KVObject.java
@@ -1,4 +1,4 @@
-package net.onrc.onos.datastore.utils;
+package net.onrc.onos.core.datastore.utils;
 
 import java.util.ArrayList;
 import java.util.HashMap;
@@ -6,17 +6,17 @@
 import java.util.List;
 import java.util.Map;
 
-import net.onrc.onos.datastore.DataStoreClient;
-import net.onrc.onos.datastore.IKVClient;
-import net.onrc.onos.datastore.IKVTable;
-import net.onrc.onos.datastore.IKVTable.IKVEntry;
-import net.onrc.onos.datastore.IKVTableID;
-import net.onrc.onos.datastore.IMultiEntryOperation;
-import net.onrc.onos.datastore.IMultiObjectOperation;
-import net.onrc.onos.datastore.ObjectDoesntExistException;
-import net.onrc.onos.datastore.ObjectExistsException;
-import net.onrc.onos.datastore.WrongVersionException;
-import net.onrc.onos.datastore.internal.IModifiableMultiEntryOperation;
+import net.onrc.onos.core.datastore.DataStoreClient;
+import net.onrc.onos.core.datastore.IKVClient;
+import net.onrc.onos.core.datastore.IKVTable;
+import net.onrc.onos.core.datastore.IKVTableID;
+import net.onrc.onos.core.datastore.IMultiEntryOperation;
+import net.onrc.onos.core.datastore.IMultiObjectOperation;
+import net.onrc.onos.core.datastore.ObjectDoesntExistException;
+import net.onrc.onos.core.datastore.ObjectExistsException;
+import net.onrc.onos.core.datastore.WrongVersionException;
+import net.onrc.onos.core.datastore.IKVTable.IKVEntry;
+import net.onrc.onos.core.datastore.internal.IModifiableMultiEntryOperation;
 
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
diff --git a/src/main/java/net/onrc/onos/datastore/IMultiObjectOperation.java b/src/main/java/net/onrc/onos/datastore/IMultiObjectOperation.java
deleted file mode 100644
index 95e4e2a..0000000
--- a/src/main/java/net/onrc/onos/datastore/IMultiObjectOperation.java
+++ /dev/null
@@ -1,9 +0,0 @@
-package net.onrc.onos.datastore;
-
-import net.onrc.onos.datastore.utils.KVObject;
-
-public interface IMultiObjectOperation {
-
-    public KVObject getObject();
-
-}
\ No newline at end of file
diff --git a/src/main/java/net/onrc/onos/intent/runtime/PathCalcRuntimeModule.java b/src/main/java/net/onrc/onos/intent/runtime/PathCalcRuntimeModule.java
index e5fded0..b8fe6ed 100755
--- a/src/main/java/net/onrc/onos/intent/runtime/PathCalcRuntimeModule.java
+++ b/src/main/java/net/onrc/onos/intent/runtime/PathCalcRuntimeModule.java
@@ -17,9 +17,9 @@
 import net.floodlightcontroller.core.module.FloodlightModuleException;
 import net.floodlightcontroller.core.module.IFloodlightModule;
 import net.floodlightcontroller.core.module.IFloodlightService;
-import net.onrc.onos.datagrid.IDatagridService;
-import net.onrc.onos.datagrid.IEventChannel;
-import net.onrc.onos.datagrid.IEventChannelListener;
+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.intent.Intent;
 import net.onrc.onos.intent.Intent.IntentState;
 import net.onrc.onos.intent.IntentMap;
diff --git a/src/main/java/net/onrc/onos/intent/runtime/PersistIntent.java b/src/main/java/net/onrc/onos/intent/runtime/PersistIntent.java
index 16e6ea4..9347d5d 100755
--- a/src/main/java/net/onrc/onos/intent/runtime/PersistIntent.java
+++ b/src/main/java/net/onrc/onos/intent/runtime/PersistIntent.java
@@ -13,10 +13,10 @@
 import java.util.Arrays;
 import java.util.concurrent.atomic.AtomicLong;
 
-import net.onrc.onos.datagrid.web.IntentResource;
-import net.onrc.onos.datastore.DataStoreClient;
-import net.onrc.onos.datastore.IKVTable;
-import net.onrc.onos.datastore.ObjectExistsException;
+import net.onrc.onos.core.datagrid.web.IntentResource;
+import net.onrc.onos.core.datastore.DataStoreClient;
+import net.onrc.onos.core.datastore.IKVTable;
+import net.onrc.onos.core.datastore.ObjectExistsException;
 import net.onrc.onos.intent.IntentOperationList;
 import net.onrc.onos.ofcontroller.networkgraph.INetworkGraphService;
 import net.onrc.onos.ofcontroller.networkgraph.NetworkGraph;
diff --git a/src/main/java/net/onrc/onos/intent/runtime/PlanInstallModule.java b/src/main/java/net/onrc/onos/intent/runtime/PlanInstallModule.java
index 293a33d..f4e8226 100644
--- a/src/main/java/net/onrc/onos/intent/runtime/PlanInstallModule.java
+++ b/src/main/java/net/onrc/onos/intent/runtime/PlanInstallModule.java
@@ -14,9 +14,9 @@
 import net.floodlightcontroller.core.module.FloodlightModuleException;
 import net.floodlightcontroller.core.module.IFloodlightModule;
 import net.floodlightcontroller.core.module.IFloodlightService;
-import net.onrc.onos.datagrid.IDatagridService;
-import net.onrc.onos.datagrid.IEventChannel;
-import net.onrc.onos.datagrid.IEventChannelListener;
+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.intent.FlowEntry;
 import net.onrc.onos.intent.Intent.IntentState;
 import net.onrc.onos.intent.IntentOperation;
@@ -25,6 +25,7 @@
 import net.onrc.onos.ofcontroller.networkgraph.INetworkGraphService;
 //import net.onrc.onos.ofcontroller.networkgraph.NetworkGraph;
 
+
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
diff --git a/src/main/java/net/onrc/onos/ofcontroller/devicemanager/OnosDeviceManager.java b/src/main/java/net/onrc/onos/ofcontroller/devicemanager/OnosDeviceManager.java
index b7e9697..90eb78c 100644
--- a/src/main/java/net/onrc/onos/ofcontroller/devicemanager/OnosDeviceManager.java
+++ b/src/main/java/net/onrc/onos/ofcontroller/devicemanager/OnosDeviceManager.java
@@ -24,9 +24,9 @@
 import net.floodlightcontroller.core.module.IFloodlightModule;
 import net.floodlightcontroller.core.module.IFloodlightService;
 import net.floodlightcontroller.util.MACAddress;
-import net.onrc.onos.datagrid.IDatagridService;
-import net.onrc.onos.datagrid.IEventChannel;
-import net.onrc.onos.datagrid.IEventChannelListener;
+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.packet.ARP;
 import net.onrc.onos.packet.DHCP;
 import net.onrc.onos.packet.Ethernet;
diff --git a/src/main/java/net/onrc/onos/ofcontroller/networkgraph/NetworkGraphDatastore.java b/src/main/java/net/onrc/onos/ofcontroller/networkgraph/NetworkGraphDatastore.java
index 63f37d8..b9ed471 100644
--- a/src/main/java/net/onrc/onos/ofcontroller/networkgraph/NetworkGraphDatastore.java
+++ b/src/main/java/net/onrc/onos/ofcontroller/networkgraph/NetworkGraphDatastore.java
@@ -6,15 +6,15 @@
 import java.util.List;
 import java.util.Collection;
 
-import net.onrc.onos.datastore.DataStoreClient;
-import net.onrc.onos.datastore.IKVClient;
-import net.onrc.onos.datastore.topology.KVDevice;
-import net.onrc.onos.datastore.topology.KVLink;
-import net.onrc.onos.datastore.topology.KVPort;
-import net.onrc.onos.datastore.topology.KVPort.STATUS;
-import net.onrc.onos.datastore.topology.KVSwitch;
-import net.onrc.onos.datastore.utils.KVObject;
-import net.onrc.onos.datastore.utils.KVObject.WriteOp;
+import net.onrc.onos.core.datastore.DataStoreClient;
+import net.onrc.onos.core.datastore.IKVClient;
+import net.onrc.onos.core.datastore.topology.KVDevice;
+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.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 org.slf4j.Logger;
diff --git a/src/main/java/net/onrc/onos/ofcontroller/networkgraph/NetworkGraphModule.java b/src/main/java/net/onrc/onos/ofcontroller/networkgraph/NetworkGraphModule.java
index 401a0c3..c437d3f 100644
--- a/src/main/java/net/onrc/onos/ofcontroller/networkgraph/NetworkGraphModule.java
+++ b/src/main/java/net/onrc/onos/ofcontroller/networkgraph/NetworkGraphModule.java
@@ -12,7 +12,7 @@
 import net.floodlightcontroller.core.module.IFloodlightModule;
 import net.floodlightcontroller.core.module.IFloodlightService;
 import net.floodlightcontroller.restserver.IRestApiService;
-import net.onrc.onos.datagrid.IDatagridService;
+import net.onrc.onos.core.datagrid.IDatagridService;
 import net.onrc.onos.ofcontroller.networkgraph.web.NetworkGraphWebRoutable;
 import net.onrc.onos.registry.controller.IControllerRegistryService;
 
diff --git a/src/main/java/net/onrc/onos/ofcontroller/networkgraph/TopologyManager.java b/src/main/java/net/onrc/onos/ofcontroller/networkgraph/TopologyManager.java
index ccd3601..732265e 100644
--- a/src/main/java/net/onrc/onos/ofcontroller/networkgraph/TopologyManager.java
+++ b/src/main/java/net/onrc/onos/ofcontroller/networkgraph/TopologyManager.java
@@ -14,12 +14,12 @@
 import java.util.concurrent.CopyOnWriteArrayList;
 import java.util.concurrent.LinkedBlockingQueue;
 
-import net.onrc.onos.datagrid.IDatagridService;
-import net.onrc.onos.datagrid.IEventChannel;
-import net.onrc.onos.datagrid.IEventChannelListener;
-import net.onrc.onos.datastore.topology.KVLink;
-import net.onrc.onos.datastore.topology.KVPort;
-import net.onrc.onos.datastore.topology.KVSwitch;
+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.datastore.topology.KVLink;
+import net.onrc.onos.core.datastore.topology.KVPort;
+import net.onrc.onos.core.datastore.topology.KVSwitch;
 import net.onrc.onos.ofcontroller.networkgraph.PortEvent.SwitchPort;
 import net.onrc.onos.ofcontroller.util.EventEntry;
 import net.onrc.onos.registry.controller.IControllerRegistryService;
diff --git a/src/main/java/net/onrc/onos/ofcontroller/networkgraph/web/DatastoreLinksResource.java b/src/main/java/net/onrc/onos/ofcontroller/networkgraph/web/DatastoreLinksResource.java
index c984dd1..94823b8 100644
--- a/src/main/java/net/onrc/onos/ofcontroller/networkgraph/web/DatastoreLinksResource.java
+++ b/src/main/java/net/onrc/onos/ofcontroller/networkgraph/web/DatastoreLinksResource.java
@@ -1,6 +1,6 @@
 package net.onrc.onos.ofcontroller.networkgraph.web;
 
-import net.onrc.onos.datastore.topology.KVLink;
+import net.onrc.onos.core.datastore.topology.KVLink;
 
 import org.restlet.resource.Get;
 import org.restlet.resource.ServerResource;
diff --git a/src/main/java/net/onrc/onos/ofcontroller/networkgraph/web/DatastorePortsResource.java b/src/main/java/net/onrc/onos/ofcontroller/networkgraph/web/DatastorePortsResource.java
index 9765e7a..f5a68fb 100644
--- a/src/main/java/net/onrc/onos/ofcontroller/networkgraph/web/DatastorePortsResource.java
+++ b/src/main/java/net/onrc/onos/ofcontroller/networkgraph/web/DatastorePortsResource.java
@@ -1,6 +1,6 @@
 package net.onrc.onos.ofcontroller.networkgraph.web;
 
-import net.onrc.onos.datastore.topology.KVPort;
+import net.onrc.onos.core.datastore.topology.KVPort;
 
 import org.restlet.resource.Get;
 import org.restlet.resource.ServerResource;
diff --git a/src/main/java/net/onrc/onos/ofcontroller/networkgraph/web/DatastoreSwitchesResource.java b/src/main/java/net/onrc/onos/ofcontroller/networkgraph/web/DatastoreSwitchesResource.java
index 018ef09..e373cec 100644
--- a/src/main/java/net/onrc/onos/ofcontroller/networkgraph/web/DatastoreSwitchesResource.java
+++ b/src/main/java/net/onrc/onos/ofcontroller/networkgraph/web/DatastoreSwitchesResource.java
@@ -1,6 +1,6 @@
 package net.onrc.onos.ofcontroller.networkgraph.web;
 
-import net.onrc.onos.datastore.topology.KVSwitch;
+import net.onrc.onos.core.datastore.topology.KVSwitch;
 
 import org.restlet.resource.Get;
 import org.restlet.resource.ServerResource;
diff --git a/src/main/protobuf/ramcloud.proto b/src/main/protobuf/ramcloud.proto
index 68a7263..35c63d8 100644
--- a/src/main/protobuf/ramcloud.proto
+++ b/src/main/protobuf/ramcloud.proto
@@ -1,6 +1,6 @@
 package RCProtos;
 
-option java_package = "net.onrc.onos.datastore";
+option java_package = "net.onrc.onos.core.datastore";
 option java_outer_classname = "RCProtos";
 
 message SwitchProperty {
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 cdeca6a..6ca443d 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
@@ -9,7 +9,7 @@
 net.floodlightcontroller.devicemanager.test.MockDeviceManager
 net.floodlightcontroller.core.test.MockFloodlightProvider
 net.floodlightcontroller.core.test.MockThreadPoolService
-net.onrc.onos.datagrid.HazelcastDatagrid
+net.onrc.onos.core.datagrid.HazelcastDatagrid
 net.onrc.onos.ofcontroller.flowprogrammer.FlowProgrammer
 net.onrc.onos.apps.bgproute.BgpRoute
 net.onrc.onos.registry.controller.ZookeeperRegistry
diff --git a/src/test/java/net/onrc/onos/datastore/hazelcast/HZTableTest.java b/src/test/java/net/onrc/onos/core/datastore/hazelcast/HZTableTest.java
similarity index 95%
rename from src/test/java/net/onrc/onos/datastore/hazelcast/HZTableTest.java
rename to src/test/java/net/onrc/onos/core/datastore/hazelcast/HZTableTest.java
index a3bfab6..31f1646 100644
--- a/src/test/java/net/onrc/onos/datastore/hazelcast/HZTableTest.java
+++ b/src/test/java/net/onrc/onos/core/datastore/hazelcast/HZTableTest.java
@@ -1,4 +1,4 @@
-package net.onrc.onos.datastore.hazelcast;
+package net.onrc.onos.core.datastore.hazelcast;
 
 import static org.junit.Assert.*;
 
@@ -6,12 +6,14 @@
 import java.util.Map;
 import java.util.TreeMap;
 
-import net.onrc.onos.datastore.IKVTable.IKVEntry;
-import net.onrc.onos.datastore.ObjectDoesntExistException;
-import net.onrc.onos.datastore.ObjectExistsException;
-import net.onrc.onos.datastore.WrongVersionException;
-import net.onrc.onos.datastore.hazelcast.HZTable.VersionedValue;
-import net.onrc.onos.datastore.utils.ByteArrayComparator;
+import net.onrc.onos.core.datastore.ObjectDoesntExistException;
+import net.onrc.onos.core.datastore.ObjectExistsException;
+import net.onrc.onos.core.datastore.WrongVersionException;
+import net.onrc.onos.core.datastore.IKVTable.IKVEntry;
+import net.onrc.onos.core.datastore.hazelcast.HZClient;
+import net.onrc.onos.core.datastore.hazelcast.HZTable;
+import net.onrc.onos.core.datastore.hazelcast.HZTable.VersionedValue;
+import net.onrc.onos.core.datastore.utils.ByteArrayComparator;
 
 import org.junit.After;
 import org.junit.Before;
diff --git a/src/test/java/net/onrc/onos/datastore/topology/KVSwitchNoDataStoreTest.java b/src/test/java/net/onrc/onos/core/datastore/topology/KVSwitchNoDataStoreTest.java
similarity index 91%
rename from src/test/java/net/onrc/onos/datastore/topology/KVSwitchNoDataStoreTest.java
rename to src/test/java/net/onrc/onos/core/datastore/topology/KVSwitchNoDataStoreTest.java
index e656596..eec4a47 100644
--- a/src/test/java/net/onrc/onos/datastore/topology/KVSwitchNoDataStoreTest.java
+++ b/src/test/java/net/onrc/onos/core/datastore/topology/KVSwitchNoDataStoreTest.java
@@ -1,10 +1,11 @@
-package net.onrc.onos.datastore.topology;
+package net.onrc.onos.core.datastore.topology;
 
 import static org.junit.Assert.*;
 
 import java.nio.ByteBuffer;
 
-import net.onrc.onos.datastore.topology.KVSwitch.STATUS;
+import net.onrc.onos.core.datastore.topology.KVSwitch;
+import net.onrc.onos.core.datastore.topology.KVSwitch.STATUS;
 
 import org.junit.Test;
 
diff --git a/src/test/java/net/onrc/onos/datastore/topology/KVSwitchTest.java b/src/test/java/net/onrc/onos/core/datastore/topology/KVSwitchTest.java
similarity index 92%
rename from src/test/java/net/onrc/onos/datastore/topology/KVSwitchTest.java
rename to src/test/java/net/onrc/onos/core/datastore/topology/KVSwitchTest.java
index ce73034..cb5544b 100644
--- a/src/test/java/net/onrc/onos/datastore/topology/KVSwitchTest.java
+++ b/src/test/java/net/onrc/onos/core/datastore/topology/KVSwitchTest.java
@@ -1,16 +1,17 @@
-package net.onrc.onos.datastore.topology;
+package net.onrc.onos.core.datastore.topology;
 
 import static org.junit.Assert.*;
 
 import java.util.HashMap;
 import java.util.Map;
 
-import net.onrc.onos.datastore.DataStoreClient;
-import net.onrc.onos.datastore.IKVTable;
-import net.onrc.onos.datastore.ObjectDoesntExistException;
-import net.onrc.onos.datastore.ObjectExistsException;
-import net.onrc.onos.datastore.WrongVersionException;
-import net.onrc.onos.datastore.topology.KVSwitch.STATUS;
+import net.onrc.onos.core.datastore.DataStoreClient;
+import net.onrc.onos.core.datastore.IKVTable;
+import net.onrc.onos.core.datastore.ObjectDoesntExistException;
+import net.onrc.onos.core.datastore.ObjectExistsException;
+import net.onrc.onos.core.datastore.WrongVersionException;
+import net.onrc.onos.core.datastore.topology.KVSwitch;
+import net.onrc.onos.core.datastore.topology.KVSwitch.STATUS;
 
 import org.junit.After;
 import org.junit.Before;
diff --git a/src/test/java/net/onrc/onos/datastore/topology/KVTopologyTest.java b/src/test/java/net/onrc/onos/core/datastore/topology/KVTopologyTest.java
similarity index 94%
rename from src/test/java/net/onrc/onos/datastore/topology/KVTopologyTest.java
rename to src/test/java/net/onrc/onos/core/datastore/topology/KVTopologyTest.java
index 4fe0a1b..2e77de7 100644
--- a/src/test/java/net/onrc/onos/datastore/topology/KVTopologyTest.java
+++ b/src/test/java/net/onrc/onos/core/datastore/topology/KVTopologyTest.java
@@ -1,4 +1,4 @@
-package net.onrc.onos.datastore.topology;
+package net.onrc.onos.core.datastore.topology;
 
 import static org.junit.Assert.*;
 import static org.hamcrest.Matchers.*;
@@ -10,15 +10,19 @@
 import java.util.Map;
 import java.util.TreeMap;
 
-import net.onrc.onos.datastore.DataStoreClient;
-import net.onrc.onos.datastore.IKVClient;
-import net.onrc.onos.datastore.IKVTable;
-import net.onrc.onos.datastore.ObjectDoesntExistException;
-import net.onrc.onos.datastore.ObjectExistsException;
-import net.onrc.onos.datastore.WrongVersionException;
-import net.onrc.onos.datastore.utils.ByteArrayComparator;
-import net.onrc.onos.datastore.utils.KVObject;
-import net.onrc.onos.datastore.utils.KVObject.WriteOp;
+import net.onrc.onos.core.datastore.DataStoreClient;
+import net.onrc.onos.core.datastore.IKVClient;
+import net.onrc.onos.core.datastore.IKVTable;
+import net.onrc.onos.core.datastore.ObjectDoesntExistException;
+import net.onrc.onos.core.datastore.ObjectExistsException;
+import net.onrc.onos.core.datastore.WrongVersionException;
+import net.onrc.onos.core.datastore.topology.KVDevice;
+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.datastore.utils.ByteArrayComparator;
+import net.onrc.onos.core.datastore.utils.KVObject;
+import net.onrc.onos.core.datastore.utils.KVObject.WriteOp;
 
 import org.junit.After;
 import org.junit.Before;
diff --git a/src/test/java/net/onrc/onos/intent/runtime/PathCalcRuntimeModuleTest.java b/src/test/java/net/onrc/onos/intent/runtime/PathCalcRuntimeModuleTest.java
index 9096d2d..0e9da71 100644
--- a/src/test/java/net/onrc/onos/intent/runtime/PathCalcRuntimeModuleTest.java
+++ b/src/test/java/net/onrc/onos/intent/runtime/PathCalcRuntimeModuleTest.java
@@ -2,10 +2,9 @@
 
 import net.floodlightcontroller.core.module.FloodlightModuleContext;
 import net.floodlightcontroller.core.module.FloodlightModuleException;
-import net.onrc.onos.datagrid.IDatagridService;
-import net.onrc.onos.datagrid.IEventChannel;
-import net.onrc.onos.datagrid.IEventChannelListener;
-
+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.intent.Intent;
 import net.onrc.onos.intent.Intent.IntentState;
 import net.onrc.onos.intent.IntentMap;
@@ -38,6 +37,7 @@
 import org.hamcrest.Matcher;
 import org.hamcrest.Matchers;
 import org.hamcrest.TypeSafeMatcher;
+
 import static org.easymock.EasyMock.*;
 import static org.hamcrest.MatcherAssert.assertThat;
 import static org.hamcrest.Matchers.*;
diff --git a/src/test/java/net/onrc/onos/intent/runtime/UseCaseTest.java b/src/test/java/net/onrc/onos/intent/runtime/UseCaseTest.java
index c746811..50c1228 100755
--- a/src/test/java/net/onrc/onos/intent/runtime/UseCaseTest.java
+++ b/src/test/java/net/onrc/onos/intent/runtime/UseCaseTest.java
@@ -8,9 +8,9 @@
 
 import net.floodlightcontroller.core.module.FloodlightModuleContext;
 import net.floodlightcontroller.core.module.FloodlightModuleException;
-import net.onrc.onos.datagrid.IDatagridService;
-import net.onrc.onos.datagrid.IEventChannel;
-import net.onrc.onos.datagrid.IEventChannelListener;
+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.intent.ConstrainedShortestPathIntent;
 import net.onrc.onos.intent.FlowEntry;
 import net.onrc.onos.intent.Intent;
