refactored data classes