diff --git a/src/app/core/index.ts b/src/app/core/index.ts
index 53dfade..2df80c8 100644
--- a/src/app/core/index.ts
+++ b/src/app/core/index.ts
@@ -15,6 +15,7 @@
 import 'angular-toastr';
 import {xosAlert} from './alert/alert';
 import {xosValidation} from './validation/validation';
+import {ModelSetup} from './services/helpers/model-setup.helpers';
 
 export const xosCore = 'xosCore';
 
@@ -30,6 +31,7 @@
   .service('PageTitle', PageTitle)
   .service('XosFormHelpers', XosFormHelpers)
   .service('ConfigHelpers', ConfigHelpers)
+  .service('ModelSetup', ModelSetup)
   .directive('xosLinkWrapper', xosLinkWrapper)
   .component('xosHeader', xosHeader)
   .component('xosFooter', xosFooter)
diff --git a/src/app/core/login/login.ts b/src/app/core/login/login.ts
index 334ad08..c091e43 100644
--- a/src/app/core/login/login.ts
+++ b/src/app/core/login/login.ts
@@ -1,15 +1,17 @@
 import {AuthService} from '../../datasources/rest/auth.rest';
 import {StyleConfig} from '../../config/style.config';
 import './login.scss';
+import {IXosModelSetupService} from '../services/helpers/model-setup.helpers';
 
 class LoginCtrl {
-  static $inject = ['AuthService', '$state'];
+  static $inject = ['AuthService', '$state', 'ModelSetup'];
   public loginStyle: any;
   public img: string;
   /** @ngInject */
   constructor(
     private authService: AuthService,
-    private $state: angular.ui.IStateService
+    private $state: angular.ui.IStateService,
+    private ModelSetup: IXosModelSetupService
   ) {
     this.img = this.getImg(StyleConfig.background);
 
@@ -24,6 +26,10 @@
       password: password
     })
       .then(res => {
+        // after login set up models
+        return this.ModelSetup.setup();
+      })
+      .then(() => {
         this.$state.go('xos.dashboard');
       })
       .catch(e => console.error);
diff --git a/src/app/core/services/helpers/model-setup.helpers.ts b/src/app/core/services/helpers/model-setup.helpers.ts
new file mode 100644
index 0000000..6a276d9
--- /dev/null
+++ b/src/app/core/services/helpers/model-setup.helpers.ts
@@ -0,0 +1,62 @@
+import {ModeldefsService, IModeldef} from '../../../datasources/rest/modeldefs.rest';
+import {IXosConfigHelpersService} from './config.helpers';
+import {IRuntimeStatesService} from '../runtime-states';
+import {NavigationService} from '../navigation';
+import {IXosState} from '../../../../index';
+import * as _ from 'lodash';
+import IPromise = angular.IPromise;
+
+export interface IXosModelSetupService {
+  setup(): IPromise<null>;
+}
+
+export class ModelSetup {
+  static $inject = ['$q', 'ModelDefs', 'ConfigHelpers', 'RuntimeStates', 'NavigationService'];
+
+  constructor(
+    private $q: ng.IQService,
+    private ModelDefs: ModeldefsService,
+    private ConfigHelpers: IXosConfigHelpersService,
+    private RuntimeStates: IRuntimeStatesService,
+    private NavigationService: NavigationService
+  ) {
+
+  }
+
+  public setup(): IPromise<null> {
+    const d = this.$q.defer();
+    this.ModelDefs.get()
+      .then((models: IModeldef[]) => {
+        _.forEach(models, (m: IModeldef) => {
+          const stateUrl = `/${this.ConfigHelpers.pluralize(m.name.toLowerCase())}/:id?`;
+          const stateName = `xos.core.${this.ConfigHelpers.pluralize(m.name.toLowerCase())}`;
+          const state: IXosState = {
+            parent: 'core',
+            url: stateUrl,
+            component: 'xosCrud',
+            params: {
+              id: null
+            },
+            data: {
+              model: m.name,
+              related: m.relations,
+              xosTableCfg: this.ConfigHelpers.modelToTableCfg(m, stateUrl),
+              xosFormCfg: this.ConfigHelpers.modelToFormCfg(m)
+            }
+          };
+
+          this.RuntimeStates.addState(stateName, state);
+          this.NavigationService.add({
+            label: this.ConfigHelpers.pluralize(m.name),
+            state: stateName,
+            parent: 'xos.core'
+          });
+        });
+
+        d.resolve();
+      })
+      .catch(d.reject);
+
+    return d.promise;
+  }
+}
