refactored profile model