diff --git a/app/common/services/userModel.js b/app/common/services/userModel.js
index cd943f9..0232200 100644
--- a/app/common/services/userModel.js
+++ b/app/common/services/userModel.js
@@ -10,29 +10,26 @@
 window.angular && (function(angular) {
   'use strict';
 
-  angular
-    .module('app.common.services')
-    .service('userModel', ['APIUtils', function(APIUtils) {
+  angular.module('app.common.services').service('userModel', [
+    'APIUtils',
+    function(APIUtils) {
       return {
         login: function(username, password, callback) {
           APIUtils.login(username, password, function(response, error) {
             if (response &&
-              (response.status == APIUtils.API_RESPONSE.SUCCESS_STATUS ||
-                response.status === undefined)) {
+                (response.status == APIUtils.API_RESPONSE.SUCCESS_STATUS ||
+                 response.status === undefined)) {
               sessionStorage.setItem('LOGIN_ID', username);
               callback(true);
-            }
-            else if (response && response.data && response.data.data &&
-              response.data.data.description) {
+            } else if (
+                response && response.data && response.data.data &&
+                response.data.data.description) {
               callback(false, response.data.data.description);
-            }
-            else if (response && response.message) {
+            } else if (response && response.message) {
               callback(false, response.message);
-            }
-            else if (error) {
+            } else if (error) {
               callback(false, 'Server unreachable');
-            }
-            else {
+            } else {
               callback(false, 'Internal error');
             }
           });
@@ -46,20 +43,19 @@
         logout: function(callback) {
           APIUtils.logout(function(response, error) {
             if (response &&
-              response.status == APIUtils.API_RESPONSE.SUCCESS_STATUS) {
+                response.status == APIUtils.API_RESPONSE.SUCCESS_STATUS) {
               sessionStorage.removeItem('LOGIN_ID');
               sessionStorage.removeItem(APIUtils.HOST_SESSION_STORAGE_KEY);
               callback(true);
-            }
-            else if (response.status == APIUtils.API_RESPONSE.ERROR_STATUS) {
+            } else if (response.status == APIUtils.API_RESPONSE.ERROR_STATUS) {
               callback(false);
-            }
-            else {
+            } else {
               callback(false, error);
             }
           });
         }
       };
-    }]);
+    }
+  ]);
 
 })(window.angular);
