diff --git a/web/gui/src/main/webapp/app/fw/util/keys.js b/web/gui/src/main/webapp/app/fw/util/keys.js
index 81d0bc3..46a98cb 100644
--- a/web/gui/src/main/webapp/app/fw/util/keys.js
+++ b/web/gui/src/main/webapp/app/fw/util/keys.js
@@ -119,19 +119,14 @@
         return true;
     }
 
+    // returns true if we 'consumed' the ESC keypress, false otherwise
     function escapeKey(view, key, code, ev) {
-        // TODO: plumb in handling of alerts and quick help dismissal
-        // We will delegate to the Alert / QuickHelp Services as appropriate.
+        // TODO: plumb in handling of quick help dismissal
 /*
-        if (alerts.open) {
-            closeAlerts();
-            return true;
-        }
-        if (libApi.quickHelp.hide()) {
+        if (qh.hide()) {
             return true;
         }
 */
-        console.log('ESCAPE');
         return false;
     }
 
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 18b4fe1..6e3dd5f 100644
--- a/web/gui/src/main/webapp/app/view/topo/topo.js
+++ b/web/gui/src/main/webapp/app/view/topo/topo.js
@@ -99,16 +99,26 @@
     }
 
     function handleEscape() {
-        $log.debug("TODO: handle-ESCAPE...");
-        // if showingAffinity: cancelAffinity
+        if (false) {
+            // TODO: if an instance is selected, cancel the affinity mapping
+            // tis.cancelAffinity()
 
-        // else if showingDetails: deselectAll
+        } else if (tss.haveDetails()) {
+            // else if we have node selections, deselect them all
+            tss.deselectAll();
 
-        // else if oiBox visible: hide oiBox
+        } else if (tis.isVisible()) {
+            // else if the Instance Panel is visible, hide it
+            tis.hide();
+            tfs.updateDeviceColors();
 
-        // else if summary panel visible: cancel Summary
+        } else if (tps.summaryVisible()) {
+            // else if the Summary Panel is visible, hide it
+            tps.hideSummaryPanel();
 
-        // else: hoverMode = hoverModeNone
+        } else {
+            // TODO: set hover mode to hoverModeNone
+        }
     }
 
     // --- Glyphs, Icons, and the like -----------------------------------
diff --git a/web/gui/src/main/webapp/app/view/topo/topoPanel.js b/web/gui/src/main/webapp/app/view/topo/topoPanel.js
index d3b50bd..c1a8400 100644
--- a/web/gui/src/main/webapp/app/view/topo/topoPanel.js
+++ b/web/gui/src/main/webapp/app/view/topo/topoPanel.js
@@ -144,10 +144,11 @@
 
     function toggleSummary() {
         if (summaryPanel.isVisible()) {
-            api.sendEvent("cancelSummary");
             hideSummaryPanel();
         } else {
+            // ask server to start sending summary data.
             api.sendEvent('requestSummary');
+            // note: the summary panel will appear, once data arrives
         }
     }
 
@@ -163,11 +164,9 @@
     }
 
     function hideSummaryPanel() {
-        summaryPanel.hide(function () {
-            if (detailPanel.isVisible()) {
-                detailPanel.up();
-            }
-        });
+        // instruct server to stop sending summary data
+        api.sendEvent("cancelSummary");
+        summaryPanel.hide(detailPanel.up);
     }
 
     function showDetailPanel() {
diff --git a/web/gui/src/main/webapp/app/view/topo/topoSelect.js b/web/gui/src/main/webapp/app/view/topo/topoSelect.js
index fb6c2f8..f431d9e 100644
--- a/web/gui/src/main/webapp/app/view/topo/topoSelect.js
+++ b/web/gui/src/main/webapp/app/view/topo/topoSelect.js
@@ -302,7 +302,8 @@
                 selectObject: selectObject,
                 deselectObject: deselectObject,
                 deselectAll: deselectAll,
-                hovered: function () { return hovered; }
+                hovered: function () { return hovered; },
+                haveDetails: function () { return haveDetails; }
             };
         }]);
 }());
diff --git a/web/gui/src/main/webapp/tests/app/view/topo/topoSelect-spec.js b/web/gui/src/main/webapp/tests/app/view/topo/topoSelect-spec.js
index 9e6c2fb..e640764 100644
--- a/web/gui/src/main/webapp/tests/app/view/topo/topoSelect-spec.js
+++ b/web/gui/src/main/webapp/tests/app/view/topo/topoSelect-spec.js
@@ -36,7 +36,7 @@
         expect(fs.areFunctions(tss, [
             'initSelect', 'destroySelect', 'showDetails', 'toggleDetails',
             'nodeMouseOver', 'nodeMouseOut', 'selectObject', 'deselectObject',
-            'deselectAll', 'hovered'
+            'deselectAll', 'hovered', 'haveDetails'
         ])).toBeTruthy();
     });
 
