refactor Data classes, extract DataCore