add AbstractDataset class