Changed content negotiation to prefer extension over query string and accept header.