Use a background worker to execute single steps to prevent the GUI locking up for long-running operations (#47)