support abstract class detection