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

//
// Add a task closure with result and next params
//
func += (inout tasks: [TaskQueue.ClosureWithResultNext], task: TaskQueue.ClosureWithResultNext) {
    tasks += [task]
}

//
// Add a task closure that doesn't take result/next params
//
func += (inout tasks: [TaskQueue.ClosureWithResultNext], task: TaskQueue.ClosureNoResultNext) {
    tasks += [{
        _, next in
        task()

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