# The Woopsi Hierarchy

Before we start putting a GUI together, we need to establish some of the basic concepts that Woopsi uses to describe an interface. First of all, everything visible on the screen is a “gadget”. A gadget is an object that contains basic functionality for drawing lines and rectangles, and it describes a rectangular portion of the screen. Gadgets can contain other gadgets, and so they can themselves be children of other gadgets.

Gadgets form the lowest level of the Woopsi hierarchy. Gadgets are contained within windows (which are themselves a form of gadget). Windows are rectangular regions of the screen that can be dragged around, and that provide a surface for other gadgets to reside in.

Above windows are “screens” (another gagdet type). Screens were a concept introduced by the Commodore Amiga’s GUI, “Workbench”, and summarily ignored ever since. The closest modern approximation is Linux’s multiple desktop system or OSX' "Spaces". A screen provides a workspace to which windows can be added. Multiple screens can be added to Woopsi, and clicking the “depth” gadget in the top-right of the screen cycles through them.