use ng-debounce instead of $timeout