add abstract class and its derived class