Changed to using worker model, also added a threadsafe progress tracker