created abstract classes for data-handling