I don't like the nested internal classes. I'd prefer having all the internal classes here in a separate package.