This seems a little clunky.  I think the data dependencies would be clearer if we could extract the entire Work object into a new class.