refactory worker