Teh visibility should be private by default. We increase it to protected only when we want to provide an extension point as it implies a BC concern for child classes.
this applies to all classes added in the PR