Abstract. Multi-agent systems are a natural way of decomposing complex systems into more manageable and decentralized units. Nevertheless, as single agents can represent complex subsystems themselves, software engineering principles for the design and implementation of coherent parts of single agents are necessary for producing modular and reusable software artifacts. This paper picks up the formerly proposed capability concept for structuring BDI agents in functional clusters, and generalizes and extends it to support a higher degree of reusability. The resulting mechanism allows for designing and implementing BDI agents as a composition of configurable agent modules (capabilities). It is based on a black-box approach with export interfaces that is in line with objectoriented engineering principles.