Can it be `protected`, and move parameters to constructor?