1. A non-transitory tangible computer readable medium comprising a program of instructions when executed by one or more processors, implements a method of managing protocols, said instructions comprise: a) agreeing upon at least one protocol specification including: i) sending at least one protocol proposal from a first communicating party to a second communicating party; ii) selecting said at least one protocol specification from said at least one protocol proposal at said second communicating party; and iii) notifying said first communicating party of said selection; b) identifying at least one component required to implement said at least one protocol specification; c) communicating between said parties at least by exchanging at least one of the following: i) at least one of said at least one component when said at least one of said at least one component is a missing component; and ii) at least one of said at least one protocol specification; and d) generating at least one machine executable code using: i) said at least one protocol specification; and ii) said at least one component.