refactored customer model