Add Worker class and make model much more powerful