better button debounce logic