         } else {
             arguments = self.configurations!.arguments4rsync(index: index, argtype: .argdryRun)
         }
-        let estimate = ProcessCmd(command: nil, arguments: arguments)
-        estimate.setupdateDelegate(object: self)
+        let estimate = RsyncProcessCmdClosure(arguments: arguments,
+                                              config: nil,
+                                              processtermination: self.processtermination,
+                                              filehandler: self.filehandler)
         estimate.executeProcess(outputprocess: self.outputprocess)
     }
 

        globalMainQueue.async { () -> Void in
            let infotask = RemoteinfonumbersOnetask(outputprocess: outputprocess)
            if local {
                self.localtotalNumber.stringValue = infotask.totalNumber!
                self.localtotalNumberSizebytes.stringValue = infotask.totalNumberSizebytes!
                self.localtotalDirs.stringValue = infotask.totalDirs!
            } else {
                self.transferredNumber.stringValue = infotask.transferredNumber!
                self.transferredNumberSizebytes.stringValue = infotask.transferredNumberSizebytes!
                self.totalNumber.stringValue = infotask.totalNumber!
                self.totalNumberSizebytes.stringValue = infotask.totalNumberSizebytes!
                self.totalDirs.stringValue = infotask.totalDirs!
                self.newfiles.stringValue = infotask.newfiles!
                self.deletefiles.stringValue = infotask.deletefiles!
                self.working.stopAnimation(nil)
                self.gotit.stringValue = ""
            }

    }
}

extension ViewControllerVerify {
    func processtermination() {
        ViewControllerReference.shared.process = nil
        if self.gotremoteinfo == false {
            if self.complete == false {
