diff --git a/src/app/datasources/index.ts b/src/app/datasources/index.ts
index 535937b..936920e 100644
--- a/src/app/datasources/index.ts
+++ b/src/app/datasources/index.ts
@@ -1,17 +1,18 @@
 import {CoreRest} from './rest/core.rest';
-import {SlicesRest} from './rest/slices.rest';
+import {ModelRest} from './rest/model.rest';
 import {AuthService} from './rest/auth.rest';
 import {WebSocketEvent} from './websocket/global';
-import {SliceStore} from './stores/slices.store';
+import {ModelStore} from './stores/model.store';
 import {StoreHelpers} from './helpers/store.helpers';
 import {SynchronizerStore} from './stores/synchronizer.store';
+import {ModeldefsService} from './rest/modeldefs.rest';
 
-export const xosRest = 'xosDataSources';
+export const xosDataSources = 'xosDataSources';
 
 angular
   .module('xosDataSources', ['ngCookies'])
   .service('CoreRest', CoreRest)
-  .service('SlicesRest', SlicesRest)
+  .service('ModelRest', ModelRest)
   .service('AuthService', AuthService)
   .service('WebSocket', WebSocketEvent);
 
@@ -19,4 +20,5 @@
   .module('xosDataSources')
   .service('StoreHelpers', StoreHelpers)
   .service('SynchronizerStore', SynchronizerStore)
