More work on BaseModule.run(), move execution step stuff into do_work() method.