The pagemanager is the heart of the apollo's servlet framework. It's purpose is to arrange the programming logic for the entire application into manageable and organized parts. It does this by having each function or module of an application assigned to a tree of nodes. Nodes with subordinate functionality will have children attached to them. There are abstract classes and interfaces associated with these nodes. A PageHandler is any object which can be attached to the node tree, and render itself to HTML. A PageBroker is any object which can attach itself to the node tree, render itself to HTML, and register subordinate nodes under it in the node tree. Each node on the tree has something called a Fully Qualified Unique IDentifer, FQUID. A single node can be identified by it's FQUID, which is generated by appending it's own local UID to the FQUID of it's parent, creating a name similar to a domain name in reverse order.

You can imagine the following scenario. The admin facility for your web application has three functions, add user, delete user and modify user. Here's what the node layout for that look like in your common Java IDE:

Assembling web logic in this fashion has a number of advantages:

- Dynamically updateable
- Tree can be regrafted at runtime or at compile time
- Enforces good programming techniques by separating code at distinct and easily discernable boundaries
- Code reuse by attaching Nodes in other servlets
- Easier maintenance due to code separation, and clear organizational pattern
- Memory objects associated with a particular web function can be isolated to a single node

For example a particular maintenance thread need not be started and associated template pages need not be loaded if the node requiring them is never registered.

- Allows easy control passing to other parts of the tree by use of the FQUID