When I created the current drawing framework, all we were interested in drawing was client windows. We want to draw a lot more today and the design needs to be changed to allow this properly. My current plan is to just adjust the drawing code so it's possible to draw different kind of objects. The core will be aware of some object types and plugins will be able to create it's own type of objects and properly integrate them into the drawing framework. Common to all objects will be a unique identifier and that they will all respect a transformation matrix and a set fragment attributes. 2D objects like client windows, cursors and such will easily be able to inherit all the details in the current drawing framework. Most objects will provide a tree structure and the core will probably be aware of the following objects: screen -> output -> root window -> frame windows -> client windows It will be easy for a plugin to create it's own set of objects and insert them into existing objects. E.g. decoration plugin will create a decoration object that can be inserted into the frame window object. The video plugin will create a video output object that can be inserted into the client window object. This is just some initial details about the changes I've got planned and much more details will be provided once I start writing some initial code for this. I'd like to get the vertex generation system updated first and we need to get rid of all the use of transformation attributes in the ScreenPaintAttrib and WindowPaintAttrib structures. - David