public function addComponent(__IComponent &$component)
 {
     //protect to infinite recursion
     if (!key_exists($component->getId(), $this->_components)) {
         $this->_components[$component->getId()] =& $component;
         $component->setContainer($this);
     }
     return $this;
 }