Previous work has addressed the development of a framework to categorise and understand agent-based systems. It described and formalised an agent-hierarchy that included objects, agents and autonomous agents, each with different levels of functionality, and provided a precise vocabulary with which to discuss agent systems. This paper reviews a large variety of further work that has built on that foundation in several ways. First, the framework itself has been refined to detail important aspects of agent functionality such as goal generation and adoption. Second, the structures and relationships between agents have been specified and analysed allowing a more complete understanding of the dynamics of agent systems. Third, existing systems and theories have been formalised within the framework so that they may be evaluated and compared in a coherent and consistent way. Finally, some steps have been taken in attempting to construct a methodology for the development of agent-based system...