Use public send to wrap player with role, and add respond_to_missing? to give proper respond_to? behavior.