diff --git a/src/app/datasources/helpers/store.helpers.spec.ts b/src/app/datasources/helpers/store.helpers.spec.ts
index f0168b6..1793a7c 100644
--- a/src/app/datasources/helpers/store.helpers.spec.ts
+++ b/src/app/datasources/helpers/store.helpers.spec.ts
@@ -6,6 +6,7 @@
 import {BehaviorSubject} from 'rxjs';
 import {IWSEvent} from '../websocket/global';
 import {ConfigHelpers} from '../../core/services/helpers/config.helpers';
+import {AuthService} from '../rest/auth.rest';
 
 let service: IStoreHelpersService;
 let subject: BehaviorSubject<any>;
@@ -16,10 +17,11 @@
 
   beforeEach(() => {
     angular
-      .module('test', ['ngResource', 'toastr'])
+      .module('test', ['ngResource', 'toastr', 'ngCookies'])
       .service('ConfigHelpers', ConfigHelpers) // NOTE evaluate mock
       .service('ModelRest', ModelRest) // NOTE evaluate mock
-      .service('StoreHelpers', StoreHelpers);
+      .service('StoreHelpers', StoreHelpers)
+      .service('AuthService', AuthService);
 
     angular.mock.module('test');
   });
diff --git a/src/app/datasources/rest/model.rest.ts b/src/app/datasources/rest/model.rest.ts
index 51e41d3..8bd2c1f 100644
--- a/src/app/datasources/rest/model.rest.ts
+++ b/src/app/datasources/rest/model.rest.ts
@@ -6,7 +6,6 @@
 
 export class ModelRest implements IXosResourceService {
   static $inject = ['$resource'];
-  private resource: angular.resource.IResourceClass<any>;
 
   /** @ngInject */
   constructor(
@@ -16,6 +15,18 @@
   }
 
   public getResource(url: string): ng.resource.IResourceClass<ng.resource.IResource<any>> {
-    return this.resource = this.$resource(`${AppConfig.apiEndpoint}${url}/:id/`, {id: '@id'});
+    const resource: angular.resource.IResourceClass<any> = this.$resource(`${AppConfig.apiEndpoint}${url}/:id/`, {id: '@id'}, {
+      update: { method: 'PUT' }
+    });
+
+    resource.prototype.$save = function() {
+      if (this.id) {
+        return this.$update();
+      } else {
+        return resource.save(this).$promise;
+      }
+    };
+
+    return resource;
   }
 }
diff --git a/src/app/datasources/stores/model.store.spec.ts b/src/app/datasources/stores/model.store.spec.ts
index dd19c27..5bdc498 100644
--- a/src/app/datasources/stores/model.store.spec.ts
+++ b/src/app/datasources/stores/model.store.spec.ts
@@ -8,6 +8,7 @@
 import {ModelRest} from '../rest/model.rest';
 import {AppConfig} from '../../config/app.config';
 import {ConfigHelpers} from '../../core/services/helpers/config.helpers';
+import {AuthService} from '../rest/auth.rest';
 
 let service: IModelStoreService;
 let httpBackend: ng.IHttpBackendService;
@@ -37,12 +38,13 @@
 
   beforeEach(() => {
     angular
-      .module('ModelStore', ['ngResource', 'toastr'])
+      .module('ModelStore', ['ngResource', 'toastr', 'ngCookies'])
       .service('WebSocket', MockWs)
       .service('StoreHelpers', StoreHelpers) // TODO mock
       .service('ModelRest', ModelRest) // TODO mock
       .service('ModelStore', ModelStore)
-      .service('ConfigHelpers', ConfigHelpers); // TODO mock
+      .service('ConfigHelpers', ConfigHelpers) // TODO mock
+      .service('AuthService', AuthService);
 
     angular.mock.module('ModelStore');
   });
