refactoring + javadoc
LOL
merge