run as worker