Added a ton more javadoc