Now Job is its own opaque object, updated functions to always use a whole Job as argument, instead of a separate id etc