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();
             }
         ]
     );
