add more explanation and javadoc