Refactored player