     }
     
     @discardableResult
-    static func this(name: String? = nil, on queue: DispatchQueue = .main, do this: @escaping ThisClosure) -> Do {
+    public static func this(name: String? = nil, on queue: DispatchQueue = .main, do this: @escaping ThisClosure) -> Do {
         
         let first = Do(name: name, on: queue, index: 0, do: this)
         queue.async {

        }
    }
    
    func then(name: String? = nil, on queue: DispatchQueue? = nil, do this: @escaping ThisClosure) -> Do {
        
        guard self.catchThis == nil else {
            fatalError("Can't call next() after catch()")

    
    public typealias ThisClosure = ((Do) -> Void)
    
    public private(set) var name: String?
    public private(set) var index: Int
    private var onQueue: DispatchQueue = .main
    private var doThis: ThisClosure
    
    public private(set) var error: Error?
    public private(set) var previousResult: Any?
    private var next: Do?

    private var catchThis: ThisClosure?
