The issue is then how do you provide custom getters and setters based on a key? You have to initialize them some how, this gives you the same interface for keys which are just 'dumb' data and keys which have custom getters and setters.