     
     // MARK: - Properties
     
+    /// Optional limit on the number of tasks that can run concurrently. Defaults to unlimited (0)
     public var maxConcurrentTasks: Int = 0
+    
+    /// Whether or not the production line is running / will execute tasks upon adding (and when ready, depending on maxConcurrentTasks)
     public private(set) var isRunning = false
     
     
     
     // MARK: - Private variables
     
+    /// Set of tasks that have yet to be asked to run
     private lazy var _pendingTasks = [Task]()
+    
+    /// Set of tasks that have been asked to run
     private lazy var _runningTasks = [Task]()
-    private let _internalQueue = DispatchQueue(label: "ProductionLinePipelineQueue")
+    
+    /// Queue providing serialization for state changing and other other thread sensitive things
+    private let _internalQueue = DispatchQueue(label: "ProductionLineInternal")
     
     
     
     // MARK: - Public methods
     
+    /// Add a task to the pipeline. If the pipeline is running then the task will be started asap, depending on maxConcurrentTasks
     public func addTask(_ task: Task) {
         _internalQueue.async {
             self._pendingTasks.append(task)

        }
    }
    
    public func addTasks(_ tasks: [Task]) {
        _internalQueue.async {
            self._pendingTasks.append(contentsOf: tasks)


/* Object that can execute a number of tasks simultaneously and continue to accept and queue new tasks over its lifetime.
 This is a bit like a ParallelTask except that it lets you keep adding tasks while it runs, and there is no dependency between the tasks. A ProductionLine doesn't care whether tasks succeed or fail (you can attach handlers for that yourself), and never 'finishes' for itself - it will run as long as it lives.
 Tasks are started in the order they're added. You can control the maximum number that can be started before others finish, via the maxConcurrentTasks property.
 NOTE: While Task and its subclasses will retain itself while running, ProductionLine will not.
 */
public final class ProductionLine: NSObject {
