Rename classes to better reflect usage and also add javadocs