Or maybe even clever use of fsm.can() or fsm.cannot() would allow us to avoid hardcoding state machine guts here...