diff --git a/src/main/java/net/onrc/onos/ofcontroller/networkgraph/Switch.java b/src/main/java/net/onrc/onos/ofcontroller/networkgraph/Switch.java
index b1dce75..8e7b153 100644
--- a/src/main/java/net/onrc/onos/ofcontroller/networkgraph/Switch.java
+++ b/src/main/java/net/onrc/onos/ofcontroller/networkgraph/Switch.java
@@ -18,6 +18,7 @@
 
 
 	// Graph traversal API
+	// XXX What is the Definition of neighbor? Link exist in both direction or one-way is sufficient to be a neighbor, etc.
 	public Iterable<Switch> getNeighbors();
 
 	public Iterable<Link> getOutgoingLinks();
diff --git a/src/main/java/net/onrc/onos/ofcontroller/networkgraph/SwitchImpl.java b/src/main/java/net/onrc/onos/ofcontroller/networkgraph/SwitchImpl.java
index 6d98740..a8c824d 100644
--- a/src/main/java/net/onrc/onos/ofcontroller/networkgraph/SwitchImpl.java
+++ b/src/main/java/net/onrc/onos/ofcontroller/networkgraph/SwitchImpl.java
@@ -3,8 +3,10 @@
 import java.util.Collection;
 import java.util.Collections;
 import java.util.HashMap;
+import java.util.HashSet;
 import java.util.LinkedList;
 import java.util.Map;
+import java.util.Set;
 
 import net.onrc.onos.datastore.topology.RCPort;
 import net.onrc.onos.datastore.topology.RCSwitch;
@@ -46,13 +48,20 @@
 
 	@Override
 	public Iterable<Switch> getNeighbors() {
-		// TODO Auto-generated method stub
-		return null;
+		Set<Switch> neighbors = new HashSet<>();
+		for (Link link : getOutgoingLinks()) {
+		    neighbors.add(link.getDestinationSwitch());
+		}
+		// XXX should incoming considered neighbor?
+		for (Link link : getIncomingLinks()) {
+		    neighbors.add(link.getSourceSwitch());
+		}
+		return neighbors;
 	}
 
 	@Override
 	public Link getLinkToNeighbor(Long neighborDpid) {
-		for (Link link : graph.getOutgoingLinksFromSwitch(dpid)) {
+		for (Link link : getOutgoingLinks()) {
 			if (link.getDestinationSwitch().getDpid().equals(neighborDpid) ) {
 				return link;
 			}
@@ -72,8 +81,6 @@
 
 	public Port removePort(Port port) {
 	    Port p = this.ports.remove(port.getNumber());
-	    // XXX Do we need to validate instance equality?
-	    assert( p == port );
 	    return p;
 	}
 
