Why didn't you put in inside `ShippingProcessor::updateShipmentStates`? It's weird that an external service must care about the units itself, imagine we forget it... I think this is responsibility of shippingProcessor. (the method `updateUnitStates` can stay public, so that when you really want to act on a unit basis, you still can).