implement all transitions