make more methods protected for easier subclassing