added abstract method