refactored the Job module