diff --git a/web/gui/src/main/webapp/app/fw/svg/svgUtil.js b/web/gui/src/main/webapp/app/fw/svg/svgUtil.js
index 2c47d44..b6c98f0 100644
--- a/web/gui/src/main/webapp/app/fw/svg/svgUtil.js
+++ b/web/gui/src/main/webapp/app/fw/svg/svgUtil.js
@@ -235,12 +235,16 @@
                 return s.replace(/px$/,'');
             }
 
+            function safeId(s) {
+                return s.replace(/[^a-z0-9]/gi, '-');
+            }
+
             function makeVisible(el, b) {
                 el.style('visibility', (b ? 'visible' : 'hidden'));
             }
 
-            function safeId(s) {
-                return s.replace(/[^a-z0-9]/gi, '-');
+            function isVisible(el) {
+                return el.style('visibility') === 'visible';
             }
 
             return {
@@ -249,8 +253,14 @@
                 cat7: cat7,
                 translate: translate,
                 stripPx: stripPx,
-                makeVisible: makeVisible,
-                safeId: safeId
+                safeId: safeId,
+                visible: function (el, x) {
+                            if (x === undefined) {
+                                return isVisible(el);
+                            } else {
+                                makeVisible(el, x);
+                            }
+                         }
             };
         }]);
 }());
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 c413347..00b06d5 100644
--- a/web/gui/src/main/webapp/app/view/topo/topo.js
+++ b/web/gui/src/main/webapp/app/view/topo/topo.js
@@ -48,7 +48,7 @@
 
             H: [tfs.toggleHosts, 'Toggle host visibility'],
             M: [tfs.toggleOffline, 'Toggle offline visibility'],
-            //B: [toggleBg, 'Toggle background image'],
+            B: [toggleMap, 'Toggle background map'],
             //P: togglePorts,
 
             //X: [toggleNodeLock, 'Lock / unlock node positions'],
@@ -94,6 +94,10 @@
         tfs.updateDeviceColors();
     }
 
+    function toggleMap() {
+        sus.visible(mapG, !sus.visible(mapG));
+    }
+
     function resetZoom() {
         zoomer.reset();
     }
@@ -184,7 +188,7 @@
     }
 
     function showNoDevs(b) {
-        sus.makeVisible(noDevsLayer, b);
+        sus.visible(noDevsLayer, b);
     }
 
     function showCallibrationPoints() {
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 35c606f..8f15b947 100644
--- a/web/gui/src/main/webapp/app/view/topo/topoForce.js
+++ b/web/gui/src/main/webapp/app/view/topo/topoForce.js
@@ -365,21 +365,21 @@
     }
 
     function updateHostVisibility() {
-        sus.makeVisible(nodeG.selectAll('.host'), showHosts);
-        sus.makeVisible(linkG.selectAll('.hostLink'), showHosts);
+        sus.visible(nodeG.selectAll('.host'), showHosts);
+        sus.visible(linkG.selectAll('.hostLink'), showHosts);
     }
 
     function updateOfflineVisibility(dev) {
         function updDev(d, show) {
-            sus.makeVisible(d.el, show);
+            sus.visible(d.el, show);
 
             tms.findAttachedLinks(d.id).forEach(function (link) {
                 b = show && ((link.type() !== 'hostLink') || showHosts);
-                sus.makeVisible(link.el, b);
+                sus.visible(link.el, b);
             });
             tms.findAttachedHosts(d.id).forEach(function (host) {
                 b = show && showHosts;
-                sus.makeVisible(host.el, b);
+                sus.visible(host.el, b);
             });
         }
 
@@ -721,7 +721,7 @@
             textDy = r + 10;
 
         d.el = node;
-        sus.makeVisible(node, showHosts);
+        sus.visible(node, showHosts);
 
         is.addHostIcon(node, r, gid);
 
@@ -849,7 +849,7 @@
         d.el = link;
         restyleLinkElement(d);
         if (d.type() === 'hostLink') {
-            sus.makeVisible(link, showHosts);
+            sus.visible(link, showHosts);
         }
     }
 
diff --git a/web/gui/src/main/webapp/tests/app/fw/svg/svgUtil-spec.js b/web/gui/src/main/webapp/tests/app/fw/svg/svgUtil-spec.js
index 69fe750..6fb1a60 100644
--- a/web/gui/src/main/webapp/tests/app/fw/svg/svgUtil-spec.js
+++ b/web/gui/src/main/webapp/tests/app/fw/svg/svgUtil-spec.js
@@ -41,7 +41,7 @@
     it('should define api functions', function () {
         expect(fs.areFunctions(sus, [
             'createDragBehavior', 'loadGlow', 'cat7', 'translate', 'stripPx',
-            'makeVisible', 'safeId'
+            'safeId', 'visible'
         ])).toBeTruthy();
     });
 
@@ -114,15 +114,17 @@
         expect(sus.stripPx('4px')).toEqual('4');
     });
 
-    // === makeVisible()
+    // === visible()
 
     it('should hide and show an element', function () {
         var r = svg.append('rect');
 
-        sus.makeVisible(r, false);
+        sus.visible(r, false);
         expect(r.style('visibility')).toEqual('hidden');
+        expect(sus.visible(r)).toBe(false);
 
-        sus.makeVisible(r, true);
+        sus.visible(r, true);
         expect(r.style('visibility')).toEqual('visible');
+        expect(sus.visible(r)).toBe(true);
     });
 });
