don't manually unroll the state machine :)