diff --git a/src/main/java/net/onrc/onos/util/GraphDBConnection.java b/src/main/java/net/onrc/onos/util/GraphDBConnection.java
index e25a0c6..9a50f47 100644
--- a/src/main/java/net/onrc/onos/util/GraphDBConnection.java
+++ b/src/main/java/net/onrc/onos/util/GraphDBConnection.java
@@ -80,7 +80,6 @@
 	}
 
 	public FramedGraph<TitanGraph> getFramedGraph() {
-
 		if (isValid()) {
 			FramedGraph<TitanGraph> fg = new FramedGraph<TitanGraph>(graph);
 			return fg;
@@ -91,7 +90,6 @@
 	}
 
 	protected EventTransactionalGraph<TitanGraph> getEventGraph() {
-
 		if (isValid()) {
 			return eg;
 		} else {
@@ -106,65 +104,28 @@
 	}
 
 	public Boolean isValid() {
-
 		return (graph != null || graph.isOpen());
 	}
 
-	public void startTx() {
-
-	}
-
-	public void endTx(Transaction tx) {
+	public void commit() {
 		try {
-			switch (tx) {
-			case COMMIT:
-				graph.commit();
-			case ROLLBACK:
-				graph.rollback();
-			}
-		} catch (Exception e) {
-			// TODO Auto-generated catch block
+			graph.commit();
+		}
+		catch (Exception e) {
 			log.error("{}", e.toString());
 		}
 	}
 
-	public void endTx(TransactionHandle tr, Transaction tx) {
-		switch (tx) {
-		case COMMIT:
-			if (tr != null && tr.tr != null) {
-				tr.tr.commit();
-			} else {
-				graph.commit();
-			}
-		case ROLLBACK:
-			if (tr != null && tr.tr != null) {
-				tr.tr.rollback();
-			} else {
-				graph.rollback();
-			}
-		}
-	}
-
-	public void endTx(Transaction tx, GenerateEvent fire) {
-
+	public void rollback() {
 		try {
-			if (fire.equals(GenerateEvent.TRUE)) {
-				switch (tx) {
-				case COMMIT:
-					eg.commit();
-				case ROLLBACK:
-					eg.rollback();
-				}
-			} else {
-				endTx(tx);
-			}
-		} catch (Exception e) {
-			// TODO Auto-generated catch block
-			e.printStackTrace();
+			graph.rollback();
+		}
+		catch (Exception e) {
+			log.error("{}", e.toString());
 		}
 	}
 
 	public void close() {
-		endTx(Transaction.COMMIT);
+		commit();
 	}
 }
