lots of javadocs/comments