changing to abstract class