add javadoc
add random shuffle