         }
         
         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 {

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