re-refactor worker