make AbstractDataMapper an interface