please use the private visibility. We use private everywhere as long as we don't have a use case for extension. this way, we are free to refactor them without any BC concern (protected properties should be subject to BC as they are extension points for child classes you don't control)