Communication and Cooperation in Agent Systems