Some refactoring to changes classes, interfaces, and methods to better r...

...epresentations of what is actually happening in the code.  Also add a few more Javadoc descriptions.