The current design has setter-like methods (without the JavaBeans `set` method name prefix). Should we use Builders instead? Main advantages: * retain the possibility of making these classes immutable * ensure the object is in a valid state (fully initialized) by doing any validating or defaulting in the `build` method