Mainly adding documentation.  Also changed object hierarchy