diff --git a/web/gui/src/main/java/org/onosproject/ui/impl/topo/Traffic2Monitor.java b/web/gui/src/main/java/org/onosproject/ui/impl/topo/Traffic2Monitor.java
index cb91e0d..0653832 100644
--- a/web/gui/src/main/java/org/onosproject/ui/impl/topo/Traffic2Monitor.java
+++ b/web/gui/src/main/java/org/onosproject/ui/impl/topo/Traffic2Monitor.java
@@ -19,9 +19,13 @@
 
 import org.onosproject.ui.impl.TrafficMonitorBase;
 import org.onosproject.ui.impl.topo.util.ServicesBundle;
+import org.onosproject.ui.impl.topo.util.TrafficLink;
+import org.onosproject.ui.topo.Highlights;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
+import java.util.Set;
+
 /**
  * Encapsulates the behavior of monitoring specific traffic patterns in the
  * Topology-2 view.
@@ -31,6 +35,7 @@
     private static final Logger log =
             LoggerFactory.getLogger(Traffic2Monitor.class);
 
+    // link back to our message handler (for outbound messages)
     private final Topo2TrafficMessageHandler msgHandler;
 
     /**
@@ -49,24 +54,32 @@
     @Override
     protected void sendAllFlowTraffic() {
         log.debug("TOPO-2-TRAFFIC: sendAllFlowTraffic");
+        Highlights h = trafficSummary(TrafficLink.StatsType.FLOW_STATS);
+
         // TODO
     }
 
     @Override
     protected void sendAllPortTrafficBits() {
         log.debug("TOPO-2-TRAFFIC: sendAllPortTrafficBits");
+        Highlights h = trafficSummary(TrafficLink.StatsType.PORT_STATS);
+
         // TODO
     }
 
     @Override
     protected void sendAllPortTrafficPackets() {
         log.debug("TOPO-2-TRAFFIC: sendAllPortTrafficPackets");
+        Highlights h = trafficSummary(TrafficLink.StatsType.PORT_PACKET_STATS);
+
         // TODO
     }
 
     @Override
     protected void sendClearHighlights() {
         log.debug("TOPO-2-TRAFFIC: sendClearHighlights");
+        Highlights h = new Highlights();
+
         // TODO
     }
 
@@ -83,4 +96,16 @@
     @Override
     protected void clearSelection() {
     }
+
+    // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
+    // -- link aggregation
+
+
+    @Override
+    protected Set<TrafficLink> doAggregation(Set<TrafficLink> linksWithTraffic) {
+        // TODO: figure out how to aggregate the link data...
+        log.debug("Need to aggregate {} links", linksWithTraffic.size());
+
+        return linksWithTraffic;
+    }
 }
