         }
     }
 
-    /// - returns: a Bool indicating whether or not the quality of service is .UserInitiated
+    /**
+     Modifies the quality of service of the underlying operation.
+
+     - requires: self must not have started yet. i.e. either hasn't been added
+     to a queue, or is waiting on dependencies.
+
+     - returns: a Bool indicating whether or not the quality of service is .UserInitiated
+    */
     public var userInitiated: Bool {
         get {
             return qualityOfService == .UserInitiated
         }
         set {
-            assert(state < .Executing, "Cannot modify userInitiated after execution has begun.")
+            precondition(state < .Executing, "Cannot modify userInitiated after execution has begun.")
             qualityOfService = newValue ? .UserInitiated : .Default
         }
     }

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


    /**
    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) {
        precondition(state < .Executing, "Cannot modify conditions after execution has begun, current state: \(state).")
        conditions.append(condition)
    }

