diff --git a/src/app/datasources/helpers/search.service.ts b/src/app/datasources/helpers/search.service.ts
index 8cee4d1..fd038a2 100644
--- a/src/app/datasources/helpers/search.service.ts
+++ b/src/app/datasources/helpers/search.service.ts
@@ -41,12 +41,11 @@
         return list;
       }, []);
       this.states = _.uniqBy(this.states, 'state');
-      this.$log.debug(`[XosSearchService] Views Loaded: `, this.states);
     });
   }
 
   public search(query: string): IXosSearchResult[] {
-    this.$log.info(`[XosSearchService] Searching for: ${query}`);
+    this.$log.debug(`[XosSearchService] Searching for: ${query}`);
     const routes: IXosSearchResult[] = _.filter(this.states, s => {
       return s.label.toLowerCase().indexOf(query) > -1;
     }).map(r => {
diff --git a/src/app/datasources/stores/model.store.spec.ts b/src/app/datasources/stores/model.store.spec.ts
index 533a53d..b114de4 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 {ConfigHelpers} from '../../core/services/helpers/config.helpers';
 import {AuthService} from '../rest/auth.rest';
+import {XosDebouncer} from '../../core/services/helpers/debounce.helper';
 
 let service: IXosModelStoreService;
 let httpBackend: ng.IHttpBackendService;
@@ -49,7 +50,8 @@
       .service('XosModelStore', XosModelStore)
       .service('ConfigHelpers', ConfigHelpers) // TODO mock
       .service('AuthService', AuthService)
-      .constant('AppConfig', MockAppCfg);
+      .constant('AppConfig', MockAppCfg)
+      .service('XosDebouncer', XosDebouncer);
 
     angular.mock.module('ModelStore');
   });
diff --git a/src/app/datasources/stores/model.store.ts b/src/app/datasources/stores/model.store.ts
index 79b7231..ab2f3d2 100644
--- a/src/app/datasources/stores/model.store.ts
+++ b/src/app/datasources/stores/model.store.ts
@@ -4,6 +4,7 @@
 import {IWSEvent, IWSEventService} from '../websocket/global';
 import {IXosResourceService} from '../rest/model.rest';
 import {IStoreHelpersService} from '../helpers/store.helpers';
+import {IXosDebouncer} from '../../core/services/helpers/debounce.helper';
 
 export interface  IXosModelStoreService {
   query(model: string, apiUrl?: string): Observable<any>;
@@ -11,15 +12,18 @@
 }
 
 export class XosModelStore implements IXosModelStoreService {
-  static $inject = ['$log', 'WebSocket', 'StoreHelpers', 'ModelRest'];
+  static $inject = ['$log', 'WebSocket', 'StoreHelpers', 'ModelRest', 'XosDebouncer'];
   private _collections: any; // NOTE contains a map of {model: BehaviourSubject}
+  private efficientNext: any; // NOTE debounce next
   constructor(
     private $log: ng.ILogService,
     private webSocket: IWSEventService,
     private storeHelpers: IStoreHelpersService,
     private ModelRest: IXosResourceService,
+    private XosDebouncer: IXosDebouncer
   ) {
     this._collections = {};
+    this.efficientNext = this.XosDebouncer.debounce(this.next, 500, false);
   }
 
   public query(modelName: string, apiUrl: string): Observable<any> {
@@ -31,7 +35,7 @@
     }
     // else manually trigger the next with the last know value to trigger the subscribe method of who's requestiong this data
     else {
-      this._collections[modelName].next(this._collections[modelName].value);
+      this.efficientNext(this._collections[modelName]);
     }
 
     this.webSocket.list()
@@ -80,6 +84,10 @@
     // TODO implement a get method
   }
 
+  private next(subject: BehaviorSubject<any>): void {
+    subject.next(subject.value);
+  }
+
   private loadInitialData(model: string, apiUrl?: string) {
     // TODO provide always the apiUrl togheter with the query() params
     if (!angular.isDefined(apiUrl)) {
