Adding more topology manager/store implementation.
diff --git a/core/trivial/src/main/java/org/onlab/onos/net/trivial/impl/SimpleTopologyManager.java b/core/trivial/src/main/java/org/onlab/onos/net/trivial/impl/SimpleTopologyManager.java
index 1e95598..4188cac 100644
--- a/core/trivial/src/main/java/org/onlab/onos/net/trivial/impl/SimpleTopologyManager.java
+++ b/core/trivial/src/main/java/org/onlab/onos/net/trivial/impl/SimpleTopologyManager.java
@@ -72,25 +72,26 @@
     }
 
     @Override
-    protected TopologyProviderService createProviderService(TopologyProvider provider) {
-        return new InternalTopologyProviderService(provider);
+    public Topology currentTopology() {
+        return store.currentTopology();
     }
 
     @Override
-    public Topology currentTopology() {
-        return null;
+    public boolean isLatest(Topology topology) {
+        checkNotNull(topology, TOPOLOGY_NULL);
+        return store.isLatest(topology);
     }
 
     @Override
     public Set<TopologyCluster> getClusters(Topology topology) {
         checkNotNull(topology, TOPOLOGY_NULL);
-        return null;
+        return store.getClusters(topology);
     }
 
     @Override
     public Graph<TopoVertex, TopoEdge> getGraph(Topology topology) {
         checkNotNull(topology, TOPOLOGY_NULL);
-        return null;
+        return store.getGraph(topology);
     }
 
     @Override
@@ -98,7 +99,7 @@
         checkNotNull(topology, TOPOLOGY_NULL);
         checkNotNull(src, DEVICE_ID_NULL);
         checkNotNull(dst, DEVICE_ID_NULL);
-        return null;
+        return store.getPaths(topology, src, dst);
     }
 
     @Override
@@ -107,21 +108,21 @@
         checkNotNull(src, DEVICE_ID_NULL);
         checkNotNull(dst, DEVICE_ID_NULL);
         checkNotNull(weight, "Link weight cannot be null");
-        return null;
+        return store.getPaths(topology, src, dst, weight);
     }
 
     @Override
     public boolean isInfrastructure(Topology topology, ConnectPoint connectPoint) {
         checkNotNull(topology, TOPOLOGY_NULL);
         checkNotNull(connectPoint, CONNECTION_POINT_NULL);
-        return false;
+        return store.isInfrastructure(topology, connectPoint);
     }
 
     @Override
     public boolean isInBroadcastTree(Topology topology, ConnectPoint connectPoint) {
         checkNotNull(topology, TOPOLOGY_NULL);
         checkNotNull(connectPoint, CONNECTION_POINT_NULL);
-        return false;
+        return store.isInBroadcastTree(topology, connectPoint);
     }
 
     @Override
@@ -135,6 +136,11 @@
     }
 
     // Personalized host provider service issued to the supplied provider.
+    @Override
+    protected TopologyProviderService createProviderService(TopologyProvider provider) {
+        return new InternalTopologyProviderService(provider);
+    }
+
     private class InternalTopologyProviderService
             extends AbstractProviderService<TopologyProvider>
             implements TopologyProviderService {
@@ -147,8 +153,12 @@
         public void topologyChanged(TopologyDescription topoDescription,
                                     List<Event> reasons) {
             checkNotNull(topoDescription, "Topology description cannot be null");
-            log.info("Topology changed due to: {}",
-                     reasons == null ? "initial compute" : reasons);
+            TopologyEvent event = store.updateTopology(topoDescription, reasons);
+            if (event != null) {
+                log.info("Topology changed due to: {}",
+                         reasons == null ? "initial compute" : reasons);
+                eventDispatcher.post(event);
+            }
         }
     }