refactorrr
support for custom transition funcs