diff --git a/Classes/Domain/Model/Menu.php b/Classes/Domain/Model/Menu.php
index 7f83e894b91fd51bbfa38d64564904586ccd1663..323c09293e481624b12a8cacaed4e8c44d921b98 100644
--- a/Classes/Domain/Model/Menu.php
+++ b/Classes/Domain/Model/Menu.php
@@ -85,6 +85,54 @@ class Menu extends \TYPO3\CMS\Extbase\DomainObject\AbstractEntity
         $this->menuItem = new \TYPO3\CMS\Extbase\Persistence\ObjectStorage();
     }
 
+    /**
+     * @return array
+     */
+    public function getMenuItemPages(): array
+    {
+        return $this->getMenuItemByType(MenuItem::TYPE_PAGE);
+    }
+
+    /**
+     * @return array
+     */
+    public function getMenuItemLinks(): array
+    {
+        return $this->getMenuItemByType(MenuItem::TYPE_LINK);
+    }
+
+    /**
+     * @return array
+     */
+    public function getMenuItemContents(): array
+    {
+        return $this->getMenuItemByType(MenuItem::TYPE_CONTENT);
+    }
+
+    /**
+     * @return array
+     */
+    public function getMenuItemSubmenus(): array
+    {
+        return $this->getMenuItemByType(MenuItem::TYPE_SUBMENU);
+    }
+
+    /**
+     * @param int $type
+     * @return array
+     */
+    public function getMenuItemByType(int $type): array
+    {
+        if ($items = $this->getMenuItem()) {
+            return array_filter($items->toArray(), function ($item) use ($type) {
+                /** @var MenuItem $item */
+               return $item->getType() === $type;
+            });
+        }
+
+        return [];
+    }
+
     /**
      * Returns the menuGroup
      * 
diff --git a/Classes/Hooks/ItemsProcFunc.php b/Classes/Hooks/ItemsProcFunc.php
index 1ca8bf54e38c52c68b44c08ad0e897e8a867a368..e265887d0528368c7cb9fc7e11703ecc20fa210d 100644
--- a/Classes/Hooks/ItemsProcFunc.php
+++ b/Classes/Hooks/ItemsProcFunc.php
@@ -2,10 +2,10 @@
 
 namespace NL\NlMenubuilder\Hooks;
 
+use TYPO3\CMS\Core\Utility\DebugUtility;
 use TYPO3\CMS\Core\Utility\GeneralUtility;
 use TYPO3\CMS\Extbase\Object\ObjectManager;
 use TYPO3\CMS\Fluid\View\TemplatePaths;
-use TYPO3\CMS\Lang\LanguageService;
 
 class ItemsProcFunc
 {
@@ -55,7 +55,7 @@ class ItemsProcFunc
         foreach ($templates as $template) {
             $template = str_replace('.html', '', $template);
             $config['items'][] = [
-                htmlspecialchars($this->getLanguageService()->sL($this->langPrefix . $template)),
+                htmlspecialchars($this->getLanguageService()->sL($this->langPrefix . $template)) ?: $template,
                 $template
             ];
         }
@@ -64,9 +64,9 @@ class ItemsProcFunc
     /**
      * Returns LanguageService
      *
-     * @return LanguageService
+     * @return mixed
      */
-    protected function getLanguageService(): LanguageService
+    protected function getLanguageService()
     {
         return $GLOBALS['LANG'];
     }
