diff --git a/web/gui/src/main/webapp/app/view/topo/topo.css b/web/gui/src/main/webapp/app/view/topo/topo.css
index 48c879a..01300ff 100644
--- a/web/gui/src/main/webapp/app/view/topo/topo.css
+++ b/web/gui/src/main/webapp/app/view/topo/topo.css
@@ -20,22 +20,15 @@
  @author Simon Hunt
  */
 
-#ov-topo .msg {
-    font-family: "Bookman", Georgia, "Times New Roman", serif;
-    font-size: 40pt;
-    font-weight: bold;
-    font-style: italic;
-    color: seagreen;
-}
-
 #ov-topo svg {
     background-color: #fff;
-    border: 1px solid red;
+    /* For Debugging the placement of the SVG layer... */
+    /*border: 1px solid red;*/
 }
 
 #ov-topo svg #topo-map {
     stroke-width: 2px;
     /*stroke: #eee;*/
-    stroke: #445;
+    stroke: #88b;
     fill: transparent;
 }
\ No newline at end of file
diff --git a/web/gui/src/main/webapp/app/view/topo/topo.html b/web/gui/src/main/webapp/app/view/topo/topo.html
index 2e25c74..8ed618b 100644
--- a/web/gui/src/main/webapp/app/view/topo/topo.html
+++ b/web/gui/src/main/webapp/app/view/topo/topo.html
@@ -3,5 +3,5 @@
     <svg viewBox="0 0 1000 1000"
          resize
          ng-style="resizeWithOffset(56, 12)"
-         notifier="notifyResize(params)"></svg>
+         notifier="ctrl.notifyResize()"></svg>
 </div>
diff --git a/web/gui/src/main/webapp/app/view/topo/topo.js b/web/gui/src/main/webapp/app/view/topo/topo.js
index 733e0c0..cb0c44e 100644
--- a/web/gui/src/main/webapp/app/view/topo/topo.js
+++ b/web/gui/src/main/webapp/app/view/topo/topo.js
@@ -29,7 +29,7 @@
     ];
 
     // references to injected services etc.
-    var $log, $window, ks, zs, gs, ms;
+    var $log, ks, zs, gs, ms;
 
     // DOM elements
     var ovtopo, svg, defs, zoomLayer, map;
@@ -86,8 +86,8 @@
             sc = zoomer.scale();
         $log.log('ZOOM: translate = ' + tr + ', scale = ' + sc);
 
-        // TODO: keep the map lines constant width while zooming
-        //bgImg.style('stroke-width', 2.0 / scale + 'px');
+        // keep the map lines constant width while zooming
+        map.style('stroke-width', (2.0 / sc) + 'px');
     }
 
     function setUpZoom() {
@@ -101,13 +101,14 @@
     }
 
 
+    // callback invoked when the SVG view has been resized..
+    function svgResized(w, h) {
+        // not used now, but may be required later...
+    }
+
     // --- Background Map ------------------------------------------------
 
-    function setUpMap() {
-        map = zoomLayer.append('g').attr('id', 'topo-map');
-        //ms.loadMapInto(map, '*continental_us', {mapFillScale:0.5});
-        ms.loadMapInto(map, '*continental_us');
-
+    function showCallibrationPoints() {
         // temp code for calibration
         var points = [
             [0, 0], [0, 1000], [1000, 0], [1000, 1000]
@@ -122,25 +123,31 @@
             .style('fill', 'red');
     }
 
+    function setUpMap() {
+        map = zoomLayer.append('g').attr('id', 'topo-map');
+        //ms.loadMapInto(map, '*continental_us', {mapFillScale:0.5});
+        ms.loadMapInto(map, '*continental_us');
+        //showCallibrationPoints();
+    }
+
     // --- Controller Definition -----------------------------------------
 
     angular.module('ovTopo', moduleDependencies)
 
         .controller('OvTopoCtrl', [
-            '$log', '$window',
+            '$log',
             'KeyService', 'ZoomService', 'GlyphService', 'MapService',
 
-        function (_$log_, _$window_, _ks_, _zs_, _gs_, _ms_) {
+        function (_$log_, _ks_, _zs_, _gs_, _ms_) {
             var self = this;
             $log = _$log_;
-            $window = _$window_;
             ks = _ks_;
             zs = _zs_;
             gs = _gs_;
             ms = _ms_;
 
             self.notifyResize = function () {
-                $log.log('Hey, we changed size');
+                svgResized(svg.style('width'), svg.style('height'));
             };
 
             // svg layer and initialization of components
