finished worker implementation