     /**
     Add a condition to the to the operation, can only be done prior to the operation starting.
 
+    - requires: self must not have started yet. i.e. either hasn't been added 
+    to a queue, or is waiting on dependencies.
     - parameter condition: type conforming to protocol `OperationCondition`.
     */
     public func addCondition(condition: OperationCondition) {
-        assert(state < .Executing, "Cannot modify conditions after execution has begun, current state: \(state).")
+        precondition(state < .Executing, "Cannot modify conditions after execution has begun, current state: \(state).")
         conditions.append(condition)
     }
 

    /**
    Add an observer to the to the operation, can only be done prior to the operation starting.

    - parameter observer: type conforming to protocol `OperationObserver`.
    */
    public func addObserver(observer: OperationObserverType) {
        assert(state < .Executing, "Cannot modify observers after execution has begun, current state: \(state).")
        observers.append(observer)
    }


        return state == .Finished
    }

    /// Boolean indicator for whether the Operation has cancelled or not
    public override var cancelled: Bool {
        return _cancelled
    }
