 // Add a task closure that doesn't take result/next params
 // The task gets executed on the main queue - update UI, etc.
 //
-func +=! (inout tasks: [TaskQueue.ClosureWithResultNext], task: TaskQueue.ClosureNoResultNext) {
+public func +=! (inout tasks: [TaskQueue.ClosureWithResultNext], task: TaskQueue.ClosureNoResultNext) {
     tasks += [{
         _, next in
         dispatch_async(dispatch_get_main_queue(), {

    //
    // skip the next task
    //
    func skip() {
        if tasks.count>0 {
            _ = tasks.removeAtIndex(0) //better way?
        }

// Add a task closure that doesn't take result/next params
// The task gets executed on a low prio queueu
//
public func +=~ (inout tasks: [TaskQueue.ClosureWithResultNext], task: TaskQueue.ClosureNoResultNext) {
    tasks += [{
        _, next in
        dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_LOW, 0), {
