separate state from transitioner