diff --git a/app/multi-server/controllers/multi-server-controller.js b/app/multi-server/controllers/multi-server-controller.js
index 71ec3ac..fc69f81 100644
--- a/app/multi-server/controllers/multi-server-controller.js
+++ b/app/multi-server/controllers/multi-server-controller.js
@@ -9,51 +9,45 @@
 window.angular && (function(angular) {
   'use strict';
 
-  angular
-    .module('app.overview')
-    .controller('multiServerController', [
-      '$scope',
-      '$window',
-      'APIUtils',
-      'dataService',
-      function($scope, $window, APIUtils, dataService) {
-        $scope.dataService = dataService;
+  angular.module('app.overview').controller('multiServerController', [
+    '$scope', '$window', 'APIUtils', 'dataService',
+    function($scope, $window, APIUtils, dataService) {
+      $scope.dataService = dataService;
+      $scope.customSearch = '';
+      $scope.searchTerms = [];
+      $scope.loading = false;
+      $scope.clear = function() {
         $scope.customSearch = '';
         $scope.searchTerms = [];
-        $scope.loading = false;
-        $scope.clear = function() {
-          $scope.customSearch = '';
-          $scope.searchTerms = [];
-        };
+      };
 
-        $scope.doSearchOnEnter = function(event) {
-          var search = $scope.customSearch.replace(/^\s+/g, '').replace(/\s+$/g, '');
-          if (event.keyCode === 13 &&
-            search.length >= 2) {
-            $scope.searchTerms = $scope.customSearch.split(' ');
+      $scope.doSearchOnEnter = function(event) {
+        var search =
+            $scope.customSearch.replace(/^\s+/g, '').replace(/\s+$/g, '');
+        if (event.keyCode === 13 && search.length >= 2) {
+          $scope.searchTerms = $scope.customSearch.split(' ');
+        } else {
+          if (search.length == 0) {
+            $scope.searchTerms = [];
           }
-          else {
-            if (search.length == 0) {
-              $scope.searchTerms = [];
-            }
-          }
-        };
+        }
+      };
 
-        $scope.doSearchOnClick = function() {
-          var search = $scope.customSearch.replace(/^\s+/g, '').replace(/\s+$/g, '');
-          if (search.length >= 2) {
-            $scope.searchTerms = $scope.customSearch.split(' ');
+      $scope.doSearchOnClick = function() {
+        var search =
+            $scope.customSearch.replace(/^\s+/g, '').replace(/\s+$/g, '');
+        if (search.length >= 2) {
+          $scope.searchTerms = $scope.customSearch.split(' ');
+        } else {
+          if (search.length == 0) {
+            $scope.searchTerms = [];
           }
-          else {
-            if (search.length == 0) {
-              $scope.searchTerms = [];
-            }
-          }
-        };
-        $scope.addServer = function() {
-          $scope.multi_server_add = !$scope.multi_server_add;
-        };
-      }
-    ]);
+        }
+      };
+      $scope.addServer = function() {
+        $scope.multi_server_add = !$scope.multi_server_add;
+      };
+    }
+  ]);
 
 })(angular);
