changed from single pulser to debouncer + fsm