refactor some class and package
update javadoc