diff --git a/src/main/java/net/floodlightcontroller/core/internal/TopoSwitchServiceImpl.java b/src/main/java/net/floodlightcontroller/core/internal/TopoSwitchServiceImpl.java
index 502fad6..f2316b9 100644
--- a/src/main/java/net/floodlightcontroller/core/internal/TopoSwitchServiceImpl.java
+++ b/src/main/java/net/floodlightcontroller/core/internal/TopoSwitchServiceImpl.java
@@ -4,49 +4,52 @@
 import net.floodlightcontroller.core.INetMapTopologyObjects.ISwitchObject;
 import net.floodlightcontroller.core.INetMapTopologyService.ITopoSwitchService;
 import net.onrc.onos.util.GraphDBConnection;
-import net.onrc.onos.util.GraphDBConnection.Transaction;
+import net.onrc.onos.util.GraphDBOperation;
 
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
 public class TopoSwitchServiceImpl implements ITopoSwitchService {
 	
-	private GraphDBConnection conn;
+	private GraphDBOperation op;
 	protected static Logger log = LoggerFactory.getLogger(TopoSwitchServiceImpl.class);
 
+	public TopoSwitchServiceImpl(String conf) {
+		op = new GraphDBOperation(GraphDBConnection.getInstance(conf));
+	}
 
+	public TopoSwitchServiceImpl() {
+		this("/tmp/cassandra.titan");
+	}
+	
 	public void finalize() {
 		close();
 	}
 	
 	@Override
 	public void close() {
-
-		conn.close();
+		op.close();
 	}
 	
 	@Override
 	public Iterable<ISwitchObject> getActiveSwitches() {
 		// TODO Auto-generated method stub
-		conn = GraphDBConnection.getInstance("/tmp/cassandra.titan");
-		conn.close(); //Commit to ensure we see latest data
-		return conn.utils().getActiveSwitches(conn);
+		op.close(); //Commit to ensure we see latest data
+		return op.getActiveSwitches();
 	}
 
 	@Override
 	public Iterable<ISwitchObject> getAllSwitches() {
 		// TODO Auto-generated method stub
-		conn = GraphDBConnection.getInstance("/tmp/cassandra.titan");
-		conn.close(); //Commit to ensure we see latest data
-		return conn.utils().getAllSwitches(conn);
+		op.close(); //Commit to ensure we see latest data
+		return op.getAllSwitches();
 	}
 
 	@Override
 	public Iterable<ISwitchObject> getInactiveSwitches() {
 		// TODO Auto-generated method stub
-		conn = GraphDBConnection.getInstance("/tmp/cassandra.titan");
-		conn.close(); //Commit to ensure we see latest data
-		return conn.utils().getInactiveSwitches(conn);
+		op.close(); //Commit to ensure we see latest data
+		return op.getInactiveSwitches();
 	}
 
 	@Override
