Refactor the abstract job