Why package-private? Feels like it should either be private (use setters/getters only), or protected given that things sub-class it. You can guess that I'd prefer private...