add javadoc
add test