two possibilities for how this can happen:

-   The agents send messages directly to one another. This implies they have knowledge on how to contact each other (the protocol, address, etc). A received message should then be interpreted as a percept and afterwards sent to the *Jason* engine.\

-   The agents send messages to the *Jason* representations of each another. This only implies knowledge on the name of the agent to contact. The *Jason* engine would then be responsible for everything regarding sending and receiving messages.

The obvious advantage of using the second approach is that no new functionality needs to be implemented. The agents are able to send messages using the available internal actions in *Jason*. In that case, it is already a part of the AgentSpeak language and the agents will readily be able to react to the communication.

Synchronous vs. asynchronous approach
-------------------------------------

One thing to keep in mind is the fact that a noticeable amount of delay is going to arise, since the agents will have to wait for the engine to send actions, while the engine will have to wait for the agents to send percepts – the entire process is synchronous. This means that 