use subclass as inherited param, make inherited hook protected