Programming Multi-Agent Systems by