The Architecture of Co-operating Intelligent Agents