diff --git a/app/common/directives/app-header.html b/app/common/directives/app-header.html
index 9ae4283..3464518 100644
--- a/app/common/directives/app-header.html
+++ b/app/common/directives/app-header.html
@@ -17,7 +17,7 @@
 			<a class="header__info" ng-click="toggle = !toggle"><span>Server Info</span><i class="icon icon-angle" aria-hidden="true"></i></a>
 			<a href="#/server-health/event-log" class="header__server-health">Server health
 				<i class="icon icon-angle" aria-hidden="true"></i><span ng-class="{'status-light__error': dataService.server_health == 'Critical', 'status-light__warn': dataService.server_health == 'Warning', 'status-light__good': dataService.server_health == 'Good'}">{{dataService.server_health}}</span></a>
-			 <a href="#/server-control/power-operations" class="header__server-power" role="button">Server power 
+			 <a href="#/server-control/power-operations" class="header__server-power" role="button">Server power
                 <i class="icon icon-angle" aria-hidden="true"></i><span ng-class="{'status-light__off': dataService.server_state == 'Off', 'status-light__disabled': dataService.server_state == 'Unreachable', 'status-light__good': dataService.server_state == 'Running', 'status-light__warn': dataService.server_state == 'Quiesced'}">{{dataService.server_state | quiescedToStandBy}}</span></a>
 			<p class="header__refresh">Data last refreshed<span>{{dataService.last_updated |date:'h:mm:ss MMM dd yyyy'}}</span>
 			</p>
diff --git a/app/common/directives/log-filter.html b/app/common/directives/log-filter.html
index eac263f..c1c3122 100644
--- a/app/common/directives/log-filter.html
+++ b/app/common/directives/log-filter.html
@@ -38,17 +38,17 @@
             </button>
             <ul class="dropdown__list inline" ng-show="statusFilter">
                 <li>
-                    <button 
+                    <button
                         ng-click="selectedStatus.all = true; statusFilter = false;"
                         ng-class="{'active' : selectedStatus.all}">All events</button>
                 </li>
                 <li>
-                    <button 
+                    <button
                         ng-click="selectedStatus.all = false; selectedStatus.resolved = true; statusFilter = false;"
                         ng-class="{'active' : selectedStatus.resolved}">Resolved events</button>
                 </li>
                 <li>
-                    <button 
+                    <button
                         ng-click="selectedStatus.all = false; selectedStatus.resolved = false; statusFilter = false;"
                         ng-class="{'active' : !selectedStatus.resolved}">Unresolved events</button>
                 </li>
diff --git a/app/common/directives/log-filter.js b/app/common/directives/log-filter.js
index bc2da0e..370e666 100644
--- a/app/common/directives/log-filter.js
+++ b/app/common/directives/log-filter.js
@@ -33,8 +33,8 @@
                             }
                         }
 
