Refactor jobs to use abstract base class