implement Worker