Adding model abstractions to help flesh-out the concepts.
diff --git a/net/api/src/main/java/org/onlab/onos/net/topology/TopologyService.java b/net/api/src/main/java/org/onlab/onos/net/topology/TopologyService.java
new file mode 100644
index 0000000..4e1211a
--- /dev/null
+++ b/net/api/src/main/java/org/onlab/onos/net/topology/TopologyService.java
@@ -0,0 +1,39 @@
+package org.onlab.onos.net.topology;
+
+import org.onlab.onos.net.Topology;
+
+/**
+ * Service for providing network topology information.
+ */
+public interface TopologyService {
+
+    /**
+     * Returns the current topology descriptor.
+     *
+     * @return current topology
+     */
+    Topology currentTopology();
+
+    // TODO: Figure out hot to best export graph traversal methods via Graph/Vertex/Edge
+    // TODO: figure out how we want this to be presented, via Topology or via TopologyService
+    // Set<TopologyCluster> getClusters(Topology topology);
+    // Set<Path> getPaths(Topology topology, DeviceId src, DeviceId dst);
+    // Set<Path> getPaths(Topology topology, DeviceId src, DeviceId dst, LinkWeight weight);
+    // boolean isInfrastructure(Topology topology, ConnectPoint connectPoint);
+    // boolean isInBroadcastTree(Topology topology, ConnectPoint connectPoint);
+
+    /**
+     * Adds the specified topology listener.
+     *
+     * @param listener topology listener
+     */
+    void addListener(TopologyListener listener);
+
+    /**
+     * Removes the specified topology listener.
+     *
+     * @param listener topology listener
+     */
+    void removeListener(TopologyListener listener);
+
+}