The hierarchy of PRIMA core classes is presented on fig. 4 (Prima:: prefix is removed from all classes names to save space). The root class, Prima::Object, provides some basic construction, initialization, cleanup and destruction methods for all PRIMA classes. It has no other function by itself. Prima::Component adds event and notification processing, as well as the ability to own other objects and be owned by them. All other PRIMA classes are inherited, directly or not, from Prima::Component. Then there are supporting non-widgets classes: Prima::Clipboard, Prima::Timer and Prima::AbstractMenu. Prima::AccelTable, Prima::Menu and Prima::Popup are inherited from Prima::AbstractMenu. Prima::Drawable is an abstract class with a complete set of drawing methods. Prima::Image and Prima::Widget are both drawables. Prima::Widget is the most important class in PRIMA hierarchy; all standard widgets are its descendants. The only core descendants of Prima::Widget are Prima::Application and Prima::Window, the latter implements top-level windows.
PRIMA standard distribution includes many Perl classes which implement a set of widgets expected to be found in any windowing toolkit: buttons, checkboxes and radio buttons, input fields, list boxes etc. The complete list of currently implemented widgets (see fig. 5) is too large to describe in this text; this set is a moving target, and new widgets are routinely added to PRIMA.