Simplified version of PscpTransfer class - Movied LoginDialog calls outside - Made calls synchronous...move async outside - Make pieces unit-testable - Work around issue in Process.StandardOuput/StandardError blocking on calls Alternate workaround...native process start w/correct stream reading behavior (e.g. peek doens't block) http://stackoverflow.com/questions/6655613/why-does-standardoutput-read-block-when-startinfo-redirectstandardinput-is-set