Most widget toolkits additionally include their own rendering engine.
This engine can be specific to a certain operating system or windowing system or contain back-ends to interface with multiple ones and also with rendering APIs such as OpenGL, OpenVG, or EGL.
The GUI of a program is commonly constructed in a cascading manner, with graphical control elements being added directly to on top of one another.
Most widget toolkits use event-driven programming as a model for interaction.
The design of those toolkits has been criticized for promoting an oversimplified model of event-action, leading programmers to create error-prone, difficult to extend and excessively complex application code.