now with debouncing