introduce error collection in the form
implement an toArray method
move state transition into item
refactor so that transition handler execute the transition by itself and not pass it to the workflow