Organizational Principles for Multi-Agent Architectures