Added a bunch of JavaDoc