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 5f42ef2..0530147 100644
--- a/src/main/java/net/onrc/onos/ofcontroller/networkgraph/NetworkGraphImpl.java
+++ b/src/main/java/net/onrc/onos/ofcontroller/networkgraph/NetworkGraphImpl.java
@@ -11,14 +11,21 @@
 
 import edu.stanford.ramcloud.JRamCloud.ObjectDoesntExistException;
 
+/**
+ * The "NB" read-only Network Map.
+ *
+ * TODO Current implementation directly read from DB, but
+ * eventually, it should read from In-memory shared Network Map instance within ONOS process.
+ *
+ */
 public class NetworkGraphImpl implements NetworkGraph {
 
 	private static final Logger log = LoggerFactory.getLogger(NetworkGraphImpl.class);
-	
+
 	@Override
 	public Switch getSwitch(long dpid) {
 		SwitchImpl sw = new SwitchImpl(this);
-		
+
 		RCSwitch rcSwitch = new RCSwitch(dpid);
 		try {
 			rcSwitch.read();
@@ -26,28 +33,28 @@
 			log.warn("Tried to get a switch that doesn't exist {}", dpid);
 			return null;
 		}
-		
+
 		sw.setDpid(rcSwitch.getDpid());
-		
+
 		for (byte[] portId : rcSwitch.getAllPortIds()) {
 			RCPort rcPort = RCPort.createFromKey(portId);
 			try {
 				rcPort.read();
-				
+
 				PortImpl port = new PortImpl(this);
 				//port.setDpid(dpid);
-				
+
 				// TODO why are port numbers long?
 				//port.setPortNumber((short)rcPort.getNumber());
-				
+
 				port.setSwitch(sw);
 				sw.addPort(port);
-				
+
 			} catch (ObjectDoesntExistException e) {
 				log.warn("Tried to read port that doesn't exist", rcPort);
 			}
 		}
-		
+
 		return sw;
 	}
 
