please add some comments to protected methods because they are part of the API