Multi-agent Distributed Systems