added some documentation to explain my reasons for using so called 'zero-calorie' child-classes