     }
 
     deinit {
-        // print("deinit \(self)")
+        print("deinit \(self)")
     }
 }

        }
        // Observator Process termination, observer is removed when Process terminates
        self.notifications_termination = NotificationCenter.default.addObserver(forName: Process.didTerminateNotification,
                                object: nil, queue: nil) {  _ in
                self.delayWithSeconds(0.5) {
                    self.termination = true
                    self.updateDelegate?.processTermination()
                    // Must remove for deallocation
                    // print("deallocation")
                    NotificationCenter.default.removeObserver(self.notifications_datahandle as Any)
                    NotificationCenter.default.removeObserver(self.notifications_termination as Any)
                }

        let outHandle = pipe.fileHandleForReading
        outHandle.waitForDataInBackgroundAndNotify()
        // Observator for reading data from pipe, observer is removed when Process terminates
        self.notifications_datahandle = NotificationCenter.default.addObserver(forName: NSNotification.Name.NSFileHandleDataAvailable,
                                object: nil, queue: nil) { [weak self] _ in
            let data = outHandle.availableData
            if data.count > 0 {
                if let str = NSString(data: data, encoding: String.Encoding.utf8.rawValue) {