-  .service('SlicesStore', SliceStore);
+  .service('ModelStore', ModelStore)
+  .service('ModelDefs', ModeldefsService);
diff --git a/src/app/datasources/rest/model.rest.ts b/src/app/datasources/rest/model.rest.ts
new file mode 100644
index 0000000..45431d4
--- /dev/null
+++ b/src/app/datasources/rest/model.rest.ts
@@ -0,0 +1,21 @@
+import {AppConfig} from '../../config/app.config';
+
+export interface IXosResourceService {
+  getResource(url: string): ng.resource.IResourceClass<any>;
+}
+
+export class ModelRest implements IXosResourceService {
+  static $inject = ['$resource'];
+  private resource: angular.resource.IResourceClass<any>;
+
+  /** @ngInject */
+  constructor(
+    private $resource: ng.resource.IResourceService
+  ) {
+
+  }
+
+  public getResource(url: string): ng.resource.IResourceClass<ng.resource.IResource<any>> {
+    return this.resource = this.$resource(`${AppConfig.apiEndpoint}${url}`);
+  }
+}
diff --git a/src/app/datasources/rest/modeldefs.rest.ts b/src/app/datasources/rest/modeldefs.rest.ts
new file mode 100644
index 0000000..d05aa6d
--- /dev/null
+++ b/src/app/datasources/rest/modeldefs.rest.ts
@@ -0,0 +1,36 @@
+import {AppConfig} from '../../config/app.config';
+
+interface IModeldefField {
+  name: string;
+  type: string;
+}
+
+export interface IModeldef {
+  fields: IModeldefField[];
+  relations: string[];
+  name: string;
+}
+
+export interface IModeldefsService {
+  get(): Promise<IModeldef[]>;
+}
+
+export class ModeldefsService {
+  constructor(
+    private $http: angular.IHttpService,
+    private $q: angular.IQService,
+  ) {
+  }
+
+  public get(): Promise<any> {
+    const d = this.$q.defer();
+    this.$http.get(`${AppConfig.apiEndpoint}/utility/modeldefs/`)
+      .then((res) => {
+        d.resolve(res.data);
+      })
+      .catch(e => {
+        d.reject(e);
+      });
+    return d.promise;
+  }
+}
diff --git a/src/app/datasources/rest/slices.rest.ts b/src/app/datasources/rest/slices.rest.ts
deleted file mode 100644
index a5b7e5c..0000000
--- a/src/app/datasources/rest/slices.rest.ts
+++ /dev/null
@@ -1,21 +0,0 @@
-import {AppConfig} from '../../config/app.config';
-
-export interface IXosResourceService {
-  getResource(): ng.resource.IResourceClass<any>;
-}
-
-export class SlicesRest implements IXosResourceService {
-  static $inject = ['$resource'];
-  private resource: angular.resource.IResourceClass<any>;
-
-  /** @ngInject */
-  constructor(
-    private $resource: ng.resource.IResourceService
-  ) {
-    this.resource = this.$resource(`${AppConfig.apiEndpoint}/core/slices/`);
-  }
-
-  public getResource(): ng.resource.IResourceClass<ng.resource.IResource<any>> {
-    return this.resource;
-  }
-}
diff --git a/src/app/datasources/stores/model.store.ts b/src/app/datasources/stores/model.store.ts
new file mode 100644
index 0000000..f31d571
--- /dev/null
+++ b/src/app/datasources/stores/model.store.ts
@@ -0,0 +1,44 @@
+/// <reference path="../../../../typings/index.d.ts"/>
+
+import {BehaviorSubject, Observable} from 'rxjs/Rx';
+import {IWSEvent, IWSEventService} from '../websocket/global';
+import {IXosResourceService} from '../rest/model.rest';
+import {IStoreHelpersService} from '../helpers/store.helpers';
+
+export interface  IModelStoreService {
+  query(model: string): Observable<any>;
+}
+
+export class ModelStore {
+  static $inject = ['WebSocket', 'StoreHelpers', 'ModelRest'];
+  private _slices: BehaviorSubject<any[]> = new BehaviorSubject([]);
+  constructor(
+    private webSocket: IWSEventService,
+    private storeHelpers: IStoreHelpersService,
+    private sliceService: IXosResourceService
+  ) {
+  }
+
+  query(model: string) {
+    this.loadInitialData(model);
+    this.webSocket.list()
+      .filter((e: IWSEvent) => e.model === model)
+      .subscribe(
+        (event: IWSEvent) => {
+          this.storeHelpers.updateCollection(event, this._slices);
+        }
+      );
+    return this._slices.asObservable();
+  }
+
+  private loadInitialData(model: string) {
+    const endpoint = `/core/${model.toLowerCase()}s/`;
+    this.sliceService.getResource(endpoint).query().$promise
+      .then(
+        res => {
+          this._slices.next(res);
+        },
+        err => console.log(`Error retrieving ${model}`, err)
+      );
+  }
+}
diff --git a/src/app/datasources/stores/slices.store.ts b/src/app/datasources/stores/slices.store.ts
deleted file mode 100644
index 9c3389f..0000000
--- a/src/app/datasources/stores/slices.store.ts
+++ /dev/null
@@ -1,43 +0,0 @@
-/// <reference path="../../../../typings/index.d.ts"/>
-
-import {BehaviorSubject, Observable} from 'rxjs/Rx';
-import {IWSEvent, IWSEventService} from '../websocket/global';
-import {IXosResourceService} from '../rest/slices.rest';
-import {IStoreHelpersService} from '../helpers/store.helpers';
-
-export interface  IStoreService {
-  query(): Observable<any>;
-}
-
-export class SliceStore {
-  static $inject = ['WebSocket', 'StoreHelpers', 'SlicesRest'];
-  private _slices: BehaviorSubject<any[]> = new BehaviorSubject([]);
-  constructor(
-    private webSocket: IWSEventService,
-    private storeHelpers: IStoreHelpersService,
-    private sliceService: IXosResourceService
-  ) {
-    this.loadInitialData();
-    this.webSocket.list()
-      .filter((e: IWSEvent) => e.model === 'Slice')
-      .subscribe(
-        (event: IWSEvent) => {
-          this.storeHelpers.updateCollection(event, this._slices);
-        }
-      );
-  }
-
-  query() {
-    return this._slices.asObservable();
-  }
-
-  private loadInitialData() {
-    this.sliceService.getResource().query().$promise
-      .then(
-        res => {
-          this._slices.next(res);
-        },
-        err => console.log('Error retrieving Slices', err)
-      );
-  }
-}
diff --git a/src/app/datasources/stores/synchronizer.store.ts b/src/app/datasources/stores/synchronizer.store.ts
index 598d23c..33a0c39 100644
--- a/src/app/datasources/stores/synchronizer.store.ts
+++ b/src/app/datasources/stores/synchronizer.store.ts
@@ -1,8 +1,12 @@
 /// <reference path="../../../../typings/index.d.ts"/>
 
-import {Subject} from 'rxjs/Rx';
+import {Subject, Observable} from 'rxjs/Rx';
 import {IWSEvent, IWSEventService} from '../websocket/global';
 
+export interface  IStoreService {
+  query(): Observable<any>;
+}
+
 export class SynchronizerStore {
   static $inject = ['WebSocket'];
   private _notifications: Subject<IWSEvent> = new Subject();
