In reply to swadheen:
All classes derived from umm_component are put into a hierarchical tree structure. This structure allows all components to be traversed for thinks like report settings, and the execution of the *_phase methods. Tree structures need a top (or root depending on your perspective) singleton object so that all components can be accessed. If you leave a components parent as null, there would be no way to find it. You could build another list of all orphan components, but then you have to maintain two different traversal methods.