     ///
     /// - Parameters:
     ///   - closure: The closure to be called on finish. Takes the array of all imported records mapped to as its argument.
-    open func onFinish(_ closure: @escaping (_ importedRecords: [T]) -> Void) {
+    public func onFinish(_ closure: @escaping (_ importedRecords: [T]) -> Void) {
         self.finishClosure = closure
     }
 

    /// - Parameters:
    ///   - mapper: A closure to map the data received in a line to your data structure.
    /// - Returns: `self` to enable consecutive method calls (e.g. `importer.startImportingRecords {...}.onProgress {...}`).
    open func startImportingRecords(mapper closure: @escaping (_ recordValues: [String]) -> T) -> Self {
        DispatchQueue.global(qos: DispatchQoS.QoSClass.userInitiated).async {
            var importedRecords: [T] = []


    /// - Parameters:
    ///   - closure: The closure to be called on progress. Takes the current count of imported lines as argument.
    /// - Returns: `self` to enable consecutive method calls (e.g. `importer.startImportingRecords {...}.onProgress {...}`).
    public func onProgress(_ closure: @escaping (_ importedDataLinesCount: Int) -> Void) -> Self {
        self.progressClosure = closure
        return self
    }
