Added UML diagram. Please add to it as you expand the code!