diff --git a/web/gui/src/main/webapp/network.js b/web/gui/src/main/webapp/network.js
index c4e72f1..22aa8ff 100644
--- a/web/gui/src/main/webapp/network.js
+++ b/web/gui/src/main/webapp/network.js
@@ -156,7 +156,53 @@
             if (id !== viewMode) {
                 radioButton('displayModes', id);
                 viewMode = id;
-                alert('action: ' + id);
+                doRadioAction(id);
+            }
+        });
+    }
+
+    function doRadioAction(id) {
+        showAllLayers();
+        if (id === 'showPkt') {
+            showPacketLayer();
+        } else if (id === 'showOpt') {
+            showOpticalLayer();
+        }
+    }
+
+    function showAllLayers() {
+        network.node.classed('inactive', false);
+        network.link.classed('inactive', false);
+    }
+
+    function showPacketLayer() {
+        network.node.each(function(d) {
+            // deactivate nodes that are not hosts or switches
+            if (d.class === 'device' && d.type !== 'switch') {
+                d3.select(this).classed('inactive', true);
+            }
+        });
+
+        network.link.each(function(lnk) {
+            // deactivate infrastructure links that have opt's as endpoints
+            if (lnk.source.type === 'roadm' || lnk.target.type === 'roadm') {
+                d3.select(this).classed('inactive', true);
+            }
+        });
+    }
+
+    function showOpticalLayer() {
+        network.node.each(function(d) {
+            // deactivate nodes that are not optical devices
+            if (d.type !== 'roadm') {
+                d3.select(this).classed('inactive', true);
+            }
+        });
+
+        network.link.each(function(lnk) {
+            // deactivate infrastructure links that have opt's as endpoints
+            if (lnk.source.type !== 'roadm' || lnk.target.type !== 'roadm') {
+                d3.select(this).classed('inactive', true);
             }
         });
     }
@@ -216,6 +262,7 @@
     function unpin() {
         if (hovered) {
             hovered.fixed = false;
+            findNodeFromData(hovered).classed('fixed', false);
             network.force.resume();
         }
         console.log('Unpin - context = ' + contextLabel());
@@ -434,9 +481,10 @@
                 d.fixed &= ~6;
 
                 // once we've finished moving, pin the node in position,
-                // if it is a device
+                // if it is a device (not a host)
                 if (d.class === 'device') {
                     d.fixed = true;
+                    d3.select(this).classed('fixed', true)
                 }
             });
 
diff --git a/web/gui/src/main/webapp/onos.css b/web/gui/src/main/webapp/onos.css
index 3aade2c..cfe37fb 100644
--- a/web/gui/src/main/webapp/onos.css
+++ b/web/gui/src/main/webapp/onos.css
@@ -94,13 +94,19 @@
 }
 
 svg .node.device rect {
-    stroke-width: 1.5px;
+    stroke-width: 3.0px;
+    stroke: white;
+    stroke-dasharray: 2,2;
 
     transition: opacity 250ms;
     -webkit-transition: opacity 250ms;
     -moz-transition: opacity 250ms;
 }
 
+svg .node.device.fixed rect {
+    stroke-width: 0;
+}
+
 svg .node.device.roadm rect {
     fill: #229;
 }
@@ -142,7 +148,7 @@
 svg .node.inactive circle,
 svg .node.inactive text,
 svg .node.inactive image {
-    opacity: .2;
+    opacity: .05;
 }
 
 svg .node.inactive.selected rect,
