diff --git a/src/app/core/services/helpers/config.helpers.ts b/src/app/core/services/helpers/config.helpers.ts
index a9d23f3..9b8d63c 100644
--- a/src/app/core/services/helpers/config.helpers.ts
+++ b/src/app/core/services/helpers/config.helpers.ts
@@ -9,7 +9,7 @@
 
 export interface IXosConfigHelpersService {
   excluded_fields: string[];
-  modeldefToTableCfg(fields: IXosModelDefsField[], baseUrl: string): any[]; // TODO use a proper interface
+  modeldefToColumnsCfg(fields: IXosModelDefsField[], baseUrl: string): any[]; // TODO use a proper interface
   pluralize(string: string, quantity?: number, count?: boolean): string;
   toLabel(string: string, pluralize?: boolean): string;
   toLabels(string: string[], pluralize?: boolean): string[];
@@ -64,9 +64,9 @@
     return this.capitalizeFirst(string);
   }
 
-  modeldefToTableCfg(fields: IXosModelDefsField[], baseUrl: string): IXosTableColumn[] {
+  modeldefToColumnsCfg(fields: IXosModelDefsField[], baseUrl: string): IXosTableColumn[] {
 
-    const cfg =  _.map(fields, (f) => {
+    const columns =  _.map(fields, (f) => {
       if (this.excluded_fields.indexOf(f.name) > -1) {
         return;
       }
@@ -99,7 +99,7 @@
     })
       .filter(v => angular.isDefined(v));
 
-    return cfg;
+    return columns;
   };
 
   private fromCamelCase(string: string): string {
diff --git a/src/app/datasources/stores/model.store.ts b/src/app/datasources/stores/model.store.ts
index 91cdf24..34e2951 100644
--- a/src/app/datasources/stores/model.store.ts
+++ b/src/app/datasources/stores/model.store.ts
@@ -23,7 +23,6 @@
   }
 
   query(model: string) {
-
     // if there isn't already an observable for that item
     if (!this._collections[model]) {
       this._collections[model] = new BehaviorSubject([]); // NOTE maybe this can be created when we get response from the resource
diff --git a/src/app/views/dashboard/dashboard.ts b/src/app/views/dashboard/dashboard.ts
index dc4fc1d..72d7f28 100644
--- a/src/app/views/dashboard/dashboard.ts
+++ b/src/app/views/dashboard/dashboard.ts
@@ -1,13 +1,14 @@
 import {IModelStoreService} from '../../datasources/stores/model.store';
 import {IXosAuthService} from '../../datasources/rest/auth.rest';
 class DashboardController {
-  static $inject = ['$state', 'ModelStore', 'AuthService'];
+  static $inject = ['$scope', '$state', 'ModelStore', 'AuthService'];
 
   public nodes: number;
   public slices: number;
   public instances: number;
 
   constructor(
+    private $scope: ng.IScope,
     private $state: ng.ui.IStateService,
     private store: IModelStoreService,
     private auth: IXosAuthService
@@ -17,12 +18,24 @@
       this.$state.go('login');
     }
     else {
-      this.store.query('node')
-        .subscribe((event) => this.nodes = event.length);
-      this.store.query('slice')
-        .subscribe((event) => this.slices = event.length);
-      this.store.query('instance')
-        .subscribe((event) => this.instances = event.length);
+      this.store.query('Node')
+        .subscribe((event) => {
+          this.$scope.$evalAsync(() => {
+            this.nodes = event.length;
+          });
+        });
+      this.store.query('Instance')
+        .subscribe((event) => {
+          this.$scope.$evalAsync(() => {
+            this.instances = event.length;
+          });
+        });
+      this.store.query('Slice')
+        .subscribe((event) => {
+          this.$scope.$evalAsync(() => {
+            this.slices = event.length;
+          });
+        });
       this.instances = 0;
       this.nodes = 0;
       this.slices = 0;
diff --git a/src/index.ts b/src/index.ts
index 07cdead..0760b26 100644
--- a/src/index.ts
+++ b/src/index.ts
@@ -93,7 +93,7 @@
               model: m.name,
               related: m.relations,
               xosTableCfg: {
-                columns: ConfigHelpers.modeldefToTableCfg(m.fields, stateUrl),
+                columns: ConfigHelpers.modeldefToColumnsCfg(m.fields, stateUrl),
                 filter: 'fulltext',
                 order: {field: 'id', reverse: false}, // TODO understand dynamic interfaces
                 actions: [
@@ -134,8 +134,5 @@
 
         // after setting up dynamic routes, redirect to previous state
         $location.path(lastRoute);
-        // $state.get().forEach(s => {
-        //   console.log(s.name, $state.href(s.name), s);
-        // });
       });
   });
