Fix content preference
Refactor negotiation