replaced $dataClass with abstract getDataClass() to ease inheritance development