+1 I'd also like to see WorkerOffer remain more like an immutable message type, with derived,  mutable structures created only locally within the implementations that need it.