Missing method from interface.
Added Util::negotiate and a bunch of tests.