diff --git a/web/gui/src/main/webapp/app/fw/mast/mast.css b/web/gui/src/main/webapp/app/fw/mast/mast.css
index 9a68e0a..0722f6d 100644
--- a/web/gui/src/main/webapp/app/fw/mast/mast.css
+++ b/web/gui/src/main/webapp/app/fw/mast/mast.css
@@ -39,6 +39,12 @@
     height: 38px;
     padding-left: 8px;
     padding-right: 8px;
+    cursor: pointer;
+}
+
+#mast img.logo:hover {
+    /* need something better */
+    /*background-color: #888;*/
 }
 
 #mast .title {
diff --git a/web/gui/src/main/webapp/app/fw/mast/mast.html b/web/gui/src/main/webapp/app/fw/mast/mast.html
index dc086e9..e10d6ca 100644
--- a/web/gui/src/main/webapp/app/fw/mast/mast.html
+++ b/web/gui/src/main/webapp/app/fw/mast/mast.html
@@ -1,3 +1,3 @@
 <!-- Masthead partial HTML -->
-<img class="logo" src="../data/img/onos-logo.png">
-<span class="title">Open Network Operating System</span>
\ No newline at end of file
+<img class="logo" src="../data/img/onos-logo.png" ng-click="mastCtrl.toggleNav()">
+<span class="title">Open Network Operating System</span>
diff --git a/web/gui/src/main/webapp/app/fw/mast/mast.js b/web/gui/src/main/webapp/app/fw/mast/mast.js
index b8b02b4..3705d89 100644
--- a/web/gui/src/main/webapp/app/fw/mast/mast.js
+++ b/web/gui/src/main/webapp/app/fw/mast/mast.js
@@ -22,14 +22,22 @@
 (function () {
     'use strict';
 
-    angular.module('onosMast', [])
-        .controller('MastCtrl', ['$log', function (_$log_) {
-            var $log = _$log_,
-                self = this;
+    var $log;
+
+    angular.module('onosMast', ['onosNav'])
+        .controller('MastCtrl', ['$log', 'NavService', function (_$log_, ns) {
+            var self = this;
+
+            $log = _$log_;
 
             // initialize mast controller here...
             self.radio = null;
 
+            // delegate to NavService
+            self.toggleNav = function () {
+                ns.toggleNav();
+            };
+
             $log.log('MastCtrl has been created');
         }]);
 
diff --git a/web/gui/src/main/webapp/app/fw/nav/nav.css b/web/gui/src/main/webapp/app/fw/nav/nav.css
new file mode 100644
index 0000000..02d32f7
--- /dev/null
+++ b/web/gui/src/main/webapp/app/fw/nav/nav.css
@@ -0,0 +1,72 @@
+/*
+ * Copyright 2014,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 -- Navigation -- CSS file
+
+ @author Simon Hunt
+ @author Bri Prebilic Cole
+ */
+
+#nav {
+    position: absolute;
+    top: 50px;
+    left: 8px;
+    width: 160px;
+    height: 100px;
+    padding: 4px;
+    z-index: 3000;
+    visibility: hidden;
+}
+
+.light #nav {
+    background-color: #ccf;
+    box-shadow: 0 2px 8px #777;
+}
+.dark #nav {
+    background-color: #444;
+    box-shadow: 0 2px 8px #777;
+}
+
+#nav ul li {
+    font-size: 10pt;
+}
+
+
+#nav h2 {
+    font-size: 12pt;
+    margin: 0;
+}
+#nav h3 {
+    font-size: 8pt;
+    font-style: italic;
+    margin: 0;
+}
+
+.light #nav h2,
+.light #nav h3 {
+    color: black;
+}
+
+.dark #nav h2,
+.dark #nav h3 {
+    color: #ddd;
+}
+
+.dark #nav a {
+    color: #ddd;
+}
+
diff --git a/web/gui/src/main/webapp/app/fw/nav/nav.html b/web/gui/src/main/webapp/app/fw/nav/nav.html
new file mode 100644
index 0000000..b938b1c
--- /dev/null
+++ b/web/gui/src/main/webapp/app/fw/nav/nav.html
@@ -0,0 +1,8 @@
+<!-- Navigation partial HTML -->
+<h2>Navigation</h2>
+<h3>(Note - this is temporary)</h3>
+
+<ul>
+    <li> <a ng-click="navCtrl.hideNav()" href="#/sample">Sample View</a></li>
+    <li> <a ng-click="navCtrl.hideNav()" href="#/topo">Topology View</a></li>
+</ul>
diff --git a/web/gui/src/main/webapp/app/fw/nav/nav.js b/web/gui/src/main/webapp/app/fw/nav/nav.js
new file mode 100644
index 0000000..7ab6981
--- /dev/null
+++ b/web/gui/src/main/webapp/app/fw/nav/nav.js
@@ -0,0 +1,71 @@
+/*
+ * Copyright 2014,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 -- Navigation Module
+
+ @author Simon Hunt
+ @author Bri Prebilic Cole
+ */
+(function () {
+    'use strict';
+
+    // injected dependencies
+    var $log;
+
+    // internal state
+    var navShown = false;
+
+    function updatePane() {
+        var vis = navShown ? 'visible' : 'hidden';
+        d3.select('#nav').style('visibility', vis);
+    }
+
+
+    function showNav() {
+        navShown = true;
+        updatePane();
+    }
+    function hideNav() {
+        navShown = false;
+        updatePane();
+    }
+    function toggleNav() {
+        navShown = !navShown;
+        updatePane();
+    }
+
+    angular.module('onosNav', [])
+        .controller('NavCtrl', [
+            '$log', function (_$log_) {
+                var self = this;
+                $log = _$log_;
+
+                self.hideNav = hideNav;
+                $log.log('NavCtrl has been created');
+            }
+        ])
+        .factory('NavService', ['$log', function (_$log_) {
+            $log = _$log_;
+
+            return {
+                showNav: showNav,
+                hideNav: hideNav,
+                toggleNav: toggleNav
+            };
+        }]);
+
+}());
diff --git a/web/gui/src/main/webapp/app/index.html b/web/gui/src/main/webapp/app/index.html
index c238d7f..5a61721 100644
--- a/web/gui/src/main/webapp/app/index.html
+++ b/web/gui/src/main/webapp/app/index.html
@@ -39,6 +39,7 @@
     <script src="fw/util/keys.js"></script>
 
     <script src="fw/mast/mast.js"></script>
