added abstract methods