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

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


import Foundation

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