 
 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(isAnimating) internal(set) var animating: Bool = false
+    @objc(isComplete) internal(set) var complete: Bool = false
+    @objc(isFinished) internal(set) var finished: Bool = true
+    @objc internal(set) var duration: NSTimeInterval = 0.0
     @objc var delay: NSTimeInterval = 0.0
     
     weak var delegate: AnimationDelegate?

        self.performSelector(Selector("commitAnimation"), withObject: nil, afterDelay: 0.0)
    }
    
    func postponeAnimation() {
        ongoingAnimations.remove(self)
        NSObject.cancelPreviousPerformRequestsWithTarget(
            self,
            selector: Selector("commitAnimation"),
            object: nil
        )
    }
    
    func commitAnimation() {}


protocol DelegatedAnimation: Animation {
    weak var delegate: AnimationDelegate? { get set }
}

protocol PropertyAnimation: DelegatedAnimation {
