introduce a context class
move error collection to the context
add params
pass context to State::transit
use context params
implement an input util
implement permission condition for transitions
ongoing development
add notification center