TODO: Proper HTTP content negotiation