In object-oriented programming, the addition of functionality or an interface to an object class. To use Solace as an example, I have a base renderer object which does all of the rendering functionality at the high-level and calls unimplemented methods within the class. Then the various renderer objects aggregate a hardware layer with the base renderer, implementing the missing functionality (typically configuration, rasterization, and various hardware-specific queries). Similarly, a texture is aggregated into a procedural texture which is a texture with missing functionality (specifically the update procedure), which are in turn aggregated with specific texture generators, such as clouds, fire, reflections, etc.