implement Transition class