pull out parsing and negotiation into a Negotiator class