
Rather than require that the client implement two methods for every state, simply have one global request, change_state, and one global event, request_change_state.
Rather than require that the client implement two methods for every state, simply have one global request, change_state, and one global event, request_change_state.