Aspect-oriented programming (AOP) controls tangling of concerns by isolating aspects that cross-cut each other into building blocks. Component-based programming (CBP) supports software development by isolating reusable building blocks that can be assembled and connected in many different ways. We show how AOP and CBP can be integrated by introducing a new component construct for programming class collaborations, called aspectual component. Aspectual components extend adaptive plug-and-play components (AP&P) with a modification interface that turns them into an effective tool for AOP. A key ingredient of aspectual components is that they are written in terms of a generic data model, called a participant graph, which is later mapped into a data model. We introduce a new property of this map, called instance-refinement, to ensure the proper deployment of components. We show how aspectual components can be implemented in Java, and demonstrate that aspectual components improve the AspectJ language for AOP from Xerox PARC.