diff --git a/app/assets/images/crit-x.svg b/app/assets/images/crit-x.svg
index 1d71c09..abc76fa 100644
--- a/app/assets/images/crit-x.svg
+++ b/app/assets/images/crit-x.svg
@@ -1,3 +1,5 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Generator: Adobe Illustrator 19.2.1, SVG Export Plug-In . SVG Version: 6.00 Build 0)  -->
 <svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
 	 viewBox="0 0 27.7 28" style="enable-background:new 0 0 27.7 28;" xml:space="preserve">
 <style type="text/css">
diff --git a/app/assets/images/icon-check.svg b/app/assets/images/icon-check.svg
index e984f55..d7bedf4 100644
--- a/app/assets/images/icon-check.svg
+++ b/app/assets/images/icon-check.svg
@@ -1,3 +1,5 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Generator: Adobe Illustrator 21.1.0, SVG Export Plug-In . SVG Version: 6.00 Build 0)  -->
 <svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
 	 viewBox="0 0 14 12" style="enable-background:new 0 0 14 12;" xml:space="preserve">
 <polygon points="14,2.2 12.2,0.5 4.7,8 1.8,5.1 0,6.9 4.7,11.5 "/>
diff --git a/app/assets/images/icon-copy-white.svg b/app/assets/images/icon-copy-white.svg
index 62333bb..bce0b23 100644
--- a/app/assets/images/icon-copy-white.svg
+++ b/app/assets/images/icon-copy-white.svg
@@ -1,3 +1,5 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Generator: Adobe Illustrator 19.2.1, SVG Export Plug-In . SVG Version: 6.00 Build 0)  -->
 <svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
 	 viewBox="0 0 16 16" style="enable-background:new 0 0 16 16;" xml:space="preserve">
 <style type="text/css">
diff --git a/app/assets/images/icon-copy.svg b/app/assets/images/icon-copy.svg
index 335eacd..7766490 100644
--- a/app/assets/images/icon-copy.svg
+++ b/app/assets/images/icon-copy.svg
@@ -1,3 +1,5 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!-- Generator: Adobe Illustrator 20.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0)  -->
 <svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
 	 viewBox="0 0 16 16" style="enable-background:new 0 0 16 16;" xml:space="preserve">
 <g>
diff --git a/app/assets/images/icon-critical.svg b/app/assets/images/icon-critical.svg
index 93a0ac1..5b0b28c 100644
--- a/app/assets/images/icon-critical.svg
+++ b/app/assets/images/icon-critical.svg
@@ -1,3 +1,4 @@
+<?xml version="1.0" encoding="utf-8"?>
 <svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
 	 viewBox="0 0 20 20" style="enable-background:new 0 0 20 20;" xml:space="preserve">
 <style type="text/css">
diff --git a/app/assets/images/icon-power.svg b/app/assets/images/icon-power.svg
index 9c0c73f..8844297 100644
--- a/app/assets/images/icon-power.svg
+++ b/app/assets/images/icon-power.svg
@@ -1,3 +1,5 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Generator: Adobe Illustrator 19.2.1, SVG Export Plug-In . SVG Version: 6.00 Build 0)  -->
 <svg version="1.1" baseProfile="tiny" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"
 	 x="0px" y="0px" viewBox="0 0 75 75" xml:space="preserve">
 <path fill="#3C6DF0" d="M17,14.6L17,14.6c1.2-1,1.3-2.7,0.3-3.9c-1-1.1-2.7-1.3-3.9-0.2C1.8,20.6-2.3,36.8,3.1,51.2
diff --git a/app/assets/images/icon-search.svg b/app/assets/images/icon-search.svg
index 55f30a7..d37929f 100644
--- a/app/assets/images/icon-search.svg
+++ b/app/assets/images/icon-search.svg
@@ -1,3 +1,5 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!-- Generator: Adobe Illustrator 20.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0)  -->
 <svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
 	 viewBox="0 0 24 24" style="enable-background:new 0 0 24 24;" xml:space="preserve">
 <g>
diff --git a/app/assets/images/icon-trashcan-white.svg b/app/assets/images/icon-trashcan-white.svg
index 585df57..afc7a20 100644
--- a/app/assets/images/icon-trashcan-white.svg
+++ b/app/assets/images/icon-trashcan-white.svg
@@ -1,3 +1,5 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Generator: Adobe Illustrator 19.2.1, SVG Export Plug-In . SVG Version: 6.00 Build 0)  -->
 <svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
 	 viewBox="0 0 22 22" style="enable-background:new 0 0 22 22;" xml:space="preserve">
 <style type="text/css">
