Keeping representation behind an API so state changes can preserve the object contract and its invariants.