We could probably put these hooks inside of `transition()` (which would make it easy to add that callback argument)