+    <script src="fw/nav/nav.js"></script>
 
     <script src="fw/svg/svg.js"></script>
     <script src="fw/svg/glyph.js"></script>
@@ -50,6 +51,7 @@
     <!-- TODO: use a single catenated-minified file here -->
     <link rel="stylesheet" href="onos.css">
     <link rel="stylesheet" href="fw/mast/mast.css">
+    <link rel="stylesheet" href="fw/nav/nav.css">
 
     <!-- This is where contributed javascript will get injected -->
     <!-- {INJECTED-JAVASCRIPT} -->
@@ -71,6 +73,10 @@
 
         <div id="view" ng-view></div>
 
+        <div id="nav"
+             ng-controller="NavCtrl as navCtrl"
+             ng-include="'fw/nav/nav.html'"></div>
+
         <div id="floatpanels"></div>
         <div id="alerts"></div>
         <div id="flash"></div>
diff --git a/web/gui/src/main/webapp/app/view/topo/topo.css b/web/gui/src/main/webapp/app/view/topo/topo.css
index 84a4eff..ddd0246 100644
--- a/web/gui/src/main/webapp/app/view/topo/topo.css
+++ b/web/gui/src/main/webapp/app/view/topo/topo.css
@@ -29,5 +29,5 @@
 }
 
 #ov-topo svg {
-    background-color: #88f;
+    background-color: #dde;
 }
