Add abstract class and model interface