         
         totalDuration = t
         
-        if v {
+        if b {
             update(elapsedTime: 0)
         } else {
             complete(after: t, isFinished: true)

    /// Prepares the transition fromView & toView pairs.
    func prepareTransitionPairs() {
        guard isTransitioning else {
            fatalError()
        }
        
        transitionPairs = [([UIView], [UIView])]()
        
        guard let v = animators else {
            return
        }
        
        for a in v {
            let fv = context.fromViews.filter { (view: UIView) -> Bool in
                return a.canAnimate(view: view, isAppearing: false)
            }
            
            let tv = context.toViews.filter { (view: UIView) -> Bool in
                return a.canAnimate(view: view, isAppearing: true)
            }
            
            transitionPairs?.append((fv, tv))

internal extension MotionController {
    // should call this after `prepareTransitionPairs` & before `processContext`
    func insert<T>(preprocessor: MotionPreprocessor, before: T.Type) {
        guard var p = preprocessors else {
            return
        }
        
        let i = p.index { $0 is T } ?? p.count
        preprocessor.context = context
        p.insert(preprocessor, at: i)
    }
}
