             return
         }
         
-        guard let tp = transitionPairs else {
-            return
-        }
-        
-        for x in tp {
-            for v in x.fromViews {
-                context.hide(view: v)
-            }
-            
-            for v in x.toViews {
-                context.hide(view: v)
+        if let tp = transitionPairs {
+            for x in tp {
+                for v in x.fromViews {
+                    context.hide(view: v)
+                }
+                
+                for v in x.toViews {
+                    context.hide(view: v)
+                }
             }
         }
         
         var t: TimeInterval = 0
         var b = false
         
-        if let a = animators {
+        if let a = animators, let tp = transitionPairs {
             for (i, x) in a.enumerated() {
                 let d = x.animate(fromViews: tp[i].0, toViews: tp[i].1)
                 

        }
        
        let v = (isFinished ? elapsedTime : 1 - elapsedTime) * totalDuration
        self.isFinished = isFinished
        self.currentAnimationDuration = after + v
        self.beginTime = CACurrentMediaTime() - v
    }
    
    /**

    */
    func complete(isFinished: Bool) {
        defer {
            animators?.forEach {
                $0.clean()
            }
