diff --git a/src/main/java/com/tinkerpop/blueprints/impls/ramcloud/RamCloudWrite.java b/src/main/java/com/tinkerpop/blueprints/impls/ramcloud/RamCloudWrite.java
index 6b3fba2..69eed7f 100644
--- a/src/main/java/com/tinkerpop/blueprints/impls/ramcloud/RamCloudWrite.java
+++ b/src/main/java/com/tinkerpop/blueprints/impls/ramcloud/RamCloudWrite.java
@@ -29,7 +29,11 @@
 		pm.indexwrite_start("RamCloudIndex writeWithRules()");
 	    }
 	    rcClient.writeRule(tableId, rcKey, rcValue, rules);
-	    pm.indexwrite_end("RamCloudIndex writeWithRules()");
+            if (perfMonKind.equals(PerfMonEnum.WRITE)) {
+                pm.write_end("RamCloudIndex writeWithRules()");
+            } else if (perfMonKind.equals(PerfMonEnum.INDEXWRITE)) {
+                pm.indexwrite_end("RamCloudIndex writeWithRules()");
+            }
 	} catch (Exception e) {
 	    if (perfMonKind.equals(PerfMonEnum.WRITE)) {
 		pm.write_end("RamCloudIndex writeWithRules()");
diff --git a/src/main/java/net/onrc/onos/graph/GraphDBManager.java b/src/main/java/net/onrc/onos/graph/GraphDBManager.java
index ec7eb7f..3eec68f 100644
--- a/src/main/java/net/onrc/onos/graph/GraphDBManager.java
+++ b/src/main/java/net/onrc/onos/graph/GraphDBManager.java
@@ -9,14 +9,11 @@
 import java.util.List;
 import java.util.Map;
 
-/**
- *
- * @author nickkaranatsios
- */
 public class GraphDBManager {
     private static ThreadLocal<HashMap<String, DBConnection>> connections = new ThreadLocal<HashMap<String, DBConnection>>();
     private static DBOperation operation = null;
-    
+    private final static String DB_CONFIG_FILE = "conf/ramcloud.conf";
+
     static Map<String, DBConnection> getConnectionMap() {
         if (connections.get() == null) {
             connections.set(new HashMap<String, DBConnection>());
@@ -24,14 +21,18 @@
         return connections.get();
     }
 
-    public static DBOperation getDBOperation(final String dbStore, final String dbConfigFile) {
+    public static DBOperation getDBOperation() {
+        return getDBOperation("ramcloud");
+    }
+
+    public static DBOperation getDBOperation(final String dbStore) {
 	if (dbStore.equals("ramcloud")) {
 	    operation = new RamCloudDBOperation();
 	} else if (dbStore.equals("titan")) {
 	    operation = new TitanDBOperation();
 	}
 	if (operation != null) {
-	    operation.conn = GraphDBManager.getConnection(dbStore, dbConfigFile);
+	    operation.conn = GraphDBManager.getConnection(dbStore, DB_CONFIG_FILE);
 	}
         return operation;
     }
diff --git a/src/main/java/net/onrc/onos/graph/RamCloudDBConnection.java b/src/main/java/net/onrc/onos/graph/RamCloudDBConnection.java
index 547da44..f23db92 100644
--- a/src/main/java/net/onrc/onos/graph/RamCloudDBConnection.java
+++ b/src/main/java/net/onrc/onos/graph/RamCloudDBConnection.java
@@ -1,7 +1,3 @@
-/*
- * To change this template, choose Tools | Templates
- * and open the template in the editor.
- */
 package net.onrc.onos.graph;
 
 import com.tinkerpop.blueprints.Vertex;
@@ -15,10 +11,6 @@
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
-/**
- *
- * @author nickkaranatsios
- */
 public class RamCloudDBConnection extends DBConnection {
     private RamCloudGraph graph;
     private FramedGraph<RamCloudGraph> fg;
diff --git a/src/main/java/net/onrc/onos/graph/RamCloudDBOperation.java b/src/main/java/net/onrc/onos/graph/RamCloudDBOperation.java
index 1487be7..5cc1e53 100644
--- a/src/main/java/net/onrc/onos/graph/RamCloudDBOperation.java
+++ b/src/main/java/net/onrc/onos/graph/RamCloudDBOperation.java
@@ -1,25 +1,5 @@
-/*
- * To change this template, choose Tools | Templates
- * and open the template in the editor.
- */
 package net.onrc.onos.graph;
 
-import com.tinkerpop.blueprints.impls.ramcloud.RamCloudGraph;
-import com.tinkerpop.frames.FramedGraph;
-import net.onrc.onos.ofcontroller.core.INetMapTopologyObjects;
-import net.onrc.onos.ofcontroller.core.INetMapTopologyObjects.IDeviceObject;
-import net.onrc.onos.ofcontroller.core.INetMapTopologyObjects.IFlowEntry;
-import net.onrc.onos.ofcontroller.core.INetMapTopologyObjects.IFlowPath;
-import net.onrc.onos.ofcontroller.core.INetMapTopologyObjects.IPortObject;
-import net.onrc.onos.ofcontroller.core.INetMapTopologyObjects.ISwitchObject;
-import net.onrc.onos.ofcontroller.util.FlowEntryId;
-import net.onrc.onos.ofcontroller.util.FlowId;
-import org.apache.commons.configuration.Configuration;
-
-/**
- *
- * @author nickkaranatsios
- */
 public class RamCloudDBOperation extends DBOperation {
 
     public RamCloudDBOperation() {
diff --git a/src/main/java/net/onrc/onos/graph/TitanDBConnection.java b/src/main/java/net/onrc/onos/graph/TitanDBConnection.java
index f46e417..94ad43c 100644
--- a/src/main/java/net/onrc/onos/graph/TitanDBConnection.java
+++ b/src/main/java/net/onrc/onos/graph/TitanDBConnection.java
@@ -1,7 +1,3 @@
-/*
- * To change this template, choose Tools | Templates
- * and open the template in the editor.
- */
 package net.onrc.onos.graph;
 
 import com.thinkaurelius.titan.core.TitanFactory;
@@ -14,10 +10,6 @@
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
-/**
- *
- * @author nickkaranatsios
- */
 public class TitanDBConnection extends DBConnection {
 
     private TitanGraph graph;
diff --git a/src/main/java/net/onrc/onos/graph/TitanDBOperation.java b/src/main/java/net/onrc/onos/graph/TitanDBOperation.java
index 1b211d6..a6ccfdf 100644
--- a/src/main/java/net/onrc/onos/graph/TitanDBOperation.java
+++ b/src/main/java/net/onrc/onos/graph/TitanDBOperation.java
@@ -1,26 +1,7 @@
-/*
- * To change this template, choose Tools | Templates
- * and open the template in the editor.
- */
 package net.onrc.onos.graph;
 
-import com.thinkaurelius.titan.core.TitanGraph;
-import com.tinkerpop.blueprints.Vertex;
-import com.tinkerpop.frames.FramedGraph;
-import com.tinkerpop.frames.structures.FramedVertexIterable;
-import com.tinkerpop.gremlin.java.GremlinPipeline;
-import java.util.ArrayList;
-import java.util.Iterator;
-import java.util.List;
 import net.onrc.onos.ofcontroller.core.INetMapTopologyObjects.*;
-import net.onrc.onos.ofcontroller.core.ISwitchStorage;
-import net.onrc.onos.ofcontroller.util.FlowEntryId;
-import net.onrc.onos.ofcontroller.util.FlowId;
 
-/**
- *
- * @author nickkaranatsios
- */
 public class TitanDBOperation extends DBOperation {
 
-}
\ No newline at end of file
+}
diff --git a/src/main/java/net/onrc/onos/graph/web/TopoDevicesResource.java b/src/main/java/net/onrc/onos/graph/web/TopoDevicesResource.java
index 4f4abba..2289a0b 100644
--- a/src/main/java/net/onrc/onos/graph/web/TopoDevicesResource.java
+++ b/src/main/java/net/onrc/onos/graph/web/TopoDevicesResource.java
@@ -13,7 +13,7 @@
 	
 	@Get("json")
 	public Iterator<IDeviceObject> retrieve() {
-		DBOperation op = GraphDBManager.getDBOperation("ramcloud", "/tmp/ramcloud.conf");
+		DBOperation op = GraphDBManager.getDBOperation();
 		
 		return op.getDevices().iterator();
 	}
diff --git a/src/main/java/net/onrc/onos/ofcontroller/core/internal/DeviceStorageImpl.java b/src/main/java/net/onrc/onos/ofcontroller/core/internal/DeviceStorageImpl.java
index 6fcbb29..0699491 100644
--- a/src/main/java/net/onrc/onos/ofcontroller/core/internal/DeviceStorageImpl.java
+++ b/src/main/java/net/onrc/onos/ofcontroller/core/internal/DeviceStorageImpl.java
@@ -38,7 +38,7 @@
 	@Override
 	public void init(final String dbStore, final String conf) {
 		try {
-			ope = GraphDBManager.getDBOperation("ramcloud", "/tmp/ramcloud.conf");
+			ope = GraphDBManager.getDBOperation();
 		} catch (Exception e) {
 			log.error("Couldn't open graph operation", e);
 		}
diff --git a/src/main/java/net/onrc/onos/ofcontroller/core/internal/LinkStorageImpl.java b/src/main/java/net/onrc/onos/ofcontroller/core/internal/LinkStorageImpl.java
index b43c58a..1f7815d 100644
--- a/src/main/java/net/onrc/onos/ofcontroller/core/internal/LinkStorageImpl.java
+++ b/src/main/java/net/onrc/onos/ofcontroller/core/internal/LinkStorageImpl.java
@@ -33,7 +33,7 @@
 	 */
 	@Override
 	public void init(final String dbStore, final String conf) {
-		this.dbop = GraphDBManager.getDBOperation("ramcloud", "/tmp/ramcloud.conf");
+		this.dbop = GraphDBManager.getDBOperation();
 
 	}
 
diff --git a/src/main/java/net/onrc/onos/ofcontroller/core/internal/SwitchStorageImpl.java b/src/main/java/net/onrc/onos/ofcontroller/core/internal/SwitchStorageImpl.java
index ab73961..1f3a626 100644
--- a/src/main/java/net/onrc/onos/ofcontroller/core/internal/SwitchStorageImpl.java
+++ b/src/main/java/net/onrc/onos/ofcontroller/core/internal/SwitchStorageImpl.java
@@ -38,7 +38,7 @@
 	 */
 	@Override
 	public void init(final String dbStore, final String conf) {
-		op = GraphDBManager.getDBOperation("ramcloud", "/tmp/ramcloud.conf");
+		op = GraphDBManager.getDBOperation();
 	}
 
 
diff --git a/src/main/java/net/onrc/onos/ofcontroller/core/internal/TopoLinkServiceImpl.java b/src/main/java/net/onrc/onos/ofcontroller/core/internal/TopoLinkServiceImpl.java
index 3aea9a4..718816d 100644
--- a/src/main/java/net/onrc/onos/ofcontroller/core/internal/TopoLinkServiceImpl.java
+++ b/src/main/java/net/onrc/onos/ofcontroller/core/internal/TopoLinkServiceImpl.java
@@ -35,9 +35,7 @@
 
 	@Override
 	public List<Link> getActiveLinks() {
-		dbop = GraphDBManager.getDBOperation("ramcloud", "/tmp/ramcloud.conf");
-		//dbop = GraphDBManager.getDBOperation("", "");
-		//dbop.commit(); //Commit to ensure we see latest data
+		dbop = GraphDBManager.getDBOperation();
 		Iterable<ISwitchObject> switches = dbop.getActiveSwitches();
 		List<Link> links = new ArrayList<Link>(); 
 		for (ISwitchObject sw : switches) {
diff --git a/src/main/java/net/onrc/onos/ofcontroller/core/internal/TopoSwitchServiceImpl.java b/src/main/java/net/onrc/onos/ofcontroller/core/internal/TopoSwitchServiceImpl.java
index df5ab70..56e6b73 100644
--- a/src/main/java/net/onrc/onos/ofcontroller/core/internal/TopoSwitchServiceImpl.java
+++ b/src/main/java/net/onrc/onos/ofcontroller/core/internal/TopoSwitchServiceImpl.java
@@ -15,7 +15,7 @@
 	protected final static Logger log = LoggerFactory.getLogger(TopoSwitchServiceImpl.class);
 
 	public TopoSwitchServiceImpl(final String dbStore, String conf) {
-		op = GraphDBManager.getDBOperation("ramcloud", "/tmp/ramcloud.conf");
+		op = GraphDBManager.getDBOperation();
 	}
 
 	public TopoSwitchServiceImpl() {
diff --git a/src/main/java/net/onrc/onos/ofcontroller/floodlightlistener/NetworkGraphPublisher.java b/src/main/java/net/onrc/onos/ofcontroller/floodlightlistener/NetworkGraphPublisher.java
index bc5962a..99357be 100644
--- a/src/main/java/net/onrc/onos/ofcontroller/floodlightlistener/NetworkGraphPublisher.java
+++ b/src/main/java/net/onrc/onos/ofcontroller/floodlightlistener/NetworkGraphPublisher.java
@@ -90,7 +90,7 @@
             Thread.currentThread().setName("SwitchCleanup@" + old);
             try {
             	log.debug("Running cleanup thread");
-		op = GraphDBManager.getDBOperation("ramcloud", "/tmp/ramcloud.conf");
+		op = GraphDBManager.getDBOperation();
                 switchCleanup();
             }
             catch (Exception e) {
@@ -451,7 +451,7 @@
 		Map<String, String> configMap = context.getConfigParams(this);
 		String conf = configMap.get(DBConfigFile);
                 String dbStore = configMap.get(GraphDBStore);
-		op = GraphDBManager.getDBOperation("ramcloud", "/tmp/ramcloud.conf");
+		op = GraphDBManager.getDBOperation();
 
 		floodlightProvider =
 	            context.getServiceImpl(IFloodlightProviderService.class);
diff --git a/src/main/java/net/onrc/onos/ofcontroller/flowmanager/ApplnObjectType.java b/src/main/java/net/onrc/onos/ofcontroller/flowmanager/ApplnObjectType.java
index 8cb1316..6fa2cd1 100644
--- a/src/main/java/net/onrc/onos/ofcontroller/flowmanager/ApplnObjectType.java
+++ b/src/main/java/net/onrc/onos/ofcontroller/flowmanager/ApplnObjectType.java
@@ -4,10 +4,6 @@
  */
 package net.onrc.onos.ofcontroller.flowmanager;
 
-/**
- *
- * @author nickkaranatsios
- */
 public enum ApplnObjectType {
     FLOWPATH,
     FLOWENTRY,  
diff --git a/src/main/java/net/onrc/onos/ofcontroller/flowmanager/DBOperationType.java b/src/main/java/net/onrc/onos/ofcontroller/flowmanager/DBOperationType.java
index e0de595..8764ce4 100644
--- a/src/main/java/net/onrc/onos/ofcontroller/flowmanager/DBOperationType.java
+++ b/src/main/java/net/onrc/onos/ofcontroller/flowmanager/DBOperationType.java
@@ -4,10 +4,6 @@
  */
 package net.onrc.onos.ofcontroller.flowmanager;
 
-/**
- *
- * @author nickkaranatsios
- */
 public enum DBOperationType {
     ADD,
     UPDATE,
diff --git a/src/main/java/net/onrc/onos/ofcontroller/flowmanager/FlowDatabaseOperation.java b/src/main/java/net/onrc/onos/ofcontroller/flowmanager/FlowDatabaseOperation.java
index d8e50fc..cedfdfd 100755
--- a/src/main/java/net/onrc/onos/ofcontroller/flowmanager/FlowDatabaseOperation.java
+++ b/src/main/java/net/onrc/onos/ofcontroller/flowmanager/FlowDatabaseOperation.java
@@ -5,7 +5,6 @@
 import java.io.StringWriter;
 import java.util.ArrayList;
 import java.util.Collection;
-import java.util.LinkedList;
 import java.util.Map;
 
 import net.floodlightcontroller.core.IOFSwitch;
diff --git a/src/main/java/net/onrc/onos/ofcontroller/flowmanager/FlowEntity.java b/src/main/java/net/onrc/onos/ofcontroller/flowmanager/FlowEntity.java
index ff890b6..327fae5 100644
--- a/src/main/java/net/onrc/onos/ofcontroller/flowmanager/FlowEntity.java
+++ b/src/main/java/net/onrc/onos/ofcontroller/flowmanager/FlowEntity.java
@@ -19,10 +19,6 @@
 import java.util.List;
 import java.util.Set;
 
-/**
- *
- * @author nickkaranatsios
- */
 public class FlowEntity implements FlowEntityManager {
     private String primaryKey;
     // TODO: Should remove since not implemented.
@@ -214,7 +210,9 @@
                     if (srcVertex == null) continue;
                     for (int j = 0; j < childEntity.edges.size(); j++) {
                         EntityEdge edge = (EntityEdge) childEntity.edges.get(j);
-                        edgesToSet.add(new RamCloudEdgeEntity(srcVertex, ((IBaseObject) edge.dst).asVertex(), edge.dir, edge.label));
+                        if (edge !=null) {
+                            edgesToSet.add(new RamCloudEdgeEntity(srcVertex, ((IBaseObject) edge.dst).asVertex(), edge.dir, edge.label));
+                        }
                     }
                 }
                 graph.addEdges(edgesToSet);
diff --git a/src/main/java/net/onrc/onos/ofcontroller/flowmanager/FlowEntityManager.java b/src/main/java/net/onrc/onos/ofcontroller/flowmanager/FlowEntityManager.java
index 38e694b..5e45ee5 100644
--- a/src/main/java/net/onrc/onos/ofcontroller/flowmanager/FlowEntityManager.java
+++ b/src/main/java/net/onrc/onos/ofcontroller/flowmanager/FlowEntityManager.java
@@ -8,10 +8,6 @@
 import java.util.Map;
 import net.onrc.onos.graph.DBOperation;
 
-/**
- *
- * @author nickkaranatsios
- */
 public interface FlowEntityManager {
     public void setPrimaryKey(String key);
     public String getPrimaryKey();
diff --git a/src/main/java/net/onrc/onos/ofcontroller/flowmanager/FlowEventHandler.java b/src/main/java/net/onrc/onos/ofcontroller/flowmanager/FlowEventHandler.java
index 74c8075..5ff1dc5 100644
--- a/src/main/java/net/onrc/onos/ofcontroller/flowmanager/FlowEventHandler.java
+++ b/src/main/java/net/onrc/onos/ofcontroller/flowmanager/FlowEventHandler.java
@@ -126,7 +126,7 @@
      * Startup processing.
      */
     private void startup() {
-	this.dbHandler = GraphDBManager.getDBOperation("ramcloud", "/tmp/ramcloud.conf");
+	this.dbHandler = GraphDBManager.getDBOperation();
 
 	//
 	// Obtain the initial Topology state
diff --git a/src/main/java/net/onrc/onos/ofcontroller/flowmanager/FlowManager.java b/src/main/java/net/onrc/onos/ofcontroller/flowmanager/FlowManager.java
index 715f9df..f4664cc 100644
--- a/src/main/java/net/onrc/onos/ofcontroller/flowmanager/FlowManager.java
+++ b/src/main/java/net/onrc/onos/ofcontroller/flowmanager/FlowManager.java
@@ -87,8 +87,8 @@
      */
     @Override
     public void init(final String dbStore, final String conf) {
-	dbHandlerApi = GraphDBManager.getDBOperation("ramcloud", "/tmp/ramcloud.conf");
-	dbHandlerInner = GraphDBManager.getDBOperation("ramcloud", "/tmp/ramcloud.conf");
+	dbHandlerApi = GraphDBManager.getDBOperation();
+	dbHandlerInner = GraphDBManager.getDBOperation();
     }
 
     /**
diff --git a/src/main/java/net/onrc/onos/ofcontroller/flowprogrammer/FlowSynchronizer.java b/src/main/java/net/onrc/onos/ofcontroller/flowprogrammer/FlowSynchronizer.java
index bd98527..17ef14c 100644
--- a/src/main/java/net/onrc/onos/ofcontroller/flowprogrammer/FlowSynchronizer.java
+++ b/src/main/java/net/onrc/onos/ofcontroller/flowprogrammer/FlowSynchronizer.java
@@ -50,7 +50,7 @@
     private Map<IOFSwitch, FutureTask<SyncResult>> switchThreads; 
 
     public FlowSynchronizer() {
-	dbHandler = GraphDBManager.getDBOperation("ramcloud", "/tmp/ramcloud.conf");
+	dbHandler = GraphDBManager.getDBOperation();
 	switchThreads = new HashMap<IOFSwitch, FutureTask<SyncResult>>();
     }
 
diff --git a/src/main/java/net/onrc/onos/ofcontroller/topology/TopologyManager.java b/src/main/java/net/onrc/onos/ofcontroller/topology/TopologyManager.java
index bf2fd6f..cae29ce 100644
--- a/src/main/java/net/onrc/onos/ofcontroller/topology/TopologyManager.java
+++ b/src/main/java/net/onrc/onos/ofcontroller/topology/TopologyManager.java
@@ -80,7 +80,7 @@
      */
     public void init(final String dbStore, String config) {
 	try {
-	    dbHandler = GraphDBManager.getDBOperation("ramcloud", "/tmp/ramcloud.conf");
+	    dbHandler = GraphDBManager.getDBOperation();
 	} catch (Exception e) {
 	    log.error(e.getMessage());
 	}
