Check-point before refactoring the topology provider stuff.
diff --git a/core/trivial/src/main/java/org/onlab/onos/net/trivial/topology/impl/DefaultTopology.java b/core/trivial/src/main/java/org/onlab/onos/net/trivial/topology/impl/DefaultTopology.java
index c20acd8..3417ca1 100644
--- a/core/trivial/src/main/java/org/onlab/onos/net/trivial/topology/impl/DefaultTopology.java
+++ b/core/trivial/src/main/java/org/onlab/onos/net/trivial/topology/impl/DefaultTopology.java
@@ -1,8 +1,23 @@
 package org.onlab.onos.net.trivial.topology.impl;
 
+import com.google.common.collect.ImmutableMap;
+import com.google.common.collect.ImmutableSet;
+import com.google.common.collect.ImmutableSetMultimap;
+import org.onlab.graph.Graph;
+import org.onlab.graph.GraphPathSearch;
 import org.onlab.onos.net.AbstractModel;
+import org.onlab.onos.net.ConnectPoint;
+import org.onlab.onos.net.DeviceId;
+import org.onlab.onos.net.Link;
+import org.onlab.onos.net.Path;
 import org.onlab.onos.net.provider.ProviderId;
+import org.onlab.onos.net.topology.TopoEdge;
+import org.onlab.onos.net.topology.TopoVertex;
 import org.onlab.onos.net.topology.Topology;
+import org.onlab.onos.net.topology.TopologyCluster;
+import org.onlab.onos.net.topology.TopologyDescription;
+
+import java.util.Set;
 
 /**
  * Default implementation of the topology descriptor. This carries the
@@ -11,29 +26,33 @@
 public class DefaultTopology extends AbstractModel implements Topology {
 
     private final long time;
-    private final int clusterCount;
-    private final int deviceCount;
-    private final int linkCount;
     private final int pathCount;
 
+    private final Graph<TopoVertex, TopoEdge> graph;
+    private final ImmutableMap<DeviceId, GraphPathSearch.Result<TopoVertex, TopoEdge>> results;
+
+    private final ImmutableSet<TopologyCluster> clusters;
+    private final ImmutableSetMultimap<TopologyCluster, DeviceId> devicesByCluster;
+    private final ImmutableSetMultimap<TopologyCluster, Link> linksByCluster;
+    private final ImmutableSet connectPoints;
+
     /**
      * Creates a topology descriptor attributed to the specified provider.
      *
-     * @param providerId   identity of the provider
-     * @param time         creation time in system nanos
-     * @param clusterCount number of clusters
-     * @param deviceCount  number of devices
-     * @param linkCount    number of links
-     * @param pathCount    number of pre-computed paths
+     * @param providerId  identity of the provider
+     * @param description data describing the new topology
      */
-    DefaultTopology(ProviderId providerId, long time, int clusterCount,
-                    int deviceCount, int linkCount, int pathCount) {
+    DefaultTopology(ProviderId providerId, TopologyDescription description) {
         super(providerId);
-        this.time = time;
-        this.clusterCount = clusterCount;
-        this.deviceCount = deviceCount;
-        this.linkCount = linkCount;
-        this.pathCount = pathCount;
+        this.time = description.timestamp();
+        this.graph = description.graph();
+        this.results = description.pathsBySource();
+        this.clusters = description.clusters();
+        this.devicesByCluster = description.devicesByCluster();
+        this.linksByCluster = description.linksByCluster();
+
+        this.connectPoints = ImmutableSet.of();
+        this.pathCount = 0;
     }
 
     @Override
@@ -43,17 +62,17 @@
 
     @Override
     public int clusterCount() {
-        return clusterCount;
+        return clusters.size();
     }
 
     @Override
     public int deviceCount() {
-        return deviceCount;
+        return graph.getVertexes().size();
     }
 
     @Override
     public int linkCount() {
-        return linkCount;
+        return graph.getEdges().size();
     }
 
     @Override
@@ -61,4 +80,23 @@
         return pathCount;
     }
 
+    Set<TopologyCluster> getClusters() {
+        return clusters;
+    }
+
+    Graph<TopoVertex, TopoEdge> getGraph() {
+        return graph;
+    }
+
+    boolean isInfrastructure(ConnectPoint connectPoint) {
+        return connectPoints.contains(connectPoint);
+    }
+
+    boolean isInBroadcastTree(ConnectPoint connectPoint) {
+        return false;
+    }
+
+    Set<Path> getPaths(DeviceId src, DeviceId dst) {
+        return null; // pointToPointPaths.get(key(src, dst));
+    }
 }