Зачем вы вынесли сюда общий параметр, чтобы потом в каждой реализации использовать его по-новой? Что-то не так.
И почему он protected? По-умолчанию, своим детям доверять нельзя, как бы жутко это не звучало.