         animateNext()
     }
     
-    override public func then(animations animations: [Animation]) -> Animation {
+    override func then(animations animations: [Animation]) -> Animation {
         animations.forEach { animation in
             animation.owner = self
             self.animations.append(animation)

        }
    }
        
    @objc override public var duration: NSTimeInterval {
        get {
            return self.animations.reduce(0.0, combine: { (c, animation) -> NSTimeInterval in
                return c + animation.delay + animation.duration


import Foundation

class AnimationChain: Animation {
    
    var animations: [Animation]
    private var commited: Bool = false
