change to protected to enable subclassing