-                        if($scope.selectedSeverity.low && 
-                           $scope.selectedSeverity.medium && 
+                        if($scope.selectedSeverity.low &&
+                           $scope.selectedSeverity.medium &&
                            $scope.selectedSeverity.high){
                             $scope.selectedSeverity.all = true;
                             $scope.selectedSeverity.low = false;
diff --git a/app/common/directives/toggle-flag.js b/app/common/directives/toggle-flag.js
index aca09ca..9c342b0 100644
--- a/app/common/directives/toggle-flag.js
+++ b/app/common/directives/toggle-flag.js
@@ -7,19 +7,19 @@
             return {
                 restrict: 'A',
                 link: function (scope, element, attrs) {
-        
+
                     function elementClick(e) {
                         e.stopPropagation();
                     }
-        
+
                     function documentClick(e) {
                         scope[attrs.toggleFlag] = false;
                         scope.$apply();
                     }
-        
+
                     element.on('click', elementClick);
                     $document.on('click', documentClick);
-        
+
                     // remove event handlers when directive is destroyed
                     scope.$on('$destroy', function () {
                         element.off('click', elementClick);
diff --git a/app/common/services/api-utils.js b/app/common/services/api-utils.js
index 5eadb33..3e0c59e 100644
--- a/app/common/services/api-utils.js
+++ b/app/common/services/api-utils.js
@@ -499,26 +499,26 @@
                       function getSensorStatus(reading){
                         var severityFlags = {critical: false, warning: false, normal: false}, severityText = '', order = 0;
 
-                        if(reading.hasOwnProperty('CriticalLow') && 
+                        if(reading.hasOwnProperty('CriticalLow') &&
                           reading.Value < reading.CriticalLow
                           ){
                           severityFlags.critical = true;
                           severityText = 'critical';
                           order = 2;
-                        }else if(reading.hasOwnProperty('CriticalHigh') && 
-                          reading.Value > reading.CriticalHigh 
+                        }else if(reading.hasOwnProperty('CriticalHigh') &&
+                          reading.Value > reading.CriticalHigh
                           ){
                           severityFlags.critical = true;
                           severityText = 'critical';
                           order = 2;
-                        }else if(reading.hasOwnProperty('CriticalLow') && 
-                          reading.hasOwnProperty('WarningLow') && 
+                        }else if(reading.hasOwnProperty('CriticalLow') &&
+                          reading.hasOwnProperty('WarningLow') &&
                           reading.Value >= reading.CriticalLow && reading.Value <= reading.WarningLow){
                           severityFlags.warning = true;
                           severityText = 'warning';
                           order = 1;
-                        }else if(reading.hasOwnProperty('WarningHigh') && 
-                          reading.hasOwnProperty('CriticalHigh') && 
+                        }else if(reading.hasOwnProperty('WarningHigh') &&
+                          reading.hasOwnProperty('CriticalHigh') &&
                           reading.Value >= reading.WarningHigh && reading.Value <= reading.CriticalHigh){
                           severityFlags.warning = true;
                           severityText = 'warning';
@@ -576,9 +576,9 @@
                             status: severity.severityText,
                             order: severity.order,
                             custom_order: customOrder,
-                            search_text: (title + " " + content.data[key].Value + " " + 
-                               Constants.SENSOR_UNIT_MAP[content.data[key].Unit] + " " + 
-                               severity.severityText + " " + 
+                            search_text: (title + " " + content.data[key].Value + " " +
+                               Constants.SENSOR_UNIT_MAP[content.data[key].Unit] + " " +
+                               severity.severityText + " " +
                                content.data[key].CriticalLow + " " +
                                content.data[key].CriticalHigh + " " +
                                content.data[key].WarningLow + " " +
@@ -688,8 +688,8 @@
                       }
 
                       deferred.resolve({
-                          data: data, 
-                          bmcActiveVersion: bmcActiveVersion, 
+                          data: data,
+                          bmcActiveVersion: bmcActiveVersion,
                           hostActiveVersion: hostActiveVersion
                       });
                 }, function(error){
@@ -916,11 +916,11 @@
                           searchText += " " + data[i].key + " " + data[i].value;
                         }
 
-                        return searchText; 
+                        return searchText;
                       }
 
                       for(var key in content.data){
-                        if(content.data.hasOwnProperty(key) && 
+                        if(content.data.hasOwnProperty(key) &&
                            key.indexOf(Constants.HARDWARE.component_key_filter) == 0){
 
                           data = camelcaseToLabel(content.data[key]);
@@ -936,7 +936,7 @@
                                 selected: false,
                                 expanded: false,
                                 search_text: title.toLowerCase() + " " + searchText.toLowerCase(),
-                                sub_components: [], 
+                                sub_components: [],
                                 original_data: {key: key, value: content.data[key]}
                               }, {items: data}));
 
diff --git a/app/configuration/controllers/date-time-controller.js b/app/configuration/controllers/date-time-controller.js
index 75662cc..02bd936 100644
--- a/app/configuration/controllers/date-time-controller.js
+++ b/app/configuration/controllers/date-time-controller.js
@@ -13,9 +13,9 @@
     angular
         .module('app.configuration')
         .controller('dateTimeController', [
-            '$scope', 
-            '$window', 
-            'APIUtils', 
+            '$scope',
+            '$window',
+            'APIUtils',
             'dataService',
             function($scope, $window, APIUtils, dataService){
                 $scope.dataService = dataService;
diff --git a/app/configuration/controllers/file-controller.js b/app/configuration/controllers/file-controller.js
index 3870f11..b78062a 100644
--- a/app/configuration/controllers/file-controller.js
+++ b/app/configuration/controllers/file-controller.js
@@ -13,9 +13,9 @@
     angular
         .module('app.configuration')
         .controller('fileController', [
-            '$scope', 
-            '$window', 
-            'APIUtils', 
+            '$scope',
+            '$window',
+            'APIUtils',
             'dataService',
             function($scope, $window, APIUtils, dataService){
                 $scope.dataService = dataService;
diff --git a/app/configuration/controllers/firmware-controller.js b/app/configuration/controllers/firmware-controller.js
index 873327c..6356a73 100644
--- a/app/configuration/controllers/firmware-controller.js
+++ b/app/configuration/controllers/firmware-controller.js
@@ -64,7 +64,7 @@
                     $scope.preserveSettingsConfirmed = function(){
                         $scope.uploading = true;
                         APIUtils.activateImage($scope.activate_image_id).then(function(response){
-                            $scope.uploading = false; 
+                            $scope.uploading = false;
                             if(response.status == 'error'){
                                 $scope.displayError({
                                     modal_title: response.data.description,
diff --git a/app/configuration/controllers/network-controller.js b/app/configuration/controllers/network-controller.js
index 90b89f8..1ba731a 100644
--- a/app/configuration/controllers/network-controller.js
+++ b/app/configuration/controllers/network-controller.js
@@ -13,9 +13,9 @@
     angular
         .module('app.configuration')
         .controller('networkController', [
-            '$scope', 
-            '$window', 
-            'APIUtils', 
+            '$scope',
+            '$window',
+            'APIUtils',
             'dataService',
             function($scope, $window, APIUtils, dataService){
                 $scope.dataService = dataService;
diff --git a/app/configuration/controllers/security-controller.js b/app/configuration/controllers/security-controller.js
index e3a7778..20e2e1b 100644
--- a/app/configuration/controllers/security-controller.js
+++ b/app/configuration/controllers/security-controller.js
@@ -13,9 +13,9 @@
     angular
         .module('app.configuration')
         .controller('securityController', [
-            '$scope', 
-            '$window', 
-            'APIUtils', 
+            '$scope',
+            '$window',
+            'APIUtils',
             'dataService',
             function($scope, $window, APIUtils, dataService){
                 $scope.dataService = dataService;
diff --git a/app/firmware/controllers/bmc-controller.js b/app/firmware/controllers/bmc-controller.js
index 0b3a622..c42b759 100644
--- a/app/firmware/controllers/bmc-controller.js
+++ b/app/firmware/controllers/bmc-controller.js
@@ -13,9 +13,9 @@
     angular
         .module('app.firmware')
         .controller('bmcController', [
-            '$scope', 
-            '$window', 
-            'APIUtils', 
+            '$scope',
+            '$window',
+            'APIUtils',
             'dataService',
             function($scope, $window, APIUtils, dataService){
                 $scope.dataService = dataService;
diff --git a/app/firmware/controllers/server-controller.js b/app/firmware/controllers/server-controller.js
index daf97b4..7a0cbff 100644
--- a/app/firmware/controllers/server-controller.js
+++ b/app/firmware/controllers/server-controller.js
@@ -13,9 +13,9 @@
     angular
         .module('app.firmware')
         .controller('serverController', [
-            '$scope', 
-            '$window', 
-            'APIUtils', 
+            '$scope',
+            '$window',
+            'APIUtils',
             'dataService',
             function($scope, $window, APIUtils, dataService){
                 $scope.dataService = dataService;
diff --git a/app/login/controllers/login-controller.js b/app/login/controllers/login-controller.js
index 79ee477..8dc1d1b 100644
--- a/app/login/controllers/login-controller.js
+++ b/app/login/controllers/login-controller.js
@@ -13,10 +13,10 @@
     angular
         .module('app.login')
         .controller('LoginController', [
-            '$scope', 
-            '$window', 
-            'APIUtils', 
-            'dataService', 
+            '$scope',
+            '$window',
+            'APIUtils',
+            'dataService',
             'userModel',
             '$routeParams',
             function($scope, $window, APIUtils, dataService, userModel, $routeParams){
@@ -33,7 +33,7 @@
                     if(event.keyCode === 13){
                         $scope.login(host, username, password);
                     }
-                }; 
+                };
                 $scope.login = function(host, username, password){
                     $scope.error = false;
                     $scope.server_unreachable = false;
diff --git a/app/overview/controllers/system-overview-controller.js b/app/overview/controllers/system-overview-controller.js
index 4dd012d..93aa71d 100644
--- a/app/overview/controllers/system-overview-controller.js
+++ b/app/overview/controllers/system-overview-controller.js
@@ -13,9 +13,9 @@
     angular
         .module('app.overview')
         .controller('systemOverviewController', [
-            '$scope', 
-            '$window', 
-            'APIUtils', 
+            '$scope',
+            '$window',
+            'APIUtils',
             'dataService',
             '$q',
             function($scope, $window, APIUtils, dataService, $q){
@@ -43,8 +43,8 @@
                       .then(function(data){
                         $scope.displayLogs(data.logs.data);
                         $scope.displayServerInfo(
-                            data.firmware.data, 
-                            data.firmware.bmcActiveVersion, 
+                            data.firmware.data,
+                            data.firmware.bmcActiveVersion,
                             data.firmware.hostActiveVersion
                         );
                         $scope.displayLEDState(data.led);
diff --git a/app/server-control/controllers/bmc-reboot-controller.js b/app/server-control/controllers/bmc-reboot-controller.js
index a28c6ad..f5e0923 100644
--- a/app/server-control/controllers/bmc-reboot-controller.js
+++ b/app/server-control/controllers/bmc-reboot-controller.js
@@ -13,9 +13,9 @@
     angular
         .module('app.serverControl')
         .controller('bmcRebootController', [
-            '$scope', 
-            '$window', 
-            'APIUtils', 
+            '$scope',
+            '$window',
+            'APIUtils',
             'dataService',
             function($scope, $window, APIUtils, dataService){
                 $scope.dataService = dataService;
diff --git a/app/server-control/controllers/power-operations-controller.js b/app/server-control/controllers/power-operations-controller.js
index 273bb19..4ae753e 100644
--- a/app/server-control/controllers/power-operations-controller.js
+++ b/app/server-control/controllers/power-operations-controller.js
@@ -13,10 +13,10 @@
     angular
         .module('app.serverControl')
         .controller('powerOperationsController', [
-            '$scope', 
-            'APIUtils', 
-            'dataService', 
-            '$timeout', 
+            '$scope',
+            'APIUtils',
+            'dataService',
+            '$timeout',
             function($scope, APIUtils, dataService, $timeout){
                 $scope.dataService = dataService;
                 $scope.confirm = false;
diff --git a/app/server-control/controllers/remote-console-controller.js b/app/server-control/controllers/remote-console-controller.js
index c32749a..7da4526 100644
--- a/app/server-control/controllers/remote-console-controller.js
+++ b/app/server-control/controllers/remote-console-controller.js
@@ -15,15 +15,15 @@
     angular
         .module('app.serverControl')
         .controller('remoteConsoleController', [
-            '$scope', 
-            '$window', 
-            'APIUtils', 
+            '$scope',
+            '$window',
+            'APIUtils',
             'dataService',
             function($scope, $window, APIUtils, dataService){
                 $scope.dataService = dataService;
 
                 // See https://github.com/macton/hterm for available hterm options
-                
+
                 //Storage
                 hterm.defaultStorage = new lib.Storage.Local();
 
@@ -50,7 +50,7 @@
                 term.io.println('OpenBMC ver.00');
                 term.io.println('This is not an actual live connection.');
                 term.io.print('root@OpenBmc:');
-                
+
                 //Allows keyboard input
                 term.installKeyboard();
 
diff --git a/app/server-control/controllers/remote-console-window-controller.js b/app/server-control/controllers/remote-console-window-controller.js
index cb2835d..aa0e152 100644
--- a/app/server-control/controllers/remote-console-window-controller.js
+++ b/app/server-control/controllers/remote-console-window-controller.js
@@ -13,16 +13,16 @@
     angular
         .module('app.serverControl')
         .controller('remoteConsoleWindowController', [
-            '$scope', 
-            '$window', 
-            'APIUtils', 
+            '$scope',
+            '$window',
+            'APIUtils',
             'dataService',
             function($scope, $window, APIUtils, dataService){
                 $scope.dataService = dataService;
                 dataService.showNavigation = false;
 
                 // See https://github.com/macton/hterm for available hterm options
-                
+
                 //Storage
                 hterm.defaultStorage = new lib.Storage.Local();
 
@@ -49,7 +49,7 @@
                 term.io.println('OpenBMC ver.00');
                 term.io.println('This is not an actual live connection.');
                 term.io.print('root@IBM:');
-                
+
                 //Allows keyboard input
                 term.installKeyboard();
 
diff --git a/app/server-health/controllers/diagnostics-controller.js b/app/server-health/controllers/diagnostics-controller.js
index 1613d8d..2306747 100644
--- a/app/server-health/controllers/diagnostics-controller.js
+++ b/app/server-health/controllers/diagnostics-controller.js
@@ -13,9 +13,9 @@
     angular
         .module('app.serverHealth')
         .controller('diagnosticsController', [
-            '$scope', 
-            '$window', 
-            'APIUtils', 
+            '$scope',
+            '$window',
+            'APIUtils',
             'dataService',
             function($scope, $window, APIUtils, dataService){
                 $scope.dataService = dataService;
diff --git a/app/server-health/controllers/inventory-controller.js b/app/server-health/controllers/inventory-controller.js
index 7196f7b..3c8ac40 100644
--- a/app/server-health/controllers/inventory-controller.js
+++ b/app/server-health/controllers/inventory-controller.js
@@ -13,9 +13,9 @@
     angular
         .module('app.serverHealth')
         .controller('inventoryController', [
-            '$scope', 
-            '$window', 
-            'APIUtils', 
+            '$scope',
+            '$window',
+            'APIUtils',
             'dataService',
             function($scope, $window, APIUtils, dataService){
                 $scope.dataService = dataService;
diff --git a/app/server-health/controllers/inventory-overview-controller.js b/app/server-health/controllers/inventory-overview-controller.js
index 7a62d40..6a3fd77 100644
--- a/app/server-health/controllers/inventory-overview-controller.js
+++ b/app/server-health/controllers/inventory-overview-controller.js
@@ -13,9 +13,9 @@
     angular
         .module('app.serverHealth')
         .controller('inventoryOverviewController', [
-            '$scope', 
-            '$window', 
-            'APIUtils', 
+            '$scope',
+            '$window',
+            'APIUtils',
             'dataService',
             function($scope, $window, APIUtils, dataService){
                 $scope.dataService = dataService;
@@ -62,7 +62,7 @@
 
                 $scope.filterBySearchTerms = function(hardware){
 
-                    if(!$scope.searchTerms.length) return true; 
+                    if(!$scope.searchTerms.length) return true;
 
                     for(var i = 0, length = $scope.searchTerms.length; i < length; i++){
                         if(hardware.search_text.indexOf($scope.searchTerms[i].toLowerCase()) == -1) return false;
diff --git a/app/server-health/controllers/log-controller.html b/app/server-health/controllers/log-controller.html
index 3e1be4f..ba21bc6 100644
--- a/app/server-health/controllers/log-controller.html
+++ b/app/server-health/controllers/log-controller.html
@@ -64,8 +64,8 @@
             </div>
         </div>
         <log-event
-        dir-paginate="event in (filteredLogs = (logs|filter:filterBySeverity|filter:filterByStatus|filter:filterByDate|filter:filterBySearchTerms | orderBy:'+Id'))| itemsPerPage: itemsPerPage" 
-        event="event" 
+        dir-paginate="event in (filteredLogs = (logs|filter:filterBySeverity|filter:filterByStatus|filter:filterByDate|filter:filterBySearchTerms | orderBy:'+Id'))| itemsPerPage: itemsPerPage"
+        event="event"
         tmz="tmz"
         multi-selected="selectedEvents.length > 1"
         >
diff --git a/app/server-health/controllers/log-controller.js b/app/server-health/controllers/log-controller.js
index 62750de..7493ba5 100644
--- a/app/server-health/controllers/log-controller.js
+++ b/app/server-health/controllers/log-controller.js
@@ -15,9 +15,9 @@
             paginationTemplateProvider.setString(require('../../common/directives/dirPagination.tpl.html'));
         })
         .controller('logController', [
-            '$scope', 
-            '$window', 
-            'APIUtils', 
+            '$scope',
+            '$window',
+            'APIUtils',
             'dataService',
             'Constants',
             '$routeParams',
@@ -117,7 +117,7 @@
                 }
 
                 $scope.filterBySearchTerms = function(log){
-                    if(!$scope.searchItems.length) return true; 
+                    if(!$scope.searchItems.length) return true;
 
                     for(var i = 0, length = $scope.searchItems.length; i < length; i++){
                         if(log.search_text.indexOf($scope.searchItems[i].toLowerCase()) == -1) return false;
@@ -130,7 +130,7 @@
                     terms.forEach(function(searchTerm){
                         if($scope.searchItems.indexOf(searchTerm) == -1){
                             $scope.searchItems.push(searchTerm);
-                        }  
+                        }
                     });
                 }
 
diff --git a/app/server-health/controllers/power-consumption-controller.js b/app/server-health/controllers/power-consumption-controller.js
index 893ca31..aa97e19 100644
--- a/app/server-health/controllers/power-consumption-controller.js
+++ b/app/server-health/controllers/power-consumption-controller.js
@@ -13,9 +13,9 @@
     angular
         .module('app.serverHealth')
         .controller('powerConsumptionController', [
-            '$scope', 
-            '$window', 
-            'APIUtils', 
+            '$scope',
+            '$window',
+            'APIUtils',
             'dataService',
             function($scope, $window, APIUtils, dataService){
                 $scope.dataService = dataService;
diff --git a/app/server-health/controllers/sensors-controller.js b/app/server-health/controllers/sensors-controller.js
index 307a451..71d4033 100644
--- a/app/server-health/controllers/sensors-controller.js
+++ b/app/server-health/controllers/sensors-controller.js
@@ -15,8 +15,8 @@
         .controller('sensorsController', [
             '$scope',
             '$log',
-            '$window', 
-            'APIUtils', 
+            '$window',
+            'APIUtils',
             'dataService',
             '$routeParams',
             function($scope, $log, $window, APIUtils, dataService, $routeParams){
@@ -51,8 +51,8 @@
                 $scope.toggleSeverity = function(severity){
                     $scope.selectedSeverity[severity] = !$scope.selectedSeverity[severity];
 
-                    if($scope.selectedSeverity.normal && 
-                       $scope.selectedSeverity.warning && 
+                    if($scope.selectedSeverity.normal &&
+                       $scope.selectedSeverity.warning &&
                        $scope.selectedSeverity.critical){
                         $scope.selectedSeverity.all = true;
                         $scope.selectedSeverity.normal = false;
@@ -104,7 +104,7 @@
                 }
                 $scope.filterBySearchTerms = function(sensor){
 
-                    if(!$scope.searchTerms.length) return true; 
+                    if(!$scope.searchTerms.length) return true;
 
                     for(var i = 0, length = $scope.searchTerms.length; i < length; i++){
                         if(sensor.search_text.indexOf($scope.searchTerms[i].toLowerCase()) == -1) return false;
diff --git a/app/server-health/controllers/sensors-overview-controller.js b/app/server-health/controllers/sensors-overview-controller.js
index b90ca0e..04502ca 100644
--- a/app/server-health/controllers/sensors-overview-controller.js
+++ b/app/server-health/controllers/sensors-overview-controller.js
@@ -14,8 +14,8 @@
         .controller('sensorsOverviewController', [
             '$scope',
             '$log',
-            '$window', 
-            'APIUtils', 
+            '$window',
+            'APIUtils',
             'dataService',
             'Constants',
             function($scope, $log, $window, APIUtils, dataService, Constants){
@@ -93,7 +93,7 @@
                        }
                    }
 
-                    if($scope.selectedSeverity.warning && 
+                    if($scope.selectedSeverity.warning &&
                        $scope.selectedSeverity.critical){
                         $scope.selectedSeverity.all = true;
                         $scope.selectedSeverity.warning = false;
@@ -113,7 +113,7 @@
                 }
                 $scope.filterBySearchTerms = function(sensor){
 
-                    if(!$scope.searchTerms.length) return true; 
+                    if(!$scope.searchTerms.length) return true;
 
                     for(var i = 0, length = $scope.searchTerms.length; i < length; i++){
                         if(sensor.search_text.indexOf($scope.searchTerms[i].toLowerCase()) == -1) return false;
diff --git a/app/server-health/controllers/unit-id-controller.js b/app/server-health/controllers/unit-id-controller.js
index 42f855d..a91094d 100644
--- a/app/server-health/controllers/unit-id-controller.js
+++ b/app/server-health/controllers/unit-id-controller.js
@@ -13,9 +13,9 @@
     angular
         .module('app.serverHealth')
         .controller('unitIdController', [
-            '$scope', 
-            '$window', 
-            'APIUtils', 
+            '$scope',
+            '$window',
+            'APIUtils',
             'dataService',
             function($scope, $window, APIUtils, dataService){
                 $scope.dataService = dataService;
diff --git a/app/users/controllers/user-accounts-controller.js b/app/users/controllers/user-accounts-controller.js
index 2ac5ee0..f3d7160 100644
--- a/app/users/controllers/user-accounts-controller.js
+++ b/app/users/controllers/user-accounts-controller.js
@@ -13,9 +13,9 @@
     angular
         .module('app.users')
         .controller('userAccountsController', [
-            '$scope', 
-            '$window', 
-            'APIUtils', 
+            '$scope',
+            '$window',
+            'APIUtils',
             'dataService',
             function($scope, $window, APIUtils, dataService){
                 $scope.dataService = dataService;
diff --git a/gulp_tasks/minifyvendors.js b/gulp_tasks/minifyvendors.js
index 38a17ce..2819402 100644
--- a/gulp_tasks/minifyvendors.js
+++ b/gulp_tasks/minifyvendors.js
@@ -26,7 +26,7 @@
         .src(options.bowerFolderPath + '/**/*.js')
         .pipe(uglify({
             preserveComments: 'false'
-        })) 
+        }))
         .pipe(rename({suffix: '.min'}))
         .pipe(gulp.dest(function(file) {
             return file.base;
