diff --git a/views/ngXosLib/xosHelpers/spec/csrftoken.test.js b/views/ngXosLib/xosHelpers/spec/csrftoken.test.js
new file mode 100644
index 0000000..6a74040
--- /dev/null
+++ b/views/ngXosLib/xosHelpers/spec/csrftoken.test.js
@@ -0,0 +1,20 @@
+'use strict';
+
+describe('The xos.helper module', () => {
+  
+  var app, httpProvider;
+
+  beforeEach(module('xos.helpers'));
+  beforeEach(function(){
+    module(function($httpProvider){
+      httpProvider = $httpProvider;
+    });
+  });
+
+
+
+  it('should set SetCSRFToken interceptor', inject(($http) => {
+    expect(httpProvider.interceptors).toContain('SetCSRFToken');
+  }));
+
+});
\ No newline at end of file
diff --git a/views/ngXosLib/xosHelpers/src/services/api.services.js b/views/ngXosLib/xosHelpers/src/services/api.services.js
new file mode 100644
index 0000000..c7384f8
--- /dev/null
+++ b/views/ngXosLib/xosHelpers/src/services/api.services.js
@@ -0,0 +1,32 @@
+(function() {
+  'use strict';
+
+    angular
+        .module('xos.helpers')
+        .service('XosApi', xosApi)
+        .service('XoslibApi', xoslibApi)
+        .service('HpcApi', hpcApi);
+
+    var xosApiCache, xoslibApiCache, hpcApiCache;
+
+    function xosApi(xos) { 
+      if(!xosApiCache){
+        xosApiCache = new xos({domain: ''});
+      }
+      return xosApiCache;
+    }
+
+    function xoslibApi(xoslib) { 
+      if(!xoslibApiCache){
+        xoslibApiCache = new xoslib({domain: ''});
+      }
+      return xoslibApiCache;
+    }
+
+    function hpcApi(hpcapi) { 
+      if(!hpcApiCache){
+        hpcApiCache = new hpcapi({domain: ''});
+      }
+      return hpcApiCache;
+    }
+})();
diff --git a/views/ngXosLib/xosHelpers/src/services/csrfToken.interceptor.js b/views/ngXosLib/xosHelpers/src/services/csrfToken.interceptor.js
new file mode 100644
index 0000000..283e90d
--- /dev/null
+++ b/views/ngXosLib/xosHelpers/src/services/csrfToken.interceptor.js
@@ -0,0 +1,18 @@
+(function() {
+    'use strict';
+
+    angular
+        .module('xos.helpers')
+        .factory('SetCSRFToken', setCSRFToken);
+
+    function setCSRFToken($cookies) {
+      return {
+        request: function(request){
+          if(request.method !== 'GET'){
+            request.headers['X-CSRFToken'] = $cookies.get('xoscsrftoken');
+          }
+          return request;
+        }
+      };
+    }
+})();
diff --git a/views/ngXosLib/xosHelpers/src/services/noHyperlinks.interceptor.js b/views/ngXosLib/xosHelpers/src/services/noHyperlinks.interceptor.js
new file mode 100644
index 0000000..6059f99
--- /dev/null
+++ b/views/ngXosLib/xosHelpers/src/services/noHyperlinks.interceptor.js
@@ -0,0 +1,18 @@
+(function() {
+    'use strict';
+
+    angular
+        .module('xos.helpers')
+        .factory('NoHyperlinks', noHyperlinks);
+
+    function noHyperlinks() { 
+      return {
+        request: function(request){
+          if(request.url.indexOf('.html') === -1){
+            request.url += '?no_hyperlinks=1';
+          }
+          return request;
+        }
+      };
+    }
+})();
\ No newline at end of file
diff --git a/views/ngXosLib/xosHelpers/src/xosHelpers.module.js b/views/ngXosLib/xosHelpers/src/xosHelpers.module.js
new file mode 100644
index 0000000..1f73be1
--- /dev/null
+++ b/views/ngXosLib/xosHelpers/src/xosHelpers.module.js
@@ -0,0 +1,22 @@
+(function() {
+    'use strict';
+
+    angular
+        .module('xos.helpers',[
+          'ngCookies',
+          'xos.xos',
+          'xos.hpcapi',
+          'xos.xoslib'
+        ])
+        .config(config);
+
+    function config($httpProvider, $interpolateProvider, $resourceProvider) { 
+      $httpProvider.interceptors.push('SetCSRFToken');
+
+      $interpolateProvider.startSymbol('{$');
+      $interpolateProvider.endSymbol('$}');
+
+      // NOTE http://www.masnun.com/2013/09/18/django-rest-framework-angularjs-resource-trailing-slash-problem.html
+      $resourceProvider.defaults.stripTrailingSlashes = false;
+    }
+})();
\ No newline at end of file
