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

     */
    func complete(after: TimeInterval, isFinished: Bool) {
        guard isTransitioning else {
            fatalError()
        }
        
        if after <= 0.001 {

            return
        }
        
        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, let tp = transitionPairs {
            for (i, x) in a.enumerated() {
                let d = x.animate(fromViews: tp[i].0, toViews: tp[i].1)
                
