add debounce/throttle methods