changed method to abstract