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 a3ab24a..30b2f73 100644
--- a/src/main/java/net/onrc/onos/ofcontroller/networkgraph/NetworkGraphDatastore.java
+++ b/src/main/java/net/onrc/onos/ofcontroller/networkgraph/NetworkGraphDatastore.java
@@ -4,12 +4,14 @@
 import java.util.List;
 import java.util.Collection;
 
-import net.onrc.onos.datastore.RCObject;
-import net.onrc.onos.datastore.RCObject.WriteOp;
-import net.onrc.onos.datastore.topology.RCLink;
-import net.onrc.onos.datastore.topology.RCPort;
-import net.onrc.onos.datastore.topology.RCPort.STATUS;
-import net.onrc.onos.datastore.topology.RCSwitch;
+import net.onrc.onos.datastore.DataStoreClient;
+import net.onrc.onos.datastore.IKVClient;
+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 org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
@@ -45,22 +47,24 @@
 		log.debug("Adding switch {}", sw);
 		ArrayList<WriteOp> groupOp = new ArrayList<>();
 
-		RCSwitch rcSwitch = new RCSwitch(sw.getDpid());
-		rcSwitch.setStatus(RCSwitch.STATUS.ACTIVE);
+		KVSwitch rcSwitch = new KVSwitch(sw.getDpid());
+		rcSwitch.setStatus(KVSwitch.STATUS.ACTIVE);
+
+		IKVClient client = DataStoreClient.getClient();
 
 		// XXX Is ForceCreating Switch on DB OK here?
 		// If ForceCreating, who ever is calling this method needs
 		// to assure that DPID is unique cluster-wide, etc.
-		groupOp.add(WriteOp.ForceCreate(rcSwitch));
+		groupOp.add(rcSwitch.forceCreateOp(client));
 
 		for (PortEvent portEvent : portEvents) {
-			RCPort rcPort = new RCPort(sw.getDpid(), portEvent.getNumber());
-			rcPort.setStatus(RCPort.STATUS.ACTIVE);
+			KVPort rcPort = new KVPort(sw.getDpid(), portEvent.getNumber());
+			rcPort.setStatus(KVPort.STATUS.ACTIVE);
 
-			groupOp.add(WriteOp.ForceCreate(rcPort));
+			groupOp.add(rcPort.forceCreateOp(client));
 		}
 
