Do not directly expose Transition class; access via transition function instead due to side-effects on source