public function setParent(Container $parent = null)
        {
            if ($parent === $this) {
                throw new Exception(
                    'A page cannot have itself as a parent');
            }

            // return if the given parent already is parent
            if ($parent === $this->_parent) {
                return $this;
            }

            // remove from old parent
            if (null !== $this->_parent) {
                $this->_parent->removePage($this);
            }

            // set new parent
            $this->_parent = $parent;

            // add to parent if page and not already a child
            if (null !== $this->_parent && !$this->_parent->hasPage($this, false)) {
                $this->_parent->addPage($this);
            }

            return $this;
        }