Redone to use JobListeners and JobDataMaps. 
Fixed all known bugs.