diff --git a/src/index.ts b/src/index.ts
index e925e08..916730e 100644
--- a/src/index.ts
+++ b/src/index.ts
@@ -20,16 +20,11 @@
   interceptorConfig, userStatusInterceptor, CredentialsInterceptor,
   NoHyperlinksInterceptor
 } from './interceptors';
-import {IRuntimeStatesService} from './app/core/services/runtime-states';
-import {IModeldefsService, IModeldef} from './app/datasources/rest/modeldefs.rest';
 import {IXosCrudData} from './app/views/crud/crud';
-import * as _ from 'lodash';
-import {IXosNavigationService} from './app/core/services/navigation';
 import {IXosPageTitleService} from './app/core/services/page-title';
-import {IXosConfigHelpersService} from './app/core/services/helpers/config.helpers';
 import {StyleConfig} from './app/config/style.config';
-import {IXosResourceService} from './app/datasources/rest/model.rest';
 import {IXosAuthService} from './app/datasources/rest/auth.rest';
+import {IXosModelSetupService} from './app/core/services/helpers/model-setup.helpers';
 
 export interface IXosState extends angular.ui.IState {
   data: IXosCrudData;
@@ -62,15 +57,11 @@
     });
   })
   .run((
+    $transitions: any,
     $location: ng.ILocationService,
     $state: ng.ui.IStateService,
-    ModelDefs: IModeldefsService,
-    ModelRest: IXosResourceService,
-    RuntimeStates: IRuntimeStatesService,
-    NavigationService: IXosNavigationService,
-    ConfigHelpers: IXosConfigHelpersService,
+    ModelSetup: IXosModelSetupService,
     AuthService: IXosAuthService,
-    $transitions: any,
     toastr: ng.toastr.IToastrService,
     PageTitle: IXosPageTitleService
   ) => {
@@ -85,39 +76,14 @@
     // save the last visited state before reload
     const lastRoute = window.location.hash.replace('#', '');
 
-    // TODO this must be triggered only when user is authenticated
-    // Dinamically add a  core states
-    ModelDefs.get()
-      .then((models: IModeldef[]) => {
-        // TODO move in a separate service and test (StateConfig service in Core)
-        _.forEach(models, (m: IModeldef) => {
-          const stateUrl = `/${ConfigHelpers.pluralize(m.name.toLowerCase())}/:id?`;
-          const stateName = `xos.core.${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: ConfigHelpers.modelToTableCfg(m, stateUrl),
-              xosFormCfg: ConfigHelpers.modelToFormCfg(m)
-            }
-          };
-
-          RuntimeStates.addState(stateName, state);
-          NavigationService.add({
-            label: ConfigHelpers.pluralize(m.name),
-            state: stateName,
-            parent: 'xos.core'
-          });
+    // if the user is authenticated
+    if (AuthService.getUser()) {
+      ModelSetup.setup()
+        .then(() => {
+          // after setting up dynamic routes, redirect to previous state
+          $location.path(lastRoute);
         });
+    }
 
-        // after setting up dynamic routes, redirect to previous state
-        $location.path(lastRoute);
-      });
   });
 
