             guard _block == nil else { return }
             _block = newValue
             if cancelled && _executing {
-                changeExecuting(false)
+                executing = false
             }
             else if let block = newValue where _executing {
                 block(done)
             }
         }
     }
+
     private var _executing: Bool = false
     override public var executing: Bool {
-        return _executing
+        get { return _executing }
+        set {
+            willChangeValueForKey("isExecuting")
+            _executing = newValue
+            didChangeValueForKey("isExecuting")
+        }
     }
+
     private var _finished: Bool = false
     override public var finished: Bool {
-        return _finished
+        get { return _finished }
+        set {
+            willChangeValueForKey("isFinished")
+            _finished = newValue
+            didChangeValueForKey("isFinished")
+        }
     }
+
     override public var asynchronous: Bool { return true }
 
     public init(block: AsyncBlock? = nil) {

            return
        }

        changeExecuting(true)
        block?(done)
    }


    }

    override public func start() {
        guard !finished else {
            return
        }
        guard !cancelled else {
