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