http://stackoverflow.com/questions/4232843/class-design-question-how-to-provide-read-only-access-to-class-member-containe