* changed visibility to protected to allow overriding methods