diff --git a/app/assets/images/icon-trashcan.svg b/app/assets/images/icon-trashcan.svg
index 62f0539..16fdc25 100644
--- a/app/assets/images/icon-trashcan.svg
+++ b/app/assets/images/icon-trashcan.svg
@@ -1,3 +1,5 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Generator: Adobe Illustrator 20.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0)  -->
 <svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
 	 viewBox="0 0 22 22" style="enable-background:new 0 0 22 22;" xml:space="preserve">
 <g>
diff --git a/app/assets/images/icon-warning.svg b/app/assets/images/icon-warning.svg
index dd9b3dd..b25ae52 100644
--- a/app/assets/images/icon-warning.svg
+++ b/app/assets/images/icon-warning.svg
@@ -1,3 +1,4 @@
+<?xml version="1.0" encoding="utf-8"?>
 <svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
 	 viewBox="0 0 20 20" style="enable-background:new 0 0 20 20;" xml:space="preserve">
 <style type="text/css">
diff --git a/app/assets/images/warn-slash.svg b/app/assets/images/warn-slash.svg
index b56d976..87a9f93 100644
--- a/app/assets/images/warn-slash.svg
+++ b/app/assets/images/warn-slash.svg
@@ -1,3 +1,5 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Generator: Adobe Illustrator 19.2.1, SVG Export Plug-In . SVG Version: 6.00 Build 0)  -->
 <svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
 	 viewBox="0 0 27.7 28" style="enable-background:new 0 0 27.7 28;" xml:space="preserve">
 <style type="text/css">
diff --git a/app/common/directives/log-event.html b/app/common/directives/log-event.html
index 08efcf1..be7b5a0 100644
--- a/app/common/directives/log-event.html
+++ b/app/common/directives/log-event.html
@@ -15,7 +15,7 @@
              <label class="control-check">
                  <input type="checkbox" name="events__check" ng-click="event.selected= ! event.selected"
                         ng-checked="event.selected"/>
-                 <span class="control__indicator accessible-text">select log event</span>
+                 <span class="control__indicator"></span>
              </label>
          </div>
          <div class="column small-9 large-10 event-log__event-info"
@@ -29,8 +29,8 @@
                  <p class="inline event__description">{{event.Severity}}</p>
              </div>
          <div class="column small-1 large-1">
-             <span class="button accord-trigger" ng-class="{'active': event.meta}"
-                     ng-click="event.meta = ! event.meta"></span>
+             <button class="accord-trigger" ng-class="{'active': event.meta}"
+                     ng-click="event.meta = ! event.meta"></button>
          </div>
         </div>
      <div class="row event__metadata-row" ng-class="{'active': event.meta}">
@@ -43,12 +43,17 @@
                      <button class="btn-meta-copy" clipboard text="event.additional_data" on-copied="copySuccess(event)" on-error="copyfailed(err)">
                         <img class="event__icon" src="assets/images/icon-copy.svg" alt=""/><span ng-if="!event.copied">Copy</span><span ng-if="event.copied">Copied</span>
                      </button>
-                     <button class="btn-delete" ng-click="event.confirm= ! event.confirm"><img
+                     <button
+                             class="btn-delete"
+                             ng-class="{'disabled': multiSelected}"
+                             ng-click="event.confirm= ! event.confirm"
+                             ng-disabled="multiSelected">
+                             <img
                              class="event__icon"
                              src="assets/images/icon-trashcan.svg"
                              alt=""/>Delete
                      </button>
-                     <button class="btn-resolve" ng-class="{'disabled': (event.Resolved == 1)}" ng-click="resolveEvent(event)" ng-disabled="event.Resolved == 1"><img class="event__icon" src="assets/images/icon-check.svg" alt=""/>Resolved</button>
+                     <button class="btn-resolve" ng-class="{'disabled': (event.Resolved == 1 || multiSelected)}" ng-click="resolveEvent(event)" ng-disabled="event.Resolved == 1 || multiSelected"><img class="event__icon" src="assets/images/icon-checklist.svg" alt=""/>Resolved</button>
                  </div>
                  <div class="event__related" ng-show="event.related_items.length">
                      <p class="inline event__related-label">Related items:</p>
