While I agree that it is good practice to keep some data unexported, do you think this is going too far? This just seems to complicate a fairly simple type. This is not a shared library after all, it's part of a complete application. I'm willing to live with it if you can give me a good reason for not just exporting everything.