     /**
     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)
     }
 

    already started executing. Therefore, best practice is to add dependencies before adding them to operation
    queues.
    
    - parameter operation: a `NSOperation` instance.
    */
    public override func addDependency(operation: NSOperation) {
        assert(state <= .Executing, "Dependencies cannot be modified after execution has begun, current state: \(state).")        
        super.addDependency(operation)
    }


        return state == .Finished
    }

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