add javadoc and todo