## 2.2 The FrameWork Classes

The Kiwi framework is made up of a set of classes and some helper functions that are used to define the behavior of your application. The Kiwi classes are organized into the following groups:

- `Views`, which represent the graphical display; a View defines an interface's widgets and their layout.
- `Controllers`, which handle signals generated by the user interacting with the widgets in a View.
- `Delegates`, which are classes that combine the features of a View and a Controller.
- `Models`, which are mixins your domain object can inherit from to take advantage of special functionality.
- `Proxies`, special types of Delegate designed to implement forms. Proxies attach themselves to an instance, and transparently modify this instance as the user interacts with the widgets in its interface.

Of these, `Controllers` and `Models` do not implement user interfaces themselves, and are used together with one of the different user interface (UI) classes.

A special note: When using a white-box framework, it is very important to take care when defining names in the inherited classes to avoid clobbering names defined in the base classes you inherit from. It is useful to read through the API documentation and check for naming conflicts, and to understand which hooks might be interesting to reimplement. If you find something in your code is behaving very strangely, this could be one of the first things to check.