public function duplicate(Page $page, $title = null, Page $parent = null, $recursive = true, BBUserToken $token = null)
    {
        if (false === $recursive || false === $page->hasMainSection()) {
            $new_page = $this->copy($page, $title, $parent);
        } else {
            // Recursive cloning
            $new_page = $this->duplicateRecursively($page, $title, $parent);
        }

        // Finally updating contentset and mainnode
        foreach ($new_page->cloningData['contents'] as $content) {
            $this->updateRelatedPostCloning($content, $new_page->cloningData, $token)
                 ->updateMainNodePostCloning($content, $new_page->cloningData['pages'], $token)
            ;
        }

        return $new_page;
    }