Added javadoc to explain the various components.