please add javadoc on class level to explain the purpose of the class