diff --git a/xos/core/xoslib/static/js/xosContentProvider.js b/xos/core/xoslib/static/js/xosContentProvider.js
index 0baadbb..ff5bfe3 100644
--- a/xos/core/xoslib/static/js/xosContentProvider.js
+++ b/xos/core/xoslib/static/js/xosContentProvider.js
@@ -54,7 +54,7 @@
     }
   };
 })
-.service('ContentProvider', function($resource) {
+.service('ContentProvider', function($resource, $q, User) {
   return $resource('/hpcapi/contentproviders/:id/', {id: '@id'}, {
     'update': {method: 'PUT'}
   });
@@ -326,7 +326,7 @@
     }
   };
 })
-.directive('contentProviderUsers', function($routeParams, ContentProvider, User, lodash) {
+.directive('contentProviderUsers', function($routeParams, ContentProvider, User, lodash, $q) {
   return{
     restrict: 'E',
     controllerAs: 'vm',
@@ -339,7 +339,20 @@
       this.cp_users = [];
 
       if($routeParams.id) {
-        ContentProvider.get({id: $routeParams.id}).$promise
+        User.query().$promise
+        .then(function(users) {
+          _this.users = users;
+          return ContentProvider.get({id: $routeParams.id}).$promise;
+        })
+        .then(function(res) {
+          for(var i = 0; i < res.users.length; i++) {
+            var url = res.users[i];
+            var id = parseInt(url.substr(url.length - 2).replace('/',''));
+
+            res.users[i] = lodash.find(_this.users, {id: id});
+          }
+          return res;
+        })
         .then(function(cp) {
           _this.cp = cp;
         }).catch(function(e) {
@@ -350,22 +363,30 @@
         });
       }
 
-      User.query().$promise
-      .then(function(users) {
-        _this.users = users;
-      }).catch(function(e) {
-        _this.result = {
-          status: 0,
-          msg: e.data.detail
-        };
-      });
-
       this.addUserToCp = function(user) {
-        _this.cp_users.push(user);
+        _this.cp.users.push(user);
       };
 
       this.removeUserFromCp = function(user) {
-        lodash.remove(_this.cp_users, user);
+        lodash.remove(_this.cp.users, user);
+      };
+
+      this.saveContentProvider = function(cp) {
+
+        cp.$update()
+        .then(function() {
+          _this.result = {
+            status: 1,
+            msg: 'Content Provider Saved'
+          };
+
+        })
+        .catch(function(e) {
+          _this.result = {
+            status: 0,
+            msg: e.data.detail
+          };
+        });
       };
     }
   };
diff --git a/xos/core/xoslib/static/templates/contentProvider/cp_user.html b/xos/core/xoslib/static/templates/contentProvider/cp_user.html
index e53dadf..0d08984 100644
--- a/xos/core/xoslib/static/templates/contentProvider/cp_user.html
+++ b/xos/core/xoslib/static/templates/contentProvider/cp_user.html
@@ -14,7 +14,6 @@
   <div class="span10">
     <div ng-repeat="item in vm.cp.users" class="well">
       <div class="row-fluid">
-        {{item}}
         <div class="span3">
           {{item.firstname}}
         </div>
@@ -32,8 +31,17 @@
       </div>
     </div>
     <hr>
-    <form>
-      <select ng-model="vm.user" ng-options="u as u.username for u in vm.users" ng-change="vm.addUserToCp(vm.user)"></select>
+    <form ng-submit="vm.saveContentProvider(vm.cp)">
+      <div class="row-fluid">
+        <div class="span8">
+          <select ng-model="vm.user" ng-options="u as u.username for u in vm.users" ng-change="vm.addUserToCp(vm.user)"></select>
+        </div>  
+        <div class="span4 text-right">
+          <button class="btn btn-success" disabled="disabled">
+            Save
+          </button>
+        </div>
+      </div>
     </form>
   </div>
 </div>
\ No newline at end of file
