Add javadocs to methods that user may override and make the others final