diff --git a/src/index.html b/src/index.html
index ae797bf..c18a53c 100644
--- a/src/index.html
+++ b/src/index.html
@@ -6,6 +6,111 @@
     <link rel="icon" href="favicon.ico?v=2"/>
     <link rel="stylesheet" href="css/main.css">
     <script src="js/vendor/vendor.min.js"></script>
+    <script>
+
+//        var user = 'root';
+//        var password = '0penBmc';
+//        var ip = 'https://9.3.164.147';
+
+        function getList(){
+
+            $.ajax({
+                type: "GET",
+                url: ip + "/xyz/openbmc_project/list",
+                dataType: "json",
+                async: true,
+                xhrFields: {
+                    withCredentials: true
+                },
+                headers: {
+                    'Accept': 'application/json',
+                    'Content-Type': 'application/json'
+                },
+                success: function(response){
+                    var json = JSON.stringify(response);
+                    var content = JSON.parse(json);
+                    //console.log(content.data);
+
+                    for (var i = 0; i < content.data.length; i++) {
+                        var item = content.data[i];
+                        console.log(item);
+                        $('.container').append('<p>' + item + '</p>');
+                    }
+                },
+                error: function(xhr, textStatus, errorThrown){
+                    console.log("not a successful request!");
+                    console.log(xhr, textStatus, errorThrown)
+                }
+            });
+        }
+
+        function getPowerStatus(){
+
+            $.ajax({
+                type: "GET",
+                url: ip + "/xyz/openbmc_project/state/host0",
+                dataType: "json",
+                async: true,
+                xhrFields: {
+                    withCredentials: true
+                },
+                headers: {
+                    'Accept': 'application/json',
+                    'Content-Type': 'application/json'
+                },
+                success: function(response){
+                    var json = JSON.stringify(response);
+                    var content = JSON.parse(json);
+                    //console.log(content.data);
+                    var currentHostState = content.data.CurrentHostState;
+                    if(currentHostState == "xyz.openbmc_project.State.Host.HostState.Off"){
+                        $('#power-indicator-bar').removeClass('power__state-off power__state-on').addClass('power__state-off');
+                    }else{
+                        $('#power-indicator-bar').removeClass('power__state-off power__state-on').addClass('power__state-on');
+                    }
+                },
+                error: function(xhr, textStatus, errorThrown){
+                    console.log("not a successful request!");
+                    console.log(xhr, textStatus, errorThrown)
+                }
+            });
+        }
+
+        function login() {
+            console.log('login!');
+
+            var user = 'root';
+            var password = '0penBmc';
+            var ip = 'https://9.3.164.147';
+
+            $.ajax({
+                "type": "POST",
+                "url": ip + "/login",
+                "dataType": "json",
+                "async": true,
+                "headers": {
+                    'Accept': 'application/json',
+                    'Content-Type': 'application/json'
+                },
+                "xhrFields": {
+                    withCredentials: true
+                },
+                "data": JSON.stringify({"data": [user, password]}),
+                "success": function (response) {
+                    console.log(response);
+                    //getList();
+                    //getPowerStatus();
+                    alert(JSON.stringify(response));
+                    window.location.replace("system-overview.html");
+
+                },
+                "error": function (xhr, textStatus, errorThrown) {
+                    console.log("not a successful request!");
+                    console.log(xhr, textStatus, errorThrown)
+                }
+            });
+        }
+    </script>
 </head>
 <body id="login">
 <div class="login__wrapper">
@@ -24,19 +129,19 @@
                 <li><p class="login__info-label">Server ID</p><p>29000000166668</p></li>
                 <li><p class="login__info-label">Server model</p><p>Power SL-22LC</p></li>
                 <!-- ping server to see if powered on. Change status-light and txt accordingly. Status message is planned to be hardcoded message were display via local JS.  -->
-                <li><p class="login__info-label">Server power</p><p class="status-light__disabled">Off</p></li>
-                <li><p class="login__info-label">Status message</p><p>BMC was reset by user</p></li>
+                <li><p class="login__info-label">Server power</p><p class="status-light__good">On</p></li>
+                <li><p class="login__info-label">Status message</p><!--<p>BMC was reset by user</p>--></li>
             </ul>
         </div>
         <div class="columns large-6">
-            <form id="login__form" role="form">
+            <form id="login__form" role="form" action="" >
                 <label for="username">Username</label>
                 <input type="text" id="username" name="username" required>
 
                 <label for="password">Password</label>
-                <input type="password" id="password" name="password" class="input__error" required>
+                <input type="password" id="password" name="password" class="" required>
 
-                <input id="login__submit" class="btn-primary" type="submit" value="Log in" role="button">
+                <input id="login__submit" class="btn-primary" type="submit" value="Log in" role="button" onclick="login();">
 
                 <p class="login__error-msg" role="alert">Incorrect username or password</p>
             </form>
