diff --git a/views/ngXosViews/subscriberPortal/.gitignore b/views/ngXosViews/subscriberPortal/.gitignore
index e69de29..ca08d4d 100644
--- a/views/ngXosViews/subscriberPortal/.gitignore
+++ b/views/ngXosViews/subscriberPortal/.gitignore
@@ -0,0 +1,2 @@
+npm-debug.log
+src/bower_components
diff --git a/views/ngXosViews/subscriberPortal/bs-config.js b/views/ngXosViews/subscriberPortal/bs-config.js
index 70f476a..3418583 100644
--- a/views/ngXosViews/subscriberPortal/bs-config.js
+++ b/views/ngXosViews/subscriberPortal/bs-config.js
@@ -17,47 +17,47 @@
 var environment = process.env.NODE_ENV;
 
 if (environment){
-    var conf = require(`./env/${environment}.js`);
+  var conf = require(`./env/${environment}.js`);
 }
 else{
-    var conf = require('./env/default.js')
+  var conf = require('./env/default.js')
 }
 
 var proxy = httpProxy.createProxyServer({
-    target: conf.host || 'http://0.0.0.0:9999'
+  target: conf.host || 'http://0.0.0.0:9999'
 });
 
 proxy.on('error', function(error, req, res) {
-    res.writeHead(500, {
-        'Content-Type': 'text/plain'
-    });
-    console.error('[Proxy]', error);
+  res.writeHead(500, {
+    'Content-Type': 'text/plain'
+  });
+  console.error('[Proxy]', error);
 });
 
 module.exports = {
-    "files": [
-        './src/**/*'
-    ],
-    "server": {
-        baseDir: './src',
-        middleware: function(req, res, next){
-            if(
-              req.url.indexOf('/xos/') !== -1 ||
-              req.url.indexOf('/xoslib/') !== -1 ||
-              req.url.indexOf('/hpcapi/') !== -1 ||
-              req.url.indexOf('/rs/') !== -1
-            ){
-                if(conf.xoscsrftoken && conf.xossessionid){
-                    req.headers.cookie = `xoscsrftoken=${conf.xoscsrftoken}; xossessionid=${conf.xossessionid}`;
-                    req.headers['x-csrftoken'] = conf.xoscsrftoken;
-                }
-                proxy.web(req, res);
-            }
-            else{
-                next();
-            }
+  "files": [
+    './src/**/*'
+  ],
+  "server": {
+    baseDir: './src',
+    middleware: function(req, res, next){
+      if(
+        req.url.indexOf('/xos/') !== -1 ||
+        req.url.indexOf('/xoslib/') !== -1 ||
+        req.url.indexOf('/hpcapi/') !== -1 ||
+        req.url.indexOf('/rs/') !== -1
+      ){
+        if(conf.xoscsrftoken && conf.xossessionid){
+          req.headers.cookie = `xoscsrftoken=${conf.xoscsrftoken}; xossessionid=${conf.xossessionid}`;
+          req.headers['x-csrftoken'] = conf.xoscsrftoken;
         }
-    },
-    "port": 3000,
-    "open": "local"
+        proxy.web(req, res);
+      }
+      else{
+        next();
+      }
+    }
+  },
+  "port": 3000,
+  "open": "local"
 };
\ No newline at end of file
diff --git a/views/ngXosViews/subscriberPortal/src/cord.js b/views/ngXosViews/subscriberPortal/src/cord.js
index 16bf3cd..e183466 100644
--- a/views/ngXosViews/subscriberPortal/src/cord.js
+++ b/views/ngXosViews/subscriberPortal/src/cord.js
@@ -15,68 +15,70 @@
  */
 
 (function () {
-    'use strict';
+  'use strict';
 
-    var modules = [
-            'ngRoute',
-            'ngResource',
-            'ngAnimate',
-            'cordMast',
-            'cordFoot',
-            'cordNav'
-        ],
-        viewIds = [
-            'login',
-            'home',
-            'user',
-            'bundle'
-        ],
-        viewDependencies = [],
-        dependencies;
+  var modules = [
+      'ngRoute',
+      'ngResource',
+      'ngAnimate',
+      'cordMast',
+      'cordFoot',
+      'cordNav',
+      'cordLogin',
+      'cordHome',
+      'cordUser',
+      'cordBundle'
+    ],
+    viewIds = [
+    ],
+    viewDependencies = [],
+    dependencies;
 
-    function capitalize(word) {
-        return word ? word[0].toUpperCase() + word.slice(1) : word;
+  function capitalize(word) {
+    return word ? word[0].toUpperCase() + word.slice(1) : word;
+  }
+
+  viewIds.forEach(function (id) {
+    if (id) {
+      viewDependencies.push('cord' + capitalize(id));
     }
+  });
 
-    viewIds.forEach(function (id) {
-        if (id) {
-            viewDependencies.push('cord' + capitalize(id));
-        }
-    });
+  dependencies = modules.concat(viewDependencies);
 
-    dependencies = modules.concat(viewDependencies);
-
-    angular.module('cordGui', dependencies)
-        .config(['$routeProvider', function ($routeProvider) {
-            $routeProvider
-                .otherwise({
-                    redirectTo: '/login'
-                });
-
-            function viewCtrlName(vid) {
-                return 'Cord' + capitalize(vid) + 'Ctrl';
-            }
-
-            function viewTemplateUrl(vid) {
-                return 'app/view/' + vid + '/' + vid + '.html';
-            }
-
-            viewIds.forEach(function (vid) {
-                if (vid) {
-                    $routeProvider.when('/' + vid, {
-                        controller: viewCtrlName(vid),
-                        controllerAs: 'ctrl',
-                        templateUrl: viewTemplateUrl(vid)
-                    });
-                }
-            });
-        }])
-        .controller('CordCtrl', ['$scope', '$location',
-            function ($scope, $location) {
-                $scope.shared = {
-                    url: 'http://' + $location.host() + ':' + $location.port(),
-                    userActivity: {}
-                };
-                $scope.page = {};
-            }]);
+  angular.module('cordGui', dependencies)
+    .config(['$routeProvider', function ($routeProvider) {
+      $routeProvider
+        .when('/login', {
+          controller: 'CordLoginCtrl',
+          controllerAs: 'ctrl',
+          templateUrl: 'app/view/login/login.html'
+        })
+        .when('/home', {
+          controller: 'CordHomeCtrl',
+          controllerAs: 'ctrl',
+          templateUrl: 'app/view/home/home.html'
+        })
+        .when('/user', {
+          controller: 'CordUserCtrl',
+          controllerAs: 'ctrl',
+          templateUrl: 'app/view/user/user.html'
+        })
+        .when('/bundle', {
+          controller: 'CordBundleCtrl',
+          controllerAs: 'ctrl',
+          templateUrl: 'app/view/bundle/bundle.html'
+        })
+        .otherwise({
+          redirectTo: '/login'
+        });
+    }])
+    .controller('CordCtrl', ['$scope', '$location',
+      function ($scope, $location) {
+        $scope.shared = {
+          url: 'http://' + $location.host() + ':' + $location.port(),
+          userActivity: {}
+        };
+        $scope.page = {};
+      }]);
 }());
