with javadocs