     class func keyPathsForValuesAffectingIsFinished() -> Set<NSObject> {
         return ["state"]
     }
-        
+    
+    class func keyPathsForValuesAffectingIsCancelled() -> Set<NSObject> {
+        return ["cancelledState"]
+    }
+    
     // MARK: State Management
     
     private enum State: Int, Comparable {

    override public var finished: Bool {
        return state == .Finished
    }
    
    private func evaluateConditions() {
        assert(state == .Pending && !cancelled, "evaluateConditions() was called out-of-order")

        case .Pending:
            // If the operation has been cancelled, "isReady" should return true
            guard !cancelled else {
                state = .Ready
                return true
            }
            
