diff --git a/web/gui/src/main/webapp/app/fw/widget/tableBuilder.js b/web/gui/src/main/webapp/app/fw/widget/tableBuilder.js
index 9a09043..93249ed 100644
--- a/web/gui/src/main/webapp/app/fw/widget/tableBuilder.js
+++ b/web/gui/src/main/webapp/app/fw/widget/tableBuilder.js
@@ -21,7 +21,7 @@
     'use strict';
 
     // injected refs
-    var $log, $window, fs, wss;
+    var $log, fs, wss;
 
     // example params to buildTable:
     // {
@@ -72,11 +72,10 @@
 
     angular.module('onosWidget')
         .factory('TableBuilderService',
-        ['$log', '$window', 'FnService', 'WebSocketService',
+        ['$log', 'FnService', 'WebSocketService',
 
-            function (_$log_, _$window_, _fs_, _wss_) {
+            function (_$log_, _fs_, _wss_) {
                 $log = _$log_;
-                $window = _$window_;
                 fs = _fs_;
                 wss = _wss_;
 
diff --git a/web/gui/src/main/webapp/app/view/device/device.js b/web/gui/src/main/webapp/app/view/device/device.js
index 0f02124..496a654 100644
--- a/web/gui/src/main/webapp/app/view/device/device.js
+++ b/web/gui/src/main/webapp/app/view/device/device.js
@@ -34,7 +34,7 @@
     // constants
     var topPdg = 13,
         ctnrPdg = 24,
-        scrollSize = 10,
+        scrollSize = 17,
         portsTblPdg = 50,
 
         pName = 'device-details-panel',
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 8faa896..68e4d68 100644
--- a/web/gui/src/main/webapp/app/view/topo/topo.js
+++ b/web/gui/src/main/webapp/app/view/topo/topo.js
@@ -139,6 +139,7 @@
 
     function resetZoom() {
         zoomer.reset();
+        flash.flash('Pan and zoom reset');
     }
 
     function equalizeMasters() {
diff --git a/web/gui/src/main/webapp/app/view/topo/topoD3.js b/web/gui/src/main/webapp/app/view/topo/topoD3.js
index 39c3495..1b0a128 100644
--- a/web/gui/src/main/webapp/app/view/topo/topoD3.js
+++ b/web/gui/src/main/webapp/app/view/topo/topoD3.js
@@ -134,6 +134,11 @@
 
     function incDevLabIndex() {
         deviceLabelIndex = (deviceLabelIndex+1) % 3;
+        switch(deviceLabelIndex) {
+            case 0: return 'Hide device labels';
+            case 1: return 'Show friendly device labels';
+            case 2: return 'Show device ID labels';
+        }
     }
 
     // Returns the newly computed bounding box of the rectangle
diff --git a/web/gui/src/main/webapp/app/view/topo/topoForce.js b/web/gui/src/main/webapp/app/view/topo/topoForce.js
index 3097343..b365db8 100644
--- a/web/gui/src/main/webapp/app/view/topo/topoForce.js
+++ b/web/gui/src/main/webapp/app/view/topo/topoForce.js
@@ -413,7 +413,7 @@
     }
 
     function cycleDeviceLabels() {
-        td3.incDevLabIndex();
+        flash.flash(td3.incDevLabIndex());
         tms.findDevices().forEach(function (d) {
             td3.updateDeviceLabel(d);
         });
diff --git a/web/gui/src/main/webapp/app/view/topo/topoOblique.js b/web/gui/src/main/webapp/app/view/topo/topoOblique.js
index a505368..d04965c 100644
--- a/web/gui/src/main/webapp/app/view/topo/topoOblique.js
+++ b/web/gui/src/main/webapp/app/view/topo/topoOblique.js
@@ -24,7 +24,7 @@
     'use strict';
 
     // injected refs
-    var $log, fs, sus;
+    var $log, fs, sus, flash;
 
     // api to topoForce
     var api;
@@ -217,12 +217,13 @@
 
 angular.module('ovTopo')
     .factory('TopoObliqueService',
-    ['$log', 'FnService', 'SvgUtilService',
+    ['$log', 'FnService', 'SvgUtilService', 'FlashService',
 
-    function (_$log_, _fs_, _sus_) {
+    function (_$log_, _fs_, _sus_, _flash_) {
         $log = _$log_;
         fs = _fs_;
         sus = _sus_;
+        flash = _flash_;
 
         function initOblique(_api_) {
             api = _api_;
@@ -234,8 +235,10 @@
             oblique = !oblique;
             if (oblique) {
                 api.force().stop();
+                flash.flash('Oblique view');
                 toObliqueView();
             } else {
+                flash.flash('Normal view');
                 toNormalView();
             }
         }
diff --git a/web/gui/src/main/webapp/app/view/topo/topoTraffic.js b/web/gui/src/main/webapp/app/view/topo/topoTraffic.js
index 1ce8810..ab38e56 100644
--- a/web/gui/src/main/webapp/app/view/topo/topoTraffic.js
+++ b/web/gui/src/main/webapp/app/view/topo/topoTraffic.js
@@ -132,14 +132,14 @@
     function showNextIntentAction() {
         hoverMode = hoverModeNone;
         wss.sendEvent('requestNextRelatedIntent');
-        flash.flash('>');
+        flash.flash('Next related intent');
     }
 
     // keystroke-left-arrow (see topo.js)
     function showPrevIntentAction() {
         hoverMode = hoverModeNone;
         wss.sendEvent('requestPrevRelatedIntent');
-        flash.flash('<');
+        flash.flash('Previous related intent');
     }
 
     // keystroke-W (see topo.js)
diff --git a/web/gui/src/main/webapp/tests/app/fw/widget/tableBuilder-spec.js b/web/gui/src/main/webapp/tests/app/fw/widget/tableBuilder-spec.js
new file mode 100644
index 0000000..27f9b40
--- /dev/null
+++ b/web/gui/src/main/webapp/tests/app/fw/widget/tableBuilder-spec.js
@@ -0,0 +1,100 @@
+/*
+ * Copyright 2015 Open Networking Laboratory
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+/*
+ ONOS GUI -- Widget -- Table Builder Service - Unit Tests
+ */
+
+describe('factory: fw/widget/tableBuilder.js', function () {
+    var $log, $rootScope, fs, tbs;
+
+    var mockObj,
+        mockWss = {
+            bindHandlers: function () {},
+            sendEvent: function () {},
+            unbindHandlers: function () {}
+        };
+
+    beforeEach(module('onosWidget', 'onosUtil', 'onosRemote'));
+
+    // TODO: actual websocket calls should be tested in the websocket service
+    beforeEach(function () {
+        module(function ($provide) {
+            $provide.value('WebSocketService', mockWss);
+        });
+    });
+
+    beforeEach(inject(function (_$log_, _$rootScope_,
+                                FnService, TableBuilderService) {
+        $log = _$log_;
+        $rootScope = _$rootScope_;
+        fs = FnService;
+        tbs = TableBuilderService;
+    }));
+
+    function mockSelCb(event, sel) {}
+
+    beforeEach(function () {
+        mockObj = {
+            self: {},
+            scope: $rootScope.$new(),
+            tag: 'foo',
+            selCb: mockSelCb
+        };
+    });
+
+    afterEach(function () {
+        mockObj = {};
+    });
+
+    it('should define TableBuilderService', function () {
+        expect(tbs).toBeDefined();
+    });
+
+    it('should define api functions', function () {
+        expect(fs.areFunctions(tbs, [
+            'buildTable'
+        ])).toBeTruthy();
+    });
+
+    it('should verify sortCb', function () {
+        spyOn(mockWss, 'sendEvent');
+        expect(mockObj.scope.sortCallback).not.toBeDefined();
+        tbs.buildTable(mockObj);
+        expect(mockObj.scope.sortCallback).toBeDefined();
+        expect(mockWss.sendEvent).toHaveBeenCalled();
+    });
+
+    it('should set tableData', function () {
+        expect(mockObj.self.tableData).not.toBeDefined();
+        tbs.buildTable(mockObj);
+        expect(fs.isA(mockObj.self.tableData)).toBeTruthy();
+        expect(mockObj.self.tableData.length).toBe(0);
+    });
+
+    it('should unbind handlers on destroyed scope', function () {
+        spyOn(mockWss, 'unbindHandlers');
+        tbs.buildTable(mockObj);
+        expect(mockWss.unbindHandlers).not.toHaveBeenCalled();
+        mockObj.scope.$destroy();
+        expect(mockWss.unbindHandlers).toHaveBeenCalled();
+    });
+
+    // TODO: figure out how to test respCb.
+    // should it just be verified by the fact that the callback function
+    // is called by the wss?
+
+});
diff --git a/web/gui/src/main/webapp/tests/app/fw/widget/tooltip-spec.js b/web/gui/src/main/webapp/tests/app/fw/widget/tooltip-spec.js
index a817dbc..0ae1f65 100644
--- a/web/gui/src/main/webapp/tests/app/fw/widget/tooltip-spec.js
+++ b/web/gui/src/main/webapp/tests/app/fw/widget/tooltip-spec.js
@@ -54,6 +54,7 @@
         expect(tts.cancelTooltip()).toBeFalsy();
     });
 
+    // TODO: figure out how to test this
     // testing mouse events is tough
     // showTooltip needs a d3 event, which currently has no test backend
     // .each is a workaround, which provides this, d, and i
diff --git a/web/gui/src/main/webapp/tests/app/view/device/device-spec.js b/web/gui/src/main/webapp/tests/app/view/device/device-spec.js
index 82079fa..c495784 100644
--- a/web/gui/src/main/webapp/tests/app/view/device/device-spec.js
+++ b/web/gui/src/main/webapp/tests/app/view/device/device-spec.js
@@ -20,23 +20,6 @@
 describe('Controller: OvDeviceCtrl', function () {
     var $log, $scope, $controller, ctrl, $mockHttp;
 
-    var fakeData = {
-        "devices": [{
-            "id": "of:0000000000000001",
-            "available": true,
-            "mfr": "Nicira, Inc.",
-            "hw": "Open vSwitch",
-            "sw": "2.0.1"
-        },
-        {
-            "id": "of:0000000000000004",
-            "available": true,
-            "mfr": "Nicira, Inc.",
-            "hw": "Open vSwitch",
-            "sw": "2.0.1"
-        }]
-    };
-
     // instantiate the Device module
     beforeEach(module('ovDevice', 'onosRemote', 'onosLayer', 'onosSvg',
                       'onosNav', 'ngRoute'));
@@ -50,16 +33,6 @@
 
     beforeEach(function() {
         ctrl = $controller('OvDeviceCtrl', { $scope: $scope });
-        $mockHttp.whenGET(/\/device$/).respond(fakeData);
-    });
-
-
-    // TODO: rewrite test to account for websocket
-    xit('should be an empty array and then have device data', function () {
-        expect(ctrl.deviceData).toEqual([]);
-        $scope.sortCallback();
-        $mockHttp.flush();
-        expect(ctrl.deviceData).toEqual(fakeData.devices);
     });
 
 });
diff --git a/web/gui/src/main/webapp/tests/app/view/topo/topoOblique-spec.js b/web/gui/src/main/webapp/tests/app/view/topo/topoOblique-spec.js
index bf07569..2b56329 100644
--- a/web/gui/src/main/webapp/tests/app/view/topo/topoOblique-spec.js
+++ b/web/gui/src/main/webapp/tests/app/view/topo/topoOblique-spec.js
@@ -18,14 +18,16 @@
  ONOS GUI -- Topo View -- Topo Oblique View Service - Unit Tests
  */
 describe('factory: view/topo/topoOblique.js', function() {
-    var $log, fs, tos;
+    var $log, fs, tos, flash;
 
-    beforeEach(module('ovTopo', 'onosUtil'));
+    beforeEach(module('ovTopo', 'onosUtil', 'onosLayer'));
 
-    beforeEach(inject(function (_$log_, FnService, TopoObliqueService) {
+    beforeEach(inject(function (_$log_, FnService,
+                                TopoObliqueService, FlashService) {
         $log = _$log_;
         fs = FnService;
         tos = TopoObliqueService;
+        flash = FlashService;
     }));
 
     it('should define TopoTrafficService', function () {
