refactor Transition