added content negotiation