@@ -57,4 +62,4 @@
              </div>
          </div>
      </div>
-</div>
+</div>
\ No newline at end of file
diff --git a/app/common/directives/log-event.js b/app/common/directives/log-event.js
index ae4970d..51bb5dd 100644
--- a/app/common/directives/log-event.js
+++ b/app/common/directives/log-event.js
@@ -9,7 +9,8 @@
                 'templateUrl': 'common/directives/log-event.html',
                 'scope': {
                    'event': '=',
-                   'tmz': '='
+                   'tmz': '=',
+                   'multiSelected': '='
                 },
                 'controller': ['$rootScope', '$scope','dataService', '$location', '$timeout', function($rootScope, $scope, dataService, $location, $timeout){
                     $scope.dataService = dataService;
diff --git a/app/common/directives/log-filter.js b/app/common/directives/log-filter.js
index c9ac1d0..81abc7d 100644
--- a/app/common/directives/log-filter.js
+++ b/app/common/directives/log-filter.js
@@ -25,7 +25,11 @@
                         $scope.selectedSeverity[severity] = !$scope.selectedSeverity[severity];
 
                         if(['high', 'medium', 'low'].indexOf(severity) > -1){
-                            if($scope.selectedSeverity[severity] == false){
+                            if($scope.selectedSeverity[severity] == false &&
+                               (!$scope.selectedSeverity.low &&
+                                !$scope.selectedSeverity.medium &&
+                                !$scope.selectedSeverity.high
+                               )){
                                 $scope.selectedSeverity.all = true;
                                 return;
                             }
diff --git a/app/common/services/api-utils.js b/app/common/services/api-utils.js
index 408e42f..bec96b1 100644
--- a/app/common/services/api-utils.js
+++ b/app/common/services/api-utils.js
@@ -425,6 +425,18 @@
                       var tempKeyParts = [];
                       var order = 0;
 
+                      function getScaledValue(value, scale){
+                        scale = scale + "";
+                        var power = parseInt(scale.replace(/[\s\t\+\-]/g,''),10);
+
+                        if(scale.indexOf("+") > -1){
+                          value = value * Math.pow(10, power);
+                        }else if(scale.indexOf("-") > -1){
+                          value = value / Math.pow(10, power);
+                        }
+                        return value;
+                      }
+
                       function getSensorStatus(reading){
                         var severityFlags = {critical: false, warning: false, normal: false}, severityText = '', order = 0;
 
@@ -483,6 +495,8 @@
                             return prev + " " + el;
                           });
 
+                          content.data[key].Value = getScaledValue(content.data[key].Value, content.data[key].Scale);
+
                           sensorData.push(Object.assign({
                             path: key,
                             selected: false,
diff --git a/app/common/styles/base/mixins.scss b/app/common/styles/base/mixins.scss
index 79b0f34..6067a0e 100644
--- a/app/common/styles/base/mixins.scss
+++ b/app/common/styles/base/mixins.scss
@@ -36,7 +36,7 @@
 }
 
 @mixin fontCourierBold {
-  font-family: "Courier New", Helvetica, monospace, arial, sans-serif;
+  font-family: "Courier New", Helvetica, arial, sans-serif;
   font-weight: 700;
 }
 
diff --git a/app/common/styles/base/typography.scss b/app/common/styles/base/typography.scss
index 64f5e3c..8dc33c0 100644
--- a/app/common/styles/base/typography.scss
+++ b/app/common/styles/base/typography.scss
@@ -54,4 +54,4 @@
   font-family: "Courier New", Helvetica, arial, sans-serif;
   font-weight: 700;
   margin-bottom: 0;
-}
+}
\ No newline at end of file
diff --git a/app/common/styles/elements/index.scss b/app/common/styles/elements/index.scss
index c9e29d9..677a4ba 100644
--- a/app/common/styles/elements/index.scss
+++ b/app/common/styles/elements/index.scss
@@ -1,15 +1,13 @@
-
 @import "toggle-switch";
 @import "toggle-filter";
 @import "status";
-@import "tags";
 @import "alerts";
 @import "inline-confirm";
 @import "accordion";
 @import "loader";
 @import "content-search";
 @import "paginate";
-@import "thresholds";
+@import "tags";
 @import "export";
 @import "modals";
-@import "quicklinks";
+@import "quicklinks";
\ No newline at end of file
diff --git a/app/overview/controllers/system-overview-controller.html b/app/overview/controllers/system-overview-controller.html
index 787a0dd..07fce0b 100644
--- a/app/overview/controllers/system-overview-controller.html
+++ b/app/overview/controllers/system-overview-controller.html
@@ -86,7 +86,7 @@
 				<!-- <p class="disabled">No high priority events</p> -->
 
 				<!-- single event -->
-				<a href="#/server-health/event-log/high" ng-repeat="event in logs|orderBy:'+Id'">
+				<a href="#/server-health/event-log/high/{{event.Id}}" ng-repeat="event in logs|orderBy:'+Id'">
 					<div class="row column event-log__single-event">
 						<div class="row">
 							<div class="column small-1 large-1 event-log__col-check">
diff --git a/app/server-health/controllers/log-controller.html b/app/server-health/controllers/log-controller.html
index 3db7bd9..81f5f3c 100644
--- a/app/server-health/controllers/log-controller.html
+++ b/app/server-health/controllers/log-controller.html
@@ -66,7 +66,9 @@
         <log-event 
         dir-paginate="event in (filteredLogs = (logs|filter:filterBySeverity|filter:filterByStatus|filter:filterByDate|filter:filterBySearchTerms | orderBy:'+Id'))| itemsPerPage: itemsPerPage" 
         event="event" 
-        tmz="tmz">
+        tmz="tmz"
+        multi-selected="selectedEvents.length > 1"
+        >
         </log-event>
     </section>
     <dir-pagination-controls template-url="common/directives/dirPagination.tpl.html"></dir-pagination-controls> 
diff --git a/app/server-health/controllers/log-controller.js b/app/server-health/controllers/log-controller.js
index b53dae0..c6b4d8f 100644
--- a/app/server-health/controllers/log-controller.js
+++ b/app/server-health/controllers/log-controller.js
@@ -24,8 +24,10 @@
                 $scope.tmz = 'EDT';
                 $scope.itemsPerPage = Constants.PAGINATION.LOG_ITEMS_PER_PAGE;
                 $scope.loading = false;
+                var expandedSelectedIdOnce = false;
 
                 var sensorType = $routeParams.type;
+                var eventId = $routeParams.id;
 
                 // priority buttons
                 $scope.selectedSeverity = {
@@ -49,9 +51,25 @@
                 $scope.searchItems = [];
                 $scope.selectedEvents = [];
 
+
+                if(eventId){
+                    $scope.customSearch = "#"+eventId;
+                    $scope.searchItems.push("#"+eventId);
+                }
+
                 $scope.loadLogs = function(){
                     $scope.loading = true;
                     APIUtils.getLogs().then(function(result){
+                        if(eventId && expandedSelectedIdOnce == false){
+                            var log = result.data.filter(function(item){
+                                return item.Id == eventId;
+                            });
+
+                            if(log.length){
+                                log[0].meta = true;
+                            }
+                            expandedSelectedIdOnce = true;
+                        }
                         $scope.logs = result.data;
                         $scope.originalData = result.original;
                         $scope.loading = false;
diff --git a/app/server-health/controllers/sensors-overview-controller.js b/app/server-health/controllers/sensors-overview-controller.js
index 57e3b65..6d33604 100644
--- a/app/server-health/controllers/sensors-overview-controller.js
+++ b/app/server-health/controllers/sensors-overview-controller.js
@@ -76,7 +76,6 @@
                     }
 
                     if($scope.selectedSeverity.all){
-                        $scope.selectedSeverity.normal = false;
                         $scope.selectedSeverity.warning = false;
                         $scope.selectedSeverity.critical = false;
                     }
@@ -85,11 +84,19 @@
                 $scope.toggleSeverity = function(severity){
                     $scope.selectedSeverity[severity] = !$scope.selectedSeverity[severity];
 
-                    if($scope.selectedSeverity.normal && 
-                       $scope.selectedSeverity.warning && 
+                   if(['warning', 'critical'].indexOf(severity) > -1){
+                       if($scope.selectedSeverity[severity] == false &&
+                          (!$scope.selectedSeverity.warning &&
+                           !$scope.selectedSeverity.critical
+                          )){
+                           $scope.selectedSeverity.all = true;
+                           return;
+                       }
+                   }
+
+                    if($scope.selectedSeverity.warning && 
                        $scope.selectedSeverity.critical){
                         $scope.selectedSeverity.all = true;
-                        $scope.selectedSeverity.normal = false;
                         $scope.selectedSeverity.warning = false;
                         $scope.selectedSeverity.critical = false;
                     }else{
diff --git a/app/server-health/controllers/unit-id-controller.js b/app/server-health/controllers/unit-id-controller.js
index 5494c61..42f855d 100644
--- a/app/server-health/controllers/unit-id-controller.js
+++ b/app/server-health/controllers/unit-id-controller.js
@@ -17,18 +17,21 @@
             '$window', 
             'APIUtils', 
             'dataService',
-            function($scope, $window, APIUtils, dataService, userModel){
+            function($scope, $window, APIUtils, dataService){
                 $scope.dataService = dataService;
 
-                $scope.getLEDState = function(){
-                    APIUtils.getLEDState(function(state){
-                        if(state == APIUtils.LED_STATE.on){
-                            dataService.LED_state = APIUtils.LED_STATE_TEXT.on;
-                        }else{
-                            dataService.LED_state = APIUtils.LED_STATE_TEXT.off;
-                        }
-                    });
+                APIUtils.getLEDState().then(function(state){
+                    $scope.displayLEDState(state);
+                });
+
+                $scope.displayLEDState = function(state){
+                    if(state == APIUtils.LED_STATE.on){
+                        dataService.LED_state = APIUtils.LED_STATE_TEXT.on;
+                    }else{
+                        dataService.LED_state = APIUtils.LED_STATE_TEXT.off;
+                    }
                 }
+
                 $scope.toggleLED = function(){
                     var toggleState = (dataService.LED_state == APIUtils.LED_STATE_TEXT.on) ?
                         APIUtils.LED_STATE.off : APIUtils.LED_STATE.on;
@@ -37,8 +40,6 @@
                     APIUtils.setLEDState(toggleState, function(status){
                     });
                 }
-
-                $scope.getLEDState();
             }
         ]
     );
diff --git a/app/server-health/index.js b/app/server-health/index.js
index 3c32065..1d4ff9f 100644
--- a/app/server-health/index.js
+++ b/app/server-health/index.js
@@ -28,6 +28,11 @@
                     'controller': 'logController',
                     authenticated: true
                 })
+                .when('/server-health/event-log/:type/:id', {
+                    'templateUrl': 'server-health/controllers/log-controller.html',
+                    'controller': 'logController',
+                    authenticated: true
+                })
                 .when('/server-health/inventory-overview', {
                     'templateUrl': 'server-health/controllers/inventory-overview-controller.html',
                     'controller': 'inventoryOverviewController',
diff --git a/src/dashboard.html b/src/dashboard.html
deleted file mode 100644
index 42ee109..0000000
--- a/src/dashboard.html
+++ /dev/null
@@ -1,122 +0,0 @@
-<!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>
-    <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)
-                }
-            });
-        }
-        var login = {
-            "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();
-            },
-            "error": function(xhr, textStatus, errorThrown){
-                console.log("not a successful request!");
-                console.log(xhr, textStatus, errorThrown)
-            }
-        };
-    </script>
-</head>
-<body>
-
-    <!-- Header & Navigation includes -->
-    <div id="header__wrapper"></div>
-    <div id="navigation"></div>
-    <main class="content__container" role="main">
-        <div class="row">
-            <div class="column">
-
-                <!-- Main content -->
-                <script>$.ajax(login)</script>
-                <div id="data"></div>
-
-                <p>Donec sollicitudin molestie malesuada. Pellentesque in ipsum id orci porta dapibus. Curabitur non nulla sit amet nisl tempus convallis quis ac lectus. Vivamus suscipit tortor eget felis porttitor volutpat. Cras ultricies ligula sed magna dictum porta. Sed porttitor lectus nibh. Praesent sapien massa, convallis a pellentesque nec, egestas non nisi. Vivamus suscipit tortor eget felis porttitor volutpat. Vivamus suscipit tortor eget felis porttitor volutpat. Nulla porttitor accumsan tincidunt.</p>
-            </div>
-        </div>
-    </main>
-
-</body>
-<script src="js/app.min.js"></script>
-</html>
