value object
- wraps primitive objects and other VOs
- enriches ubiquitous language
- equality is based on value, not identity
- validated, immutable and disposable
- ie passing string could pass the airport name instead of the gate name, but the type
GateName
wouldn't compile