whole negotiation definition should be using macros;
commit for history.