moving to full callbacks, no state machine