 
 protocol DelegatedAnimation: Animation {
     weak var delegate: AnimationDelegate? { get set }
-    func beginAnimation()
-    func postponeAnimation()
 }
 
 protocol PropertyAnimation: DelegatedAnimation {


class ConcreteAnimation: NSObject, DelegatedAnimation {
    
    @objc(isAnimating) var animating: Bool = false
    @objc(isComplete) var complete: Bool = false
    @objc(isFinished) var finished: Bool = true
    @objc var duration: NSTimeInterval = 0.0
    @objc var delay: NSTimeInterval = 0.0
    
    weak var delegate: AnimationDelegate?

    var duration:NSTimeInterval { get }
    var delay:NSTimeInterval { get }
    func then(duration duration: NSTimeInterval, delay: NSTimeInterval, curve: Curve?, animation: Void -> Void, completion: ((finished: Bool) -> Void)?) -> Animation
    func beginAnimation()
    func postponeAnimation() -> Animation
}

protocol AnimationDelegate: class {
