add doc strings and make sub-classes private