diff --git a/Classes/ViewHelpers/GetViewHelper.php b/Classes/ViewHelpers/GetViewHelper.php
new file mode 100644
index 0000000000000000000000000000000000000000..8ad70e6037862175581d7de769b86b7be641837d
--- /dev/null
+++ b/Classes/ViewHelpers/GetViewHelper.php
@@ -0,0 +1,63 @@
+<?php
+
+
+namespace NL\NlMenubuilder\ViewHelpers;
+
+use FluidTYPO3\Vhs\Traits\TemplateVariableViewHelperTrait;
+use NL\NlMenubuilder\Domain\Repository\MenuRepository;
+use TYPO3\CMS\Core\Utility\GeneralUtility;
+use TYPO3\CMS\Extbase\Object\ObjectManager;
+use TYPO3Fluid\Fluid\Core\Rendering\RenderingContextInterface;
+use TYPO3Fluid\Fluid\Core\ViewHelper\AbstractViewHelper;
+use TYPO3Fluid\Fluid\Core\ViewHelper\Traits\CompileWithRenderStatic;
+
+
+class GetViewHelper extends AbstractViewHelper
+{
+    use CompileWithRenderStatic;
+    use TemplateVariableViewHelperTrait;
+
+    /**
+     * @var boolean
+     */
+    protected $escapeChildren = false;
+
+    /**
+     * @var boolean
+     */
+    protected $escapeOutput = false;
+
+    /**
+     * @return void
+     */
+    public function initializeArguments(): void
+    {
+        $this->registerAsArgument();
+        $this->registerArgument('uuid', 'int', 'UUID of the menu', true, 0);
+    }
+
+    /**
+     * @param array $arguments
+     * @param \Closure $renderChildrenClosure
+     * @param RenderingContextInterface $renderingContext
+     * @return mixed|string
+     * @throws \TYPO3\CMS\Extbase\Object\Exception
+     */
+    public static function renderStatic(array $arguments, \Closure $renderChildrenClosure, RenderingContextInterface $renderingContext)
+    {
+        /** @var ObjectManager $objectManager */
+        $objectManager = GeneralUtility::makeInstance(ObjectManager::class);
+
+        /** @var MenuRepository $menuRepository */
+        $menuRepository = $objectManager->get(MenuRepository::class);
+
+        return static::renderChildrenWithVariableOrReturnInputStatic(
+            $menuRepository->findByUid($arguments['uuid'] ?? 0),
+            $arguments['as'],
+            $renderingContext,
+            $renderChildrenClosure
+        );
+
+
+    }
+}
diff --git a/Configuration/TCA/tx_nlmenubuilder_domain_model_menugroup.php b/Configuration/TCA/tx_nlmenubuilder_domain_model_menugroup.php
index b9406678814d6b21a76a30a045d5c83793db3b8a..016fdadf310218bf04f9bebde0014a35dc6ab497 100644
--- a/Configuration/TCA/tx_nlmenubuilder_domain_model_menugroup.php
+++ b/Configuration/TCA/tx_nlmenubuilder_domain_model_menugroup.php
@@ -125,7 +125,7 @@ return [
             'config' => [
                 'type' => 'input',
                 'size' => 30,
-                'eval' => 'trim'
+                'eval' => 'trim,required'
             ],
         ],
 
@@ -134,7 +134,10 @@ return [
             'label' => "$ll:tx_nlmenubuilder_domain_model_menugroup.template",
             'config' => [
                 'type' => 'select',
-                'items' => [],
+                'renderType' => 'selectSingle',
+                'items' => [
+                    ['-', '']
+                ],
                 'itemsProcFunc' => 'NL\NlMenubuilder\Hooks\ItemsProcFunc->loadMenuGroupTemplates'
             ],
         ],
diff --git a/Resources/Private/Partials/MenuItem/Page.html b/Resources/Private/Partials/MenuItem/Page.html
index b78e6bf2c6ac5b962a27a0f06d7cd9edeadf6eda..8015bb3b80386ad3dc43dcdcf28e00d248d19312 100644
--- a/Resources/Private/Partials/MenuItem/Page.html
+++ b/Resources/Private/Partials/MenuItem/Page.html
@@ -1,5 +1,5 @@
 <html xmlns:f="http://typo3.org/ns/TYPO3/CMS/Fluid/ViewHelpers" data-namespace-typo3-fluid="true">
 
 <div class="menu-builder menu-item-page">
-    <f:link.page>{menuItem.page}</f:link.page>
+    <f:link.page pageUid="{menuItem.page}">{menuItem.title}</f:link.page>
 </div>
diff --git a/composer.json b/composer.json
index 3790001f5a730ec7c4f6e5fdcab743bbe4f162c1..0c3572aced7c61c5a72caabe624a1e56a43047fc 100644
--- a/composer.json
+++ b/composer.json
@@ -12,7 +12,7 @@
 	],
 	"require": {
         "php": "^7.2",
-        "typo3/cms-core": "^9.5"
+        "typo3/cms-core": "^9.5 || ^10.4"
     },
     "autoload": {
         "psr-4": {
diff --git a/ext_emconf.php b/ext_emconf.php
index 0020851ca981f40ac616fbdf46f46c9167b3c51f..e73235135a0605adea4aadf188b2712348fa181c 100644
--- a/ext_emconf.php
+++ b/ext_emconf.php
@@ -23,7 +23,7 @@ $EM_CONF[$_EXTKEY] = [
     'version' => '1.0.0',
     'constraints' => [
         'depends' => [
-            'typo3' => '9.5.0-9.5.99',
+            'typo3' => '9.5.0-10.4.99',
         ],
         'conflicts' => [],
         'suggests' => [],