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

    }
    
    @discardableResult
    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 {

    /// - Parameters:
    ///   - error: error if any, will continue to the catch and finally closures
    ///   - result: result (optional) passed to the next then or finally closures
    public func done(result: Any? = nil, error: Error? = nil) {
        
        //if error
        if let error = error {
