     //
     private(set) var running = false
     
-    var paused: Bool = false {
+    public var paused: Bool = false {
         didSet {
             running = !paused
         }
     }
     
     private var cancelled = false
-    func cancel() {
+    public func cancel() {
         cancelled = true
     }
     

    //
    // remove all remaining tasks
    //
    func removeAll() {
        tasks.removeAll(keepCapacity: false)
    }
    
    //
    // count of the tasks left to execute
    //
    var count: Int {
        return tasks.count
    }
    
    //
    // re-run the current task
    //
    func retry(delay: Double = 0) {
        assert(maximumNumberOfActiveTasks==1, "You can call retry() only on serial queues")
        
        tasks.insert(currentTask!, atIndex: 0)

//
// The task gets executed on the main queue - update UI, etc.
//
public func +=! (inout tasks: [TaskQueue.ClosureWithResultNext], task: TaskQueue.ClosureWithResultNext) {
    tasks += [{
        result, next in
        dispatch_async(dispatch_get_main_queue(), {
