move debounce, throttle, isFunction to separate module