debounce & throttle methods instead wait
push