refactored data -> model