seperate task and worker classes