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 d34ac46..126d299 100644
--- a/src/main/java/net/onrc/onos/ofcontroller/networkgraph/NetworkGraphDatastore.java
+++ b/src/main/java/net/onrc/onos/ofcontroller/networkgraph/NetworkGraphDatastore.java
@@ -164,7 +164,7 @@
 
 	public void addLink(LinkEvent linkEvent) {
 		log.debug("Adding link {}", linkEvent);
-		
+
 		RCLink rcLink = new RCLink(linkEvent.getSrc().getDpid(), linkEvent.getSrc().getNumber(),
 				linkEvent.getDst().getDpid(), linkEvent.getDst().getNumber());
 
@@ -219,6 +219,7 @@
 				//rcDstPort.read();
 				rcLink.read();
 			} catch (ObjectDoesntExistException e) {
+			    // XXX Note: This error might be harmless, if triggered by out-dated remove Link event
 				log.error("Remove link failed {}", linkEvent, e);
 				return;
 			}
diff --git a/src/main/java/net/onrc/onos/ofcontroller/networkgraph/NetworkGraphImpl.java b/src/main/java/net/onrc/onos/ofcontroller/networkgraph/NetworkGraphImpl.java
index 921907e..176e793 100644
--- a/src/main/java/net/onrc/onos/ofcontroller/networkgraph/NetworkGraphImpl.java
+++ b/src/main/java/net/onrc/onos/ofcontroller/networkgraph/NetworkGraphImpl.java
@@ -119,6 +119,7 @@
 	 */
 	private void processEvents(Collection<EventEntry<TopologyEvent>> events) {
 	    for (EventEntry<TopologyEvent> event : events) {
+		// TODO ignore event triggered by myself
 		TopologyEvent topologyEvent = event.eventData();
 		switch (event.eventType()) {
 		case ENTRY_ADD:
@@ -285,6 +286,9 @@
 
 	@Override
 	public void removeLinkEvent(LinkEvent linkEvent) {
+	    // TODO may need to distinguish internal event, which checks
+	    // ownership of dst-dpid of this link, and only write to DB
+	    // if it is owner of the dpid
 		if (prepareForRemoveLinkEvent(linkEvent)) {
 			datastore.removeLink(linkEvent);
 			removeLink(linkEvent);
@@ -421,6 +425,8 @@
 		    log.debug("Removing Link {} on Port {}", link, portEvt);
 		    LinkEvent linkEvent = new LinkEvent(link.getSourceSwitchDpid(), link.getSourcePortNumber(), link.getDestinationSwitchDpid(), link.getDestinationPortNumber());
 		    // calling Discovery API to wipe from DB, etc.
+		    // XXX call internal remove Link, which will check
+		    // ownership and modify only if it is the owner
 		    removeLinkEvent(linkEvent);
 		}
 		return true;
@@ -559,6 +565,7 @@
 		putSwitch(switchEvent);
 	    }
 	    // TODO handle invariant violation
+	    // TODO trigger instance local topology event handler
 	}
 
 	@Override
@@ -567,6 +574,7 @@
 		removeSwitch(switchEvent);
 	    }
 	    // TODO handle invariant violation
+	    // TODO trigger instance local topology event handler
 	}
 
 	@Override
@@ -575,6 +583,7 @@
 		putPort(portEvent);
 	    }
 	    // TODO handle invariant violation
+	    // TODO trigger instance local topology event handler
 	}
 
 	@Override
@@ -583,6 +592,7 @@
 		removePort(portEvent);
 	    }
 	    // TODO handle invariant violation
+	    // TODO trigger instance local topology event handler
 	}
 
 	@Override
@@ -591,6 +601,7 @@
 		putLink(linkEvent);
 	    }
 	    // TODO handle invariant violation
+	    // TODO trigger instance local topology event handler
 	}
 
 	@Override
@@ -599,6 +610,7 @@
 		removeLink(linkEvent);
 	    }
 	    // TODO handle invariant violation
+	    // TODO trigger instance local topology event handler
 	}
 
 	@Override
@@ -607,6 +619,7 @@
 		putDevice(deviceEvent);
 	    }
 	    // TODO handle invariant violation
+	    // TODO trigger instance local topology event handler
 	}
 
 	@Override
@@ -615,6 +628,7 @@
 		removeDevice(deviceEvent);
 	    }
 	    // TODO handle invariant violation
+	    // TODO trigger instance local topology event handler
 	}
 
 	/* ************************************************
@@ -675,7 +689,7 @@
 		PortEvent portEvt = new PortEvent(port.getDpid(), port.getNumber());
 		portsToRemove.add(portEvt);
 	    }
-	    for (PortEvent portEvt : portsToRemove ) {
+	    for (PortEvent portEvt : portsToRemove) {
 		// XXX calling removePortEvent() may trigger duplicate event, once at prepare phase, second time here
 		// If event can be squashed, ignored etc. at receiver side it shouldn't be a problem, but if not
 		// need to re-visit this issue.
@@ -1062,7 +1076,8 @@
 
 	@Deprecated
 	public void loadWholeTopologyFromDB() {
-	    // XXX clear everything first?
+	    // XXX May need to clear whole topology first, depending on
+	    // how we initially subscribe to replication events
 
 	    for (RCSwitch sw : RCSwitch.getAllSwitches()) {
 		if ( sw.getStatus() != RCSwitch.STATUS.ACTIVE ) {
@@ -1087,6 +1102,7 @@
 	    //	}
 
 	    for (RCLink l : RCLink.getAllLinks()) {
+		// TODO check if src/dst switch/port exist before triggering event
 		putLinkReplicationEvent( new LinkEvent(l.getSrc().dpid, l.getSrc().number, l.getDst().dpid, l.getDst().number));
 	    }
 	}
