incremental
diff --git a/static/js/bmcApp.js b/static/js/bmcApp.js
index 7575e34..55e4a42 100644
--- a/static/js/bmcApp.js
+++ b/static/js/bmcApp.js
@@ -1,88 +1,79 @@
 'use strict';
 angular.module('Authentication', []);
 var app = angular.module('bmcApp', [
-  'Authentication', 
-  'ngCookies', 
-  'ui.bootstrap', 
-  'ui.router',
-  'ngSanitize', 
-  'ngWebSocket', 
-  'ngResource'
+  'ngCookies', 'ngAnimate', 'ngSanitize', 'ui.bootstrap',
+  'ui.router', 'ngWebSocket', 'Authentication', 'ui.router.modal',
 ]);
 
-
-
-app.controller('MainCtrl', ['$scope', function($scope) {
-
-}]);
-
-app.service('loginInterceptor', ["$injector",
+app.service('loginInterceptor', [
+  '$injector',
   function($injector) {
     var service = this;
 
     service.responseError = function(response) {
-        var $state = $injector.get('$state');
-        var AuthenticationService = $injector.get('AuthenticationService');
-        if (response.status == 401){
-          console.log("Login required... ");
+      var $state = $injector.get('$state');
+      var AuthenticationService = $injector.get('AuthenticationService');
+      if (response.status == 401) {
+        console.log('Login required... ');
 
-          var invalidate_reason = "Your user was logged out.";
+        var invalidate_reason = 'Your user was logged out.';
 
-          // if we're attempting to log in, we need to
-          // continue the promise chain to make sure the user is informed
-          if ($state.current.name === "login") {
-            invalidate_reason = "Your username and password was incorrect";
-          } else {
-            $state.after_login_state = $state.current.name;
-            $state.go('login');
-          }
-          AuthenticationService.ClearCredentials(invalidate_reason);
+        // if we're attempting to log in, we need to
+        // continue the promise chain to make sure the user is informed
+        if ($state.current.name === 'login') {
+          invalidate_reason = 'Your username and password was incorrect';
+        } else {
+          $state.after_login_state = $state.current.name;
+          $state.go('login');
         }
-        return response;
+        AuthenticationService.ClearCredentials(invalidate_reason);
+        }
+      return response;
     };
-}])
-
-app.config(['$httpProvider', function ($httpProvider) {
-    $httpProvider.interceptors.push('loginInterceptor');
-}]);
-
-app.directive('windowSize', ['$window', function ($window) {
-  return function (scope, element) {
-    var w = angular.element($window);
-    scope.getWindowDimensions = function () {
-        return {
-            'h': w.height(),
-            'w': w.width()
-        };
-    };
-    scope.$watch(scope.getWindowDimensions, function (newValue, oldValue) {
-      scope.windowHeight = newValue.h;
-      scope.windowWidth = newValue.w;
-      scope.style = function () {
-          return {
-              'height': (newValue.h - 100) + 'px',
-              'width': (newValue.w - 100) + 'px'
-          };
-      };
-    }, true);
-
-    w.bind('resize', function () {
-        scope.$apply();
-    });
   }
-}]);
+])
 
-app.run(['$rootScope', '$cookieStore', '$state', '$resource', 'AuthenticationService', '$http', '$templateCache',
-  function($rootScope, $cookieStore, $state, $resource, AuthenticationService, $http, $templateCache) {
+app.config([
+  '$httpProvider',
+  function($httpProvider) {
+    $httpProvider.interceptors.push('loginInterceptor');
+  }
+]);
 
-    $http.get('static/partial-login.html', {cache:$templateCache});
-    $http.get('static/partial-kvm.html', {cache: $templateCache});
+app.directive('windowSize', [
+  '$window',
+  function($window) {
+    return function(scope, element) {
+      var w = angular.element($window);
+      scope.getWindowDimensions = function() {
+        return {'h' : w.height(), 'w' : w.width()};
+      };
+      scope.$watch(scope.getWindowDimensions, function(newValue, oldValue) {
+        scope.windowHeight = newValue.h;
+        scope.windowWidth = newValue.w;
+        scope.style = function() {
+          return {
+            'height' : (newValue.h - 100) + 'px',
+            'width' : (newValue.w - 100) + 'px'
+          };
+        };
+      }, true);
 
-    if ($rootScope.globals == undefined){
-        $rootScope.globals = {};
+      w.bind('resize', function() { scope.$apply(); });
+    }
+  }
+]);
+
+app.run([
+  '$rootScope', '$cookieStore', '$state', 'AuthenticationService', '$http',
+  '$templateCache',
+  function($rootScope, $cookieStore, $state, AuthenticationService, $http,
+           $templateCache) {
+
+    if ($rootScope.globals == undefined) {
+      $rootScope.globals = {};
     }
 
-    
     // keep user logged in after page refresh
     AuthenticationService.RestoreCredientials();
 
@@ -90,7 +81,8 @@
         '$stateChangeStart',
         function(event, toState, toParams, fromState, fromParams, options) {
           // redirect to login page if not logged in
-          // unless we're already trying to go to the login page (prevent a loop)
+          // unless we're already trying to go to the login page (prevent a
+          // loop)
           if (!$rootScope.globals.currentUser && toState.name !== 'login') {
             // If logged out and transitioning to a logged in page:
             event.preventDefault();
@@ -101,108 +93,137 @@
   }
 ]);
 
-app.config(['$stateProvider', '$urlRouterProvider', 
-    function($stateProvider, $urlRouterProvider) {
+app.config([
+  '$stateProvider', '$urlRouterProvider',
+  function($stateProvider, $urlRouterProvider) {
 
-  $urlRouterProvider.otherwise('/systeminfo');
+    $urlRouterProvider.otherwise('/systeminfo');
 
-  $stateProvider
-      // nested list with just some random string data
-      .state('login', {
-        url: '/login',
-        templateUrl: 'static/partial-login.html',
-        controller: 'LoginController',
-      })
-      // systeminfo view ========================================
-      .state(
-          'systeminfo',
-          {url: '/systeminfo', templateUrl: 'static/partial-systeminfo.html'})
+    $stateProvider
+        .state('login', {
+          url : '/login',
+          templateUrl : 'static/partial-login.html',
+          controller : 'LoginController',
+        })
+        .state('systeminfo', {
+          url : '/systeminfo',
+          templateUrl : 'static/partial-systeminfo.html'
+        })
+        .state(
+            'eventlog',
+            {url : '/eventlog', templateUrl : 'static/partial-eventlog.html'})
 
+        .state('kvm', {url : '/kvm', templateUrl : 'static/partial-kvm.html'})
 
-      // HOME STATES AND NESTED VIEWS ========================================
-      .state(
-          'eventlog', {url: '/eventlog', templateUrl: 'static/partial-eventlog.html'})
+        .state('ipmi',
+               {url : '/ipmi', templateUrl : 'static/partial-ipmi.html'})
 
+        .state('sensor',
+               {url : '/sensor', templateUrl : 'static/partial-sensor.html'})
 
-      .state(
-          'kvm', {url: '/kvm', templateUrl: 'static/partial-kvm.html'})
+        .state(
+            'fwupdate',
+            {url : '/fwupdate', templateUrl : 'static/partial-fwupdate.html'})
+        // nested list with custom controller
+        .state('fwupdate.confirm', {
+          url : '/confirm',
+          templateUrl : 'static/partial-fwupdateconfirm.html',
+          modal: true
+        })
+        // ABOUT PAGE AND MULTIPLE NAMED VIEWS =================================
+        .state('about',
+               {url : '/about', templateUrl : 'static/partial-fruinfo.html'})
 
-      .state(
-          'ipmi', {url: '/ipmi', templateUrl: 'static/partial-ipmi.html'})
-
-      .state(
-          'sensor', {url: '/sensor', templateUrl: 'static/partial-sensor.html'})
-
-      // ABOUT PAGE AND MULTIPLE NAMED VIEWS =================================
-      .state('about', {url: '/about', templateUrl: 'static/partial-fruinfo.html'})
-
-      // nested list with custom controller
-      .state('about.list', {
-        url: '/list',
-        templateUrl: 'static/partial-home-list.html',
-        controller: function($scope) {
-          $scope.dogs = ['Bernese', 'Husky', 'Goldendoodle'];
-        }
-      })
-
-
-}]);
-
-app.controller('PaginationDemoCtrl', ['$scope', '$log', function($scope, $log) {
-  $scope.totalItems = 64;
-  $scope.currentPage = 4;
-
-  $scope.setPage = function(pageNo) { $scope.currentPage = pageNo; };
-
-  $scope.pageChanged = function() {
-    $log.log('Page changed to: ' + $scope.currentPage);
-  };
-
-  $scope.maxSize = 5;
-  $scope.bigTotalItems = 175;
-  $scope.bigCurrentPage = 1;
-}]);
-
-angular.module('Authentication').factory(
-        'AuthenticationService',
-        ['$cookieStore', '$rootScope', '$timeout', '$resource', '$log', '$http',
-          function($cookieStore, $rootScope, $timeout, $resource, $log, $http) {
-            var service = {};
-
-            service.Login = function(username, password, success_callback, fail_callback) {
-
-              var user = {"username": username, "password": password};
-              var UserLogin = $resource("/login");
-              var this_login = new UserLogin();
-              this_login.data = {"username": username, "password": password};
-              UserLogin.save(user, success_callback, fail_callback);
-              
-            };
-
-            service.SetCredentials = function(username, token) {
-              $rootScope.globals["currentUser"] = {username: username, authdata: token};
-              $http.defaults.headers.common['Authorization'] = 'Token ' + token;
-              $cookieStore.put('globals', $rootScope.globals);
-            };
-
-            service.ClearCredentials = function(reason) {
-              $rootScope.globals["currentUser"] = null;
-              if (reason !== null) {
-                service.logoutreason = reason;
-              }
-              $cookieStore.remove('globals');
-              $http.defaults.headers.common['Authorization'] = '';
-            };
-
-            service.RestoreCredientials = function() {
-              var globals = $cookieStore.get('globals') || {};
-              if (globals.currentUser) {
-                service.SetCredentials(
-                    globals.currentUser.username, globals.currentUser.authdata);
-              }
-            };
-
-            service.logoutreason = "";
-            return service;
+        // nested list with custom controller
+        .state('about.list', {
+          url : '/list',
+          templateUrl : 'static/partial-home-list.html',
+          controller : function($scope) {
+            $scope.dogs = [ 'Bernese', 'Husky', 'Goldendoodle' ];
           }
-        ]);
+        });
+
+  }
+]);
+
+app.directive('fileread', [ function() {
+                return {
+                  scope: {fileread : '='},
+                      link: function(scope, element, attributes) {
+                        element.bind('change', function(changeEvent) {
+                          scope.$apply(function() {
+                            scope.fileread = changeEvent.target.files[0];
+                            // or all selected files:
+                            // scope.fileread = changeEvent.target.files;
+                          });
+                        });
+                      }
+                }
+              } ]);
+
+app.controller('PaginationDemoCtrl', [
+  '$scope', '$log',
+  function($scope, $log) {
+    $scope.totalItems = 64;
+    $scope.currentPage = 4;
+
+    $scope.setPage = function(pageNo) { $scope.currentPage = pageNo; };
+
+    $scope.pageChanged = function() {
+      $log.log('Page changed to: ' + $scope.currentPage);
+    };
+
+    $scope.maxSize = 5;
+    $scope.bigTotalItems = 175;
+    $scope.bigCurrentPage = 1;
+  }
+]);
+
+angular.module('Authentication').factory('AuthenticationService', [
+  '$cookieStore', '$rootScope', '$timeout', '$log', '$http',
+  function($cookieStore, $rootScope, $timeout, $log, $http) {
+    var service = {};
+
+    service.Login = function(username, password) {
+      var user = {'username' : username, 'password' : password};
+      return $http.post('/login', user);
+    };
+
+    service.SetCredentials = function(username, token) {
+      $rootScope.globals['currentUser'] = {
+        username : username,
+        authdata : token
+      };
+      $http.defaults.headers.common['Authorization'] = 'Token ' + token;
+      $cookieStore.put('globals', $rootScope.globals);
+    };
+
+    service.ClearCredentials = function(reason) {
+      $rootScope.globals['currentUser'] = null;
+      if (reason !== null) {
+        service.logoutreason = reason;
+      }
+      $cookieStore.remove('globals');
+      $http.defaults.headers.common['Authorization'] = '';
+    };
+
+    service.RestoreCredientials = function() {
+      var globals = $cookieStore.get('globals') || {};
+      if (globals.currentUser) {
+        service.SetCredentials(globals.currentUser.username,
+                               globals.currentUser.authdata);
+      }
+    };
+
+    service.IsLoggedIn = function() {
+      if ($rootScope.globals['currentUser']){
+        return true;
+      } else {
+        return false;
+      }
+    };
+
+    service.logoutreason = '';
+    return service;
+  }
+]);