created AbstractProcessingJob and renamed some components for clarity