added protected and abstract methods and classes