-		boolean failed = RCObject.multiWrite(groupOp);
+		boolean failed = KVObject.multiWrite(groupOp);
 
 		if (failed) {
 		    log.error("Adding Switch {} and its ports failed.", sw.getDpid());
@@ -84,21 +88,23 @@
 	public boolean deactivateSwitch(SwitchEvent sw,
 					Collection<PortEvent> portEvents) {
 		log.debug("Deactivating switch {}", sw);
-		RCSwitch rcSwitch = new RCSwitch(sw.getDpid());
+		KVSwitch rcSwitch = new KVSwitch(sw.getDpid());
+
+		IKVClient client = DataStoreClient.getClient();
 
 		List<WriteOp> groupOp = new ArrayList<>();
-		rcSwitch.setStatus(RCSwitch.STATUS.INACTIVE);
+		rcSwitch.setStatus(KVSwitch.STATUS.INACTIVE);
 
-		groupOp.add(WriteOp.ForceCreate(rcSwitch));
+		groupOp.add(rcSwitch.forceCreateOp(client));
 
 		for (PortEvent portEvent : portEvents) {
-			RCPort rcPort = new RCPort(sw.getDpid(), portEvent.getNumber());
-			rcPort.setStatus(RCPort.STATUS.INACTIVE);
+			KVPort rcPort = new KVPort(sw.getDpid(), portEvent.getNumber());
+			rcPort.setStatus(KVPort.STATUS.INACTIVE);
 
-			groupOp.add(WriteOp.ForceCreate(rcPort));
+			groupOp.add(rcPort.forceCreateOp(client));
 		}
 
-		boolean failed = RCObject.multiWrite(groupOp);
+		boolean failed = KVObject.multiWrite(groupOp);
 
 		return !failed;
 	}
@@ -112,10 +118,10 @@
 	public boolean addPort(PortEvent port) {
 		log.debug("Adding port {}", port);
 
-		RCPort rcPort = new RCPort(port.getDpid(), port.getNumber());
-		rcPort.setStatus(RCPort.STATUS.ACTIVE);
+		KVPort rcPort = new KVPort(port.getDpid(), port.getNumber());
+		rcPort.setStatus(KVPort.STATUS.ACTIVE);
 		rcPort.forceCreate();
-		// TODO add description into RCPort
+		// TODO add description into KVPort
 		//rcPort.setDescription(port.getDescription());
 
 		return true;
@@ -130,7 +136,7 @@
 	public boolean deactivatePort(PortEvent port) {
 		log.debug("Deactivating port {}", port);
 
-		RCPort rcPort = new RCPort(port.getDpid(), port.getNumber());
+		KVPort rcPort = new KVPort(port.getDpid(), port.getNumber());
 		rcPort.setStatus(STATUS.INACTIVE);
 
 		rcPort.forceCreate();
@@ -147,7 +153,7 @@
 	public boolean addLink(LinkEvent link) {
 		log.debug("Adding link {}", link);
 
-		RCLink rcLink = new RCLink(link.getSrc().getDpid(),
+		KVLink rcLink = new KVLink(link.getSrc().getDpid(),
 					   link.getSrc().getNumber(),
 					   link.getDst().getDpid(),
 					   link.getDst().getNumber());
@@ -157,7 +163,7 @@
 		// so we can force write here
 		//
 		// TODO: We need to check for errors
-		rcLink.setStatus(RCLink.STATUS.ACTIVE);
+		rcLink.setStatus(KVLink.STATUS.ACTIVE);
 		rcLink.forceCreate();
 
 		return true;					// Success
@@ -166,7 +172,7 @@
 	public boolean removeLink(LinkEvent linkEvent) {
 		log.debug("Removing link {}", linkEvent);
 
-		RCLink rcLink = new RCLink(linkEvent.getSrc().getDpid(), linkEvent.getSrc().getNumber(),
+		KVLink rcLink = new KVLink(linkEvent.getSrc().getDpid(), linkEvent.getSrc().getNumber(),
 				linkEvent.getDst().getDpid(), linkEvent.getDst().getNumber());
 		rcLink.forceDelete();
 
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 3f3af2d..a323726 100644
--- a/src/main/java/net/onrc/onos/ofcontroller/networkgraph/TopologyManager.java
+++ b/src/main/java/net/onrc/onos/ofcontroller/networkgraph/TopologyManager.java
@@ -17,9 +17,9 @@
 import net.onrc.onos.datagrid.IDatagridService;
 import net.onrc.onos.datagrid.IEventChannel;
 import net.onrc.onos.datagrid.IEventChannelListener;
-import net.onrc.onos.datastore.topology.RCLink;
-import net.onrc.onos.datastore.topology.RCPort;
-import net.onrc.onos.datastore.topology.RCSwitch;
+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.ofcontroller.networkgraph.PortEvent.SwitchPort;
 import net.onrc.onos.ofcontroller.util.EventEntry;
 import net.onrc.onos.registry.controller.IControllerRegistryService;
@@ -1141,8 +1141,8 @@
 	// how we initially subscribe to replication events
 
 	// Add all active switches
-	for (RCSwitch sw : RCSwitch.getAllSwitches()) {
-	    if (sw.getStatus() != RCSwitch.STATUS.ACTIVE) {
+	for (KVSwitch sw : KVSwitch.getAllSwitches()) {
+	    if (sw.getStatus() != KVSwitch.STATUS.ACTIVE) {
 		continue;
 	    }
 
@@ -1155,8 +1155,8 @@
 	}
 
 	// Add all active ports
-	for (RCPort p : RCPort.getAllPorts()) {
-	    if (p.getStatus() != RCPort.STATUS.ACTIVE) {
+	for (KVPort p : KVPort.getAllPorts()) {
+	    if (p.getStatus() != KVPort.STATUS.ACTIVE) {
 		continue;
 	    }
 
@@ -1169,14 +1169,14 @@
 	}
 
 	// TODO Is Device going to be in DB? If so, read from DB.
-	//	for (RCDevice d : RCDevice.getAllDevices()) {
+	//	for (KVDevice d : KVDevice.getAllDevices()) {
 	//	    DeviceEvent devEvent = new DeviceEvent( MACAddress.valueOf(d.getMac()) );
 	//	    for (byte[] portId : d.getAllPortIds() ) {
-	//		devEvent.addAttachmentPoint( new SwitchPort( RCPort.getDpidFromKey(portId), RCPort.getNumberFromKey(portId) ));
+	//		devEvent.addAttachmentPoint( new SwitchPort( KVPort.getDpidFromKey(portId), KVPort.getNumberFromKey(portId) ));
 	//	    }
 	//	}
 
-	for (RCLink l : RCLink.getAllLinks()) {
+	for (KVLink l : KVLink.getAllLinks()) {
 	    LinkEvent linkEvent = new LinkEvent(l.getSrc().dpid,
 						l.getSrc().number,
 						l.getDst().dpid,
diff --git a/src/main/java/net/onrc/onos/ofcontroller/networkgraph/web/RamcloudLinksResource.java b/src/main/java/net/onrc/onos/ofcontroller/networkgraph/web/RamcloudLinksResource.java
index abd1831..ad5059c 100644
--- a/src/main/java/net/onrc/onos/ofcontroller/networkgraph/web/RamcloudLinksResource.java
+++ b/src/main/java/net/onrc/onos/ofcontroller/networkgraph/web/RamcloudLinksResource.java
@@ -1,6 +1,6 @@
 package net.onrc.onos.ofcontroller.networkgraph.web;
 
-import net.onrc.onos.datastore.topology.RCLink;
+import net.onrc.onos.datastore.topology.KVLink;
 
 import org.restlet.resource.Get;
 import org.restlet.resource.ServerResource;
@@ -8,7 +8,7 @@
 public class RamcloudLinksResource extends ServerResource {
 
 	@Get("json")
-	public Iterable<RCLink> retrieve() {
-		return RCLink.getAllLinks();
+	public Iterable<KVLink> retrieve() {
+		return KVLink.getAllLinks();
 	}
 }
diff --git a/src/main/java/net/onrc/onos/ofcontroller/networkgraph/web/RamcloudPortsResource.java b/src/main/java/net/onrc/onos/ofcontroller/networkgraph/web/RamcloudPortsResource.java
index b2f88dd..bac73b3 100644
--- a/src/main/java/net/onrc/onos/ofcontroller/networkgraph/web/RamcloudPortsResource.java
+++ b/src/main/java/net/onrc/onos/ofcontroller/networkgraph/web/RamcloudPortsResource.java
@@ -1,6 +1,6 @@
 package net.onrc.onos.ofcontroller.networkgraph.web;
 
-import net.onrc.onos.datastore.topology.RCPort;
+import net.onrc.onos.datastore.topology.KVPort;
 
 import org.restlet.resource.Get;
 import org.restlet.resource.ServerResource;
@@ -8,7 +8,7 @@
 public class RamcloudPortsResource extends ServerResource {
 
 	@Get("json")
-	public Iterable<RCPort> retrieve() {
-		return RCPort.getAllPorts();
+	public Iterable<KVPort> retrieve() {
+		return KVPort.getAllPorts();
 	}
 }
diff --git a/src/main/java/net/onrc/onos/ofcontroller/networkgraph/web/RamcloudSwitchesResource.java b/src/main/java/net/onrc/onos/ofcontroller/networkgraph/web/RamcloudSwitchesResource.java
index e8998b0..b8a8fe6 100644
--- a/src/main/java/net/onrc/onos/ofcontroller/networkgraph/web/RamcloudSwitchesResource.java
+++ b/src/main/java/net/onrc/onos/ofcontroller/networkgraph/web/RamcloudSwitchesResource.java
@@ -1,6 +1,6 @@
 package net.onrc.onos.ofcontroller.networkgraph.web;
 
-import net.onrc.onos.datastore.topology.RCSwitch;
+import net.onrc.onos.datastore.topology.KVSwitch;
 
 import org.restlet.resource.Get;
 import org.restlet.resource.ServerResource;
@@ -8,8 +8,8 @@
 public class RamcloudSwitchesResource extends ServerResource {
 	
 	@Get("json")
-	public Iterable<RCSwitch> retrieve() {
-		return RCSwitch.getAllSwitches();
+	public Iterable<KVSwitch> retrieve() {
+		return KVSwitch.getAllSwitches();
 	}
 
 }
