using protected unless there's a good reason to use private