         state = .Executing
     }
     
-    internal override func cancel() {
+    public override func cancel() {
         state = .Finished
     }
 }


import Foundation

class AbstractOperation: NSOperation {
    enum State: String {
        case Ready, Executing, Finished
        
        private var keyPath: String {

        }
    }
    
    public var state = State.Ready {
        willSet {
            willChangeValueForKey(newValue.keyPath)
            willChangeValueForKey(state.keyPath)
