use defer instead of promise here to allow progress stuff
progress callback implementation
clone will now not timeout
kill spawned processes recursively