Agents and Multi-Agent Systems