refactored service model