Dynamic programming

Do not access the internal state directly. Tell me which accessors you need and then do it through them.