base data classes refactored