diff --git a/apps/faultmanagement/fmgui/src/main/resources/app/view/alarmTopov/alarmTopovDemo.js b/apps/faultmanagement/fmgui/src/main/resources/app/view/alarmTopov/alarmTopovDemo.js
index 46a4d11..23d41df 100644
--- a/apps/faultmanagement/fmgui/src/main/resources/app/view/alarmTopov/alarmTopovDemo.js
+++ b/apps/faultmanagement/fmgui/src/main/resources/app/view/alarmTopov/alarmTopovDemo.js
@@ -27,26 +27,14 @@
 
     // constants
     var displayStart = 'alarmTopovDisplayStart',
-        displayUpdate = 'alarmTopovDisplayUpdate',
         displayStop = 'alarmTopovDisplayStop';
 
-    // internal state
-    var currentMode = null;
-
 
     // === ---------------------------
     // === Helper functions
 
-    function sendDisplayStart(mode) {
-        wss.sendEvent(displayStart, {
-            mode: mode
-        });
-    }
-
-    function sendDisplayUpdate(what) {
-        wss.sendEvent(displayUpdate, {
-            id: what ? what.id : ''
-        });
+    function sendDisplayStart() {
+        wss.sendEvent(displayStart);
     }
 
     function sendDisplayStop() {
@@ -56,30 +44,15 @@
     // === ---------------------------
     // === Main API functions
 
-    function startDisplay(mode) {
-        if (currentMode === mode) {
-            $log.debug('(in mode', mode, 'already)');
-        } else {
-            currentMode = mode;
-            sendDisplayStart(mode);
-            flash.flash('Starting display mode: ' + mode);
-        }
-    }
-
-    function updateDisplay(m) {
-        if (currentMode) {
-            sendDisplayUpdate(m);
-        }
+    function startDisplay() {
+        sendDisplayStart();
+        flash.flash('Showing alarm counts on devices');
     }
 
     function stopDisplay() {
-        if (currentMode) {
-            currentMode = null;
-            sendDisplayStop();
-            flash.flash('Canceling display mode');
-            return true;
-        }
-        return false;
+        sendDisplayStop();
+        flash.flash('Canceling alarm counts on devices');
+        return true;
     }
 
     // === ---------------------------
@@ -97,7 +70,6 @@
 
             return {
                 startDisplay: startDisplay,
-                updateDisplay: updateDisplay,
                 stopDisplay: stopDisplay
             };
         }]);
diff --git a/apps/faultmanagement/fmgui/src/main/resources/app/view/alarmTopov/alarmTopovOverlay.js b/apps/faultmanagement/fmgui/src/main/resources/app/view/alarmTopov/alarmTopovOverlay.js
index bf389db..a63f476 100644
--- a/apps/faultmanagement/fmgui/src/main/resources/app/view/alarmTopov/alarmTopovOverlay.js
+++ b/apps/faultmanagement/fmgui/src/main/resources/app/view/alarmTopov/alarmTopovOverlay.js
@@ -85,6 +85,7 @@
         },
         activate: function () {
             $log.debug("Alarm topology overlay ACTIVATED");
+            atds.startDisplay();
         },
         deactivate: function () {
             atds.stopDisplay();
@@ -99,37 +100,8 @@
                     $log.debug('Show alarms for selected device. data:', data);
                     ns.navTo("alarmTable", {devId: data.id});
                 }
-            },
-            alarm2button: {
-                gid: '*clocks',
-                tt: 'Show alarms for all devices',
-                cb: function (data) {
-                    $log.debug('Show alarms for all devices. data:', data);
-                    ns.navTo("alarmTable");
-                }
             }
         },
-        // Key bindings for traffic overlay buttons
-        // NOTE: fully qual. button ID is derived from overlay-id and key-name
-        keyBindings: {
-            0: {
-                cb: function () {
-                    atds.stopDisplay();
-                },
-                tt: 'Cancel Alarm Count on Device',
-                gid: 'xMark'
-            },
-            V: {
-                cb: function () {
-                    atds.startDisplay('mouse');
-                },
-                tt: 'Start Alarm Count on Device',
-                gid: '*clock'
-            },
-            _keyOrder: [
-                '0', 'V'
-            ]
-        },
         hooks: {
             // hook for handling escape key
             // Must return true to consume ESC, false otherwise.
@@ -147,16 +119,6 @@
             multi: function (selectOrder) {
                 selectionCallback('multi', selectOrder);
                 tov.addDetailButton('alarm1button');
-                tov.addDetailButton('alarm2button');
-            },
-            mouseover: function (m) {
-                // m has id, class, and type properties
-                $log.debug('mouseover:', m);
-                atds.updateDisplay(m);
-            },
-            mouseout: function () {
-                $log.debug('mouseout');
-                atds.updateDisplay();
             }
         }
     };
