Added even more javadoc and exceptions