Update with protected methods and some javadoc