Well, the reason I'm doing this is to ensure that subclassing will work painlessly. A subclass will automatically inherrit the accessors for the class data, and some of my instance accessors are somewhat complex, and so I want to ensure that even the objects themselves retrieve data via the accessors rather than directly. If the accessor logic changes, then any method that does direct access may break. These classes are being written by a number of developers which is why I want to ensure that data can't be accessed directly, by accident or otherwise. :)