added data abstract class