add a much nicer debounce