refactored to protected access for subclass