abstract class and other