Please add some javadoc explaining the purpose of the class