Agents are viewed as the next significant software abstraction, and it is expected they will become as ubiquitous as graphical user interfaces are today. Multi-agent systems have a key capability to reallocate tasks among their members, and this may result in significant savings and improvements in many domains, such as resource allocation, scheduling, e-commerce, etc. In the near future, agents will roam the Internet, selling and buying information and services. These agents will evolve from their present-day form—simple carriers of transactions—to efficient decision makers. It is envisaged that the decision-making processes and interactions between agents will be very fast (Kephart, 1998). The importance of automated negotiation systems is increasing with the emergence of new technologies supporting faster reasoning engines and mobile code. A central part of agent systems is a sophisticated reasoning engine that enables the agents to reallocate their tasks, optimize outcomes, and negotiate with other agents. The negotiation strategy used by the reasoning engine also requires high-level interagent communication protocols and suitable collaboration strategies. Both of these subsystems—a reasoning engine and a collaboration strategy—typically result in complicated agent designs and implementations that are difficult to maintain.