refactored job model