Moved content negotiation to controller