~ refactored