diff --git a/views/ngXosViews/contentProvider/src/js/main.js b/views/ngXosViews/contentProvider/src/js/main.js
index 6448679..efb46bc 100644
--- a/views/ngXosViews/contentProvider/src/js/main.js
+++ b/views/ngXosViews/contentProvider/src/js/main.js
@@ -3,12 +3,10 @@
 angular.module('xos.contentProvider', [
   'ngResource',
   'ngCookies',
-  'ngLodash',
   'xos.helpers',
-  'ui.router',
-  'xos.xos'
+  'ui.router'
 ])
-.config(($stateProvider, $urlRouterProvider) => {
+.config(($stateProvider) => {
 
   $stateProvider
   .state('list', {
@@ -73,7 +71,7 @@
     }
   };
 })
-.directive('contentProviderList', function(ContentProvider, lodash){
+.directive('contentProviderList', function(ContentProvider, _){
   return {
     restrict: 'E',
     controllerAs: 'vm',
@@ -112,7 +110,7 @@
       this.deleteCp = function(id){
         ContentProvider.delete({id: id}).$promise
         .then(function(){
-          lodash.remove(self.contentProviderList, {id: id});
+          _.remove(self.contentProviderList, {id: id});
         });
       };
     }
@@ -179,7 +177,7 @@
     }
   };
 })
-.directive('contentProviderCdn', function($stateParams, CdnPrefix, ContentProvider, lodash){
+.directive('contentProviderCdn', function($stateParams, CdnPrefix, ContentProvider, _){
   return{
     restrict: 'E',
     controllerAs: 'vm',
@@ -206,7 +204,7 @@
       .then(function(prf){
         self.prf = prf;
         // set the active CdnPrefix for this contentProvider
-        self.cp_prf = lodash.where(prf, {contentProvider: parseInt($stateParams.id)});
+        self.cp_prf = _.where(prf, {contentProvider: parseInt($stateParams.id)});
       }).catch(function(e){
         self.result = {
           status: 0,
@@ -234,7 +232,7 @@
       this.removePrefix = function(item){
         item.$delete()
         .then(function(){
-          lodash.remove(self.cp_prf, item);
+          _.remove(self.cp_prf, item);
         })
         .catch(function(e){
           self.result = {
@@ -246,7 +244,7 @@
     }
   };
 })
-.directive('contentProviderServer', function($stateParams, OriginServer, ContentProvider, lodash){
+.directive('contentProviderServer', function($stateParams, OriginServer, ContentProvider, _){
   return{
     restrict: 'E',
     controllerAs: 'vm',
@@ -300,7 +298,7 @@
       this.removeOrigin = function(item){
         item.$delete()
         .then(function(){
-          lodash.remove(self.cp_os, item);
+          _.remove(self.cp_os, item);
         })
         .catch(function(e){
           self.result = {
@@ -312,7 +310,7 @@
     }
   };
 })
-.directive('contentProviderUsers', function($stateParams, ContentProvider, User, lodash){
+.directive('contentProviderUsers', function($stateParams, ContentProvider, User, _){
   return{
     restrict: 'E',
     controllerAs: 'vm',
@@ -347,7 +345,7 @@
 
       this.populateUser = function(ids, list){
         for(var i = 0; i < ids.length; i++){
-          ids[i] = lodash.find(list, {id: ids[i]});
+          ids[i] = _.find(list, {id: ids[i]});
         }
         return ids;
       };
@@ -357,13 +355,13 @@
       };
 
       this.removeUserFromCp = function(user){
-        lodash.remove(self.cp.users, user);
+        _.remove(self.cp.users, user);
       };
 
       this.saveContentProvider = function(cp){
 
         // flatten the user to id of array
-        cp.users = lodash.pluck(cp.users, 'id');
+        cp.users = _.pluck(cp.users, 'id');
 
         cp.$update()
         .then(function(res){