diff --git a/src/js/main.js b/src/js/main.js
index b321e0d..cc96a73 100755
--- a/src/js/main.js
+++ b/src/js/main.js
@@ -4,7 +4,6 @@
     header();
     nav();
 
-
     // Load logo
     function loadLogo() {
         $('.logo__wrapper').load('logo.html', function () {
@@ -59,35 +58,45 @@
             var subnav = document.getElementsByClassName("nav__second-level");
             var navBtn = document.querySelectorAll('#nav__top-level button');
 
-
             // Bump down nav to compensate for fixed header
             nav.style.top = height + 'px';
 
             // Bump second level nav down for fixed header
             for (var i = 0; i < subnav.length; i++) {
                 subnav[i].style.top = height + 'px';
+
             }
 
+            // Set link that matches page url to active
+            var path = window.location.href; // because the 'href' property of the DOM element is the absolute path
+            $('.nav__second-level li a').each(function() {
+                if (this.href === path) {
+                    $(this).parent().addClass('active');
+                }
+            });
+
             //Loop over nav buttons
             for (var i = 0, len = navBtn.length; i < len; i++) {
 
                 // Click event for each nav button
                 navBtn[i].addEventListener('click', function () {
+
                     var parent = $(this).parents("#navigation");
                     var btnId = $(this).attr("class").match(/btn[\w-]*\b/);
                     var subnavClass = $('.nav__second-level.' + btnId);
 
+                    if(this && this.classList.contains("opened")){
+                        parent.find(subnavClass).removeClass("opened");
+                    }
+
                     //Remove opened class from buttons
                     parent.find('.opened').removeClass('opened');
 
                     // Add opened class to clicked button
                     this.classList.add("opened");
 
-                    //Close all sub panels and remove opened class
-                    parent.find('.nav__second-level').css("display", "none").removeClass('opened');
-
                     // add opened class
-                    parent.find(subnavClass).css("display", "block").addClass('opened');
+                    parent.find(subnavClass).toggleClass('opened');
 
                 });
             }
diff --git a/src/navigation.html b/src/navigation.html
index 88b6169..e15f82a 100644
--- a/src/navigation.html
+++ b/src/navigation.html
@@ -1,3 +1,4 @@
+
 <nav role="navigation">
     <ul id="nav__top-level">
         <li>
@@ -44,10 +45,10 @@
         </li>
     </ul>
     <ul class="nav__second-level btn-overview">
-        <li tabindex="2"><a href="">System Overview</a></li>
-        <li tabindex="3"class="active"><a href="power-operations.html">Server power operations </a></li>
-        <li tabindex="4"><a href="">Power consumption</a></li>
-        <li tabindex="5"><a href="">Remote console</a></li>
+        <li tabindex="2"><a href="system-overview.html">System Overview</a></li>
+        <li tabindex="3"><a href="power-operations.html">Server power operations </a></li>
+        <li tabindex="4"><a href="power-consumption.html">Power consumption</a></li>
+        <li tabindex="5"><a href="remote-console.html">Remote console</a></li>
     </ul>
     <ul class="nav__second-level btn-settings">
         <li><a href="">2nd level 4</a></li>
diff --git a/src/power-operations.html b/src/power-operations.html
index b1913ea..d793678 100644
--- a/src/power-operations.html
+++ b/src/power-operations.html
@@ -68,7 +68,7 @@
 
             <div class="power__confirm">
                 <div class="power__confirm-message">
-                    <p class="h3"><i></i>Are you sure you want to <strong>warm reboot?</strong></p>
+                    <p class="h3"><i></i>Are you sure you want to <strong>immediate shutdown?</strong></p>
                     <p>Removes power from the server without waiting for software to stop</p>
                 </div>
                 <div class="power__confirm-buttons">
@@ -85,21 +85,58 @@
 
 <!-- FOR DEMO ONLY __ DO NOT COPY BELOW -->
 <script>
-    $('#power__hard-shutdown').on('click', function () {
-        var msgheight = $(this).parent().find('.power__confirm').height();
 
-        $(this).parents('#power-operations').find('.power__confirm').addClass('active');
-        $(this).parents('#power-operations').find('.power-option').addClass('disabled');
+    var pwrOn = $("#power__power-on"),
+        endTransition = 'webkitTransitionEnd otransitionend oTransitionEnd msTransitionEnd transitionend',
+        pwrOps = '#power-operations';
+
+    pwrOn.parent().hide();
+
+    $('#power__hard-shutdown').on('click', function () {
+
+        var msgheight = $(this).parent().find('.power__confirm').height();
+        $(this).addClass('disabled');
+        $(this).parents(pwrOps).find('.power__confirm').addClass('active');
+        $(this).parents(pwrOps).find('.power-option, .btn-secondary').addClass('disabled');
         $(this).parent().addClass('transitionAll').css("minHeight", msgheight).removeClass('disabled');
-        $(this).parents('#power-operations').find('.power-option.disabled button').attr("disabled", true).addClass('disabled');
+        $(this).parents(pwrOps).find('.power-option.disabled button').attr("disabled", true).addClass('disabled');
+    });
+
+    pwrOn.on('click', function () {
+        var srvrPwr = $(".header__server-power");
+
+        $(this).parents(pwrOps).find('.power__indicator-bar').toggleClass('power__state-off');
+        $(this).parents(pwrOps).find('.power-option').show();
+        $(this).parents(".power-option").hide();
+        $(".power__state span").one(endTransition,
+            function() {
+                $(this).parents(pwrOps).find('.power__state span').html('On');
+                $(this).parents(pwrOps).find('.power-option.disabled').show();
+                $(this).parents(pwrOps).find('.power-option.disabled button').removeAttr("disabled", true).removeClass('disabled');
+                $(".power-option, .power__confirm-buttons").removeClass("disabled");
+                srvrPwr.find(".status-light__disabled").removeClass("status-light__disabled").addClass("status-light__good");
+                srvrPwr.find("span").text('On');
+            });
     });
 
     $('.btn-primary').on('click', function(){
-        $(this).parents('#power-operations').find('.power__indicator-bar').toggleClass('power__state-off');
-        $(this).parents('#power-operations').find('.power__confirm').removeClass('active');
+
+        var srvrPwr = $(".header__server-power"),
+            pwrOnDisabl = $("#power__power-on.disabled");
+
+        $(this).parents(pwrOps).find('.power__indicator-bar').toggleClass('power__state-off');
+        $(this).parents(pwrOps).find('.power__confirm').removeClass('active');
         $(this).parent().addClass('disabled');
         $(this).parents('.power-option').addClass('disabled');
-        $(this).parents('#power-operations').find('.power__state span').html('Off');
+        $(".power__state span").one(endTransition,
+            function(e) {
+                $(this).parents(pwrOps).find('.power__state span').html('Off');
+                $(this).parents(pwrOps).find('.power-option.disabled').hide();
+                pwrOnDisabl.parent().show().removeClass('disabled');
+                pwrOnDisabl.removeAttr("disabled").removeClass('disabled');
+                srvrPwr.find(".status-light__good").removeClass("status-light__good").addClass("status-light__disabled");
+                srvrPwr.find("span").text('Off');
+            });
     });
 </script>
 </html>
diff --git a/src/scss/components/_status.scss b/src/scss/components/_status.scss
index 30cb2db..0cba22f 100644
--- a/src/scss/components/_status.scss
+++ b/src/scss/components/_status.scss
@@ -6,6 +6,7 @@
   color: $status-ok;
   margin-right: .1em;
   transform: translateY(2px);
+  @include slowTransition-all;
 }
 
 @mixin status-light__good {
diff --git a/src/scss/layout/_navigation.scss b/src/scss/layout/_navigation.scss
index bb08579..d914b7b 100644
--- a/src/scss/layout/_navigation.scss
+++ b/src/scss/layout/_navigation.scss
@@ -96,15 +96,16 @@
   transition: left .5s ease;
   @include mediaQuery(medium) {
     left: $nav__toplvlWidth;
-  }
-  &.btn-overview {
-    display: block;
+    &.btn-overview {
+      display: block;
+    }
   }
   &.opened {
     left: $nav__toplvlWidth;
     display: block;
     @include fastTransition-all;
   }
+
   a {
     padding: 1.2em 1em 1.2em 1em;
     display: block;
diff --git a/src/system-overview.html b/src/system-overview.html
new file mode 100644
index 0000000..ae2368d
--- /dev/null
+++ b/src/system-overview.html
@@ -0,0 +1,26 @@
+<!DOCTYPE html>
+<html lang="en">
+<head>
+    <meta charset="UTF-8">
+    <title>openBMC</title>
+    <link rel="icon" href="favicon.ico?v=2"/>
+    <link rel="stylesheet" href="css/main.css">
+    <script src="js/vendor/vendor.min.js"></script>
+</head>
+<body>
+
+<!-- Header & Navigation includes -->
+<div id="header__wrapper"></div>
+<div id="navigation"></div>
+
+<!-- Power Operations Content -->
+<main id="power-operations" class="content__container" role="main">
+    <div class="row column">
+        <h1>System Overview</h1>
+        <p>System overview will be here.</p>
+    </div>
+</main>
+
+</body>
+<script src="js/app.min.js"></script>
+</html>
