Generally, all widgets are drawn on to their own window but not all windows are associated with a widget. For instance, an application may use a window for a drawing area which is created by the application programmer rather than using a widget. Widgets are assembled in a hierarchical fashion which reflects the window hierarchy of the application. Within a widget set there are several categories of widget to serve different purposes. Firstly, there are the familiar user interface components like scroll bars and buttons. Then, a composite, parent widget, can be used to contain other, child widgets, such as a row of button widgets, including managing their disposition and size, particularly after the window is resized. A popup widget is one which pops up temporarily on the screen, usually to obtain some kind of user input. A shell widget is the parent of all other widgets in the application (except popups, which have their own transient shell widget) and provides interaction with the window manager.