 
 public class TaskQueue: CustomStringConvertible {
 
+    public init() {
+
+    }
+
     //
     // types used by the TaskQueue
     //
     public typealias ClosureNoResultNext = () -> Void
     public typealias ClosureWithResult = (AnyObject?) -> Void
     public typealias ClosureWithResultNext = (AnyObject? , AnyObject? -> Void) -> Void
-    
+
     //
     // tasks and completions storage
     //
     public var tasks: [ClosureWithResultNext] = []
     public lazy var completions: [ClosureNoResultNext] = []
-    
+
     //
     // concurrency
     //

            assert(maximumNumberOfActiveTasks>0, "Setting less than 1 task at a time not allowed")
        }
    }
    
    private var currentTask: ClosureWithResultNext? = nil
    private(set) var lastResult: AnyObject! = nil
    
    //
    // queue state
    //
    private(set) var running = false
    
    public var paused: Bool = false {
        didSet {
            running = !paused
        }
    }
    
    private var cancelled = false
    public func cancel() {
        cancelled = true
    }
    
    private var hasCompletions = false

    //

            executeTask()
        }
    }

    private func _complete() {
        paused = false
        running = false

        if hasCompletions {
            //synchronized remove completions
            objc_sync_enter(self)
