diff --git a/src/main/java/net/floodlightcontroller/core/internal/SwitchStorageImpl.java b/src/main/java/net/floodlightcontroller/core/internal/SwitchStorageImpl.java
index 68633b1..3bb6c87 100644
--- a/src/main/java/net/floodlightcontroller/core/internal/SwitchStorageImpl.java
+++ b/src/main/java/net/floodlightcontroller/core/internal/SwitchStorageImpl.java
@@ -68,22 +68,26 @@
 		Vertex sw;
 		try {
             if ((sw = graph.getVertices("dpid",dpid).iterator().next()) != null) {
-            	log.info("SwitchStorage:addPort dpid:{} port:{}", dpid, port);
+            	log.info("SwitchStorage:addPort dpid:{} port:{}", dpid, port.getPortNumber());
             	// TODO: Check if port exists
-            	Vertex p = graph.addVertex(null);
-            	p.setProperty("type","port");
-            	p.setProperty("number",port.getPortNumber());
-            	p.setProperty("state",port.getState());
-            	p.setProperty("desc",port.getName());
-            	Edge e = graph.addEdge(null, sw, p, "on");
-            	e.setProperty("state","ACTIVE");
-            	e.setProperty("number", port.getPortNumber());
-            	
-            	graph.stopTransaction(Conclusion.SUCCESS);
+            	if (sw.query().direction(Direction.OUT).labels("on").has("number",port.getPortNumber()).vertices().iterator().hasNext()) {
+            		//TODO: Do nothing for now 
+            	} else {
+            		Vertex p = graph.addVertex(null);
+            		p.setProperty("type","port");
+            		p.setProperty("number",port.getPortNumber());
+            		p.setProperty("state",port.getState());
+            		p.setProperty("desc",port.getName());
+            		Edge e = graph.addEdge(null, sw, p, "on");
+            		e.setProperty("state","ACTIVE");
+            		e.setProperty("number", port.getPortNumber());
+                     	
+            		graph.stopTransaction(Conclusion.SUCCESS);
+            	}
             }
 		} catch (TitanException e) {
              // TODO: handle exceptions
-			log.info("SwitchStorage:addPort dpid:{} port:{}", dpid, port);
+			log.info("SwitchStorage:addPort dpid:{} port:{}", dpid, port.getPortNumber());
 		}	
 
 	}
@@ -186,7 +190,7 @@
 		db.setProperty("storage.hostname","127.0.0.1");
         graph = TitanFactory.open(db);
         
-        // FIXME: 
+        // FIXME: Creation on Indexes should be done only once
         Set<String> s = graph.getIndexedKeys(Vertex.class);
         if (!s.contains("dpid")) {
            graph.createKeyIndex("dpid", Vertex.class);
