add proper javadocs