use IO.popen instead of open3.popen3
use pm for detailed update messages
move reload to a seperate command
move raise StepError to invoke_command