diff --git a/views/ngXosViews/subscriberPortal/src/app/fw/services/rest.js b/views/ngXosViews/subscriberPortal/src/app/fw/services/rest.js
index 9e6596e..314be5f 100644
--- a/views/ngXosViews/subscriberPortal/src/app/fw/services/rest.js
+++ b/views/ngXosViews/subscriberPortal/src/app/fw/services/rest.js
@@ -35,13 +35,49 @@
   .service('Subscribers', function($resource, cordConfig){
     return $resource(cordConfig.url + '/xoslib/rs/subscriber');
   })
-  .service('SubscriberUsers', function($resource, cordConfig){
+  .service('SubscriberUsers', function($resource, $filter, cordConfig, Helpers){
     // TODO define an interceptor as res.users should be resources
     // NOTE SubscriberId should ne retrieved from login information
     return $resource(cordConfig.url + '/xoslib/rs/subscriber/:subscriberId/users/:id', {}, {
       query: {
         method: 'GET',
-        isArray: false
+        isArray: false,
+        interceptor: {
+          response: function(res){
+            // this is used to fake some data that are not XOS related,
+            // but can be provided by any external services
+
+            // add an icon to the user
+            res.data.users.map(function(user){
+              console.log(user)
+              switch (user.name){
+                case 'Mom\'s PC':
+                  user['icon_id'] = 'mom';
+                  break
+                case 'Jack\'s Laptop':
+                  user['icon_id'] = 'boy2';
+                  break
+                case 'Jill\'s Laptop':
+                  user['icon_id'] = 'girl1';
+                  break
+                case 'Dad\'s PC':
+                  user['icon_id'] = 'dad';
+                  break
+              }
+
+              return user;
+            });
+
+            // add a random login date to the user
+            res.data.users.forEach(function(user){
+              if(!angular.isDefined(cordConfig.userActivity[user.id])){
+                var date = Helpers.randomDate(new Date(2015, 0, 1), new Date());
+                cordConfig.userActivity[user.id] = $filter('date')(date, 'mediumTime');
+              }
+            });
+            return res.data;
+          }
+        }
       }
     });
     //return $resource(cordConfig.url + '/xoslib/corduser/:id')
diff --git a/views/ngXosViews/subscriberPortal/src/app/view/bundle/bundle.js b/views/ngXosViews/subscriberPortal/src/app/view/bundle/bundle.js
index 60dea84..054c703 100644
--- a/views/ngXosViews/subscriberPortal/src/app/view/bundle/bundle.js
+++ b/views/ngXosViews/subscriberPortal/src/app/view/bundle/bundle.js
@@ -15,64 +15,59 @@
  */
 
 (function () {
-    'use strict';
+  'use strict';
 
-    var urlSuffix = '/rs/bundle';
+  var urlSuffix = '/rs/bundle';
 
-    var basic = 'basic',
-        family = 'family';
+  var basic = 'basic',
+    family = 'family';
 
-    angular.module('cordBundle', [])
-        .controller('CordBundleCtrl', ['$log', '$scope', '$resource',
-            function ($log, $scope, $resource) {
-                var BundleData, resource,
-                    getData;
-                $scope.page.curr = 'bundle';
-                $scope.show = false;
+  angular.module('cordBundle', [])
+    .controller('CordBundleCtrl', function ($log, $scope, $resource, cordConfig) {
+      var BundleData, resource,
+        getData;
+      $scope.page.curr = 'bundle';
+      $scope.show = false;
 
-                getData = function (id) {
-                    if (!id) { id = ''; }
+      // set the current bundle
+      $scope.name = cordConfig.bundles[cordConfig.activeBundle].name;
+      $scope.desc = cordConfig.bundles[cordConfig.activeBundle].desc;
+      $scope.funcs = cordConfig.bundles[cordConfig.activeBundle].functions;
 
-                    BundleData = $resource($scope.shared.url + urlSuffix + '/' + id);
-                    resource = BundleData.get({},
-                        // success
-                        function () {
-                            var current, availId;
-                            current = resource.bundle.id;
-                            $scope.name = resource.bundle.name;
-                            $scope.desc = resource.bundle.desc;
-                            $scope.funcs = resource.bundle.functions;
+      // set the available bundle
+      if(cordConfig.activeBundle === 0) {
+        $scope.available = cordConfig.bundles[1];
+      }
+      else{
+        $scope.available = cordConfig.bundles[0];
+      }
 
-                            availId = (current === basic) ? family : basic;
-                            resource.bundles.forEach(function (bundle) {
-                                if (bundle.id === availId) {
-                                    // NOTE available should be an array
-                                    $scope.available = bundle;
-                                }
-                            });
-                        },
-                        // error
-                        function () {
-                            $log.error('Problem with resource', resource);
-                        });
-                };
+      // switching the bundles
+      $scope.changeBundle = function (id) {
+        if(cordConfig.activeBundle === 0){
+          cordConfig.activeBundle = 1;
+          $scope.available = cordConfig.bundles[0];
+        }
+        else{
+          cordConfig.activeBundle = 0;
+          $scope.available = cordConfig.bundles[1];
+        }
+        $scope.name = cordConfig.bundles[cordConfig.activeBundle].name;
+        $scope.desc = cordConfig.bundles[cordConfig.activeBundle].desc;
+        $scope.funcs = cordConfig.bundles[cordConfig.activeBundle].functions;
+      };
 
-                getData();
+      // hiding and showing bundles
+      $scope.showBundles = function () {
+        $scope.show = !$scope.show;
+      };
 
-                $scope.changeBundle = function (id) {
-                    getData(id);
-                };
+      $log.debug('Cord Bundle Ctrl has been created.');
+    })
 
-                $scope.showBundles = function () {
-                    $scope.show = !$scope.show;
-                };
-
-                $log.debug('Cord Bundle Ctrl has been created.');
-            }])
-
-        .directive('bundleAvailable', [function () {
-            return {
-                templateUrl: 'app/view/bundle/available.html'
-            };
-        }]);
+    .directive('bundleAvailable', [function () {
+      return {
+        templateUrl: 'app/view/bundle/available.html'
+      };
+    }]);
 }());
diff --git a/views/ngXosViews/subscriberPortal/src/app/view/home/home.js b/views/ngXosViews/subscriberPortal/src/app/view/home/home.js
index 60c3a94..454972c 100644
--- a/views/ngXosViews/subscriberPortal/src/app/view/home/home.js
+++ b/views/ngXosViews/subscriberPortal/src/app/view/home/home.js
@@ -19,12 +19,6 @@
 
   var urlSuffix = '/rs/dashboard';
 
-  function randomDate(start, end) {
-    return new Date(
-      start.getTime() + Math.random() * (end.getTime() - start.getTime())
-    );
-  }
-
   angular.module('cordHome', [])
     .controller('CordHomeCtrl', [
       '$log', '$scope', '$resource', '$filter', 'cordConfig', 'SubscriberUsers', 'Helpers',
@@ -35,24 +29,8 @@
         // NOTE subscriberId should be retrieved by login
         SubscriberUsers.query({subscriberId: 1}).$promise
         .then(function(res){
-          $scope.bundle_name = cordConfig.bundles[0].name;
-          $scope.bundle_desc = cordConfig.bundles[0].desc;
-
-          // NOTE the loops creates data that are not available in xos should we move them in a service? Should we define a small backend to store this infos?
-
-          // add an icon to the user
-          res.users.map(function(user){
-            user['icon_id'] = 'mom';
-            return user;
-          });
-
-          // add a random login date to the user
-          res.users.forEach(function(user){
-            if(!angular.isDefined(cordConfig.userActivity[user.id])){
-              var date = randomDate(new Date(2015, 0, 1), new Date());
-              cordConfig.userActivity[user.id] = $filter('date')(date, 'mediumTime');
-            }
-          });
+          $scope.bundle_name = cordConfig.bundles[cordConfig.activeBundle].name;
+          $scope.bundle_desc = cordConfig.bundles[cordConfig.activeBundle].desc;
           $scope.users = res.users;
         })
         .catch(function(){
diff --git a/views/ngXosViews/subscriberPortal/src/app/view/user/user.js b/views/ngXosViews/subscriberPortal/src/app/view/user/user.js
index f7450cb..bc75afd 100644
--- a/views/ngXosViews/subscriberPortal/src/app/view/user/user.js
+++ b/views/ngXosViews/subscriberPortal/src/app/view/user/user.js
@@ -22,16 +22,10 @@
     family = 'family',
     url_filter = 'url_filter';
 
-  function randomDate(start, end) {
-    return new Date(
-      start.getTime() + Math.random() * (end.getTime() - start.getTime())
-    );
-  }
-
   angular.module('cordUser', [])
     .controller('CordUserCtrl', ['$log', '$scope', '$resource', '$timeout', '$filter', 'SubscriberUsers', 'cordConfig',
       function ($log, $scope, $resource, $timeout, $filter, SubscriberUsers, cordConfig) {
-        var BundleData, bundleResource;
+
         $scope.page.curr = 'user';
         $scope.isFamily = false;
         $scope.newLevels = {};
@@ -43,35 +37,20 @@
         // NOTE subscriberId should be retrieved by login
         SubscriberUsers.query({subscriberId: 1}).$promise
           .then(function(res){
-            $scope.isFamily = cordConfig.bundles[0].id === 'family';
+            $scope.isFamily = cordConfig.bundles[cordConfig.activeBundle].id === 'family';
             // if bundle is family search for url_filter level
             if ($scope.isFamily) {
-              angular.forEach(cordConfig.bundles[0].functions, function(fn){
+              angular.forEach(cordConfig.bundles[cordConfig.activeBundle].functions, function(fn){
                 if(fn.id === 'url_filter'){
                   $scope.levels = fn.params.levels;
                 }
               });
             }
 
-            // NOTE the loops creates data that are not available in xos should we move them in a service? Should we define a small backend to store this infos?
-
-            // add an icon to the user
-            res.users.map(function(user){
-              user['icon_id'] = 'mom';
-              return user;
-            });
-
-            // add a random login date to the user
-            res.users.forEach(function(user){
-              if(!angular.isDefined(cordConfig.userActivity[user.id])){
-                var date = randomDate(new Date(2015, 0, 1), new Date());
-                cordConfig.userActivity[user.id] = $filter('date')(date, 'mediumTime');
-              }
-            });
             $scope.users = res.users;
           })
           .catch(function () {
-            $log.error('Problem with resource', bundleResource);
+            $log.error('Problem with resource', SubscriberUsers);
           });
 
         $scope.updateLevel = function(user){
diff --git a/views/ngXosViews/subscriberPortal/src/cord.js b/views/ngXosViews/subscriberPortal/src/cord.js
index f646be0..5406bd2 100644
--- a/views/ngXosViews/subscriberPortal/src/cord.js
+++ b/views/ngXosViews/subscriberPortal/src/cord.js
@@ -70,6 +70,7 @@
     .constant('cordConfig', {
       url: '',
       userActivity: {}, //check if really needed
+      activeBundle: 0,
       bundles: [
         {
           "id": "family",
