coalescing jobs code is cleverer - supports jobs being run out of order