diff --git a/.gitignore b/.gitignore
index 629c2242031356f7de485a8625dcab3325c9b4ab..997068d70f2670524ee374ab80013e35c51e9fbf 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,5 +1,7 @@
 .idea
 .vscode
+.gitattributes
+.editorconfig
 /vendor/
 /Documentation/
 /Tests/
diff --git a/Classes/Domain/Model/Menu.php b/Classes/Domain/Model/Menu.php
index fd82a0d4a534d2f199ca96294128fd44d4e37544..7f83e894b91fd51bbfa38d64564904586ccd1663 100644
--- a/Classes/Domain/Model/Menu.php
+++ b/Classes/Domain/Model/Menu.php
@@ -27,19 +27,19 @@ class Menu extends \TYPO3\CMS\Extbase\DomainObject\AbstractEntity
     protected $title = '';
 
     /**
-     * menuItem
+     * menuGroup
      * 
-     * @var \TYPO3\CMS\Extbase\Persistence\ObjectStorage<\NL\NlMenubuilder\Domain\Model\MenuItem>
-     * @TYPO3\CMS\Extbase\Annotation\ORM\Cascade("remove")
+     * @var \NL\NlMenubuilder\Domain\Model\MenuGroup
      */
-    protected $menuItem = null;
+    protected $menuGroup = null;
 
     /**
-     * menuGroup
+     * menuItem
      * 
-     * @var \NL\NlMenubuilder\Domain\Model\MenuGroup
+     * @var \TYPO3\CMS\Extbase\Persistence\ObjectStorage<\NL\NlMenubuilder\Domain\Model\MenuItem>
+     * @TYPO3\CMS\Extbase\Annotation\ORM\Cascade("remove")
      */
-    protected $menuGroup = null;
+    protected $menuItem = null;
 
     /**
      * Returns the title
@@ -85,6 +85,27 @@ class Menu extends \TYPO3\CMS\Extbase\DomainObject\AbstractEntity
         $this->menuItem = new \TYPO3\CMS\Extbase\Persistence\ObjectStorage();
     }
 
+    /**
+     * Returns the menuGroup
+     * 
+     * @return \NL\NlMenubuilder\Domain\Model\MenuGroup menuGroup
+     */
+    public function getMenuGroup()
+    {
+        return $this->menuGroup;
+    }
+
+    /**
+     * Sets the menuGroup
+     * 
+     * @param \NL\NlMenubuilder\Domain\Model\MenuGroup $menuGroup
+     * @return void
+     */
+    public function setMenuGroup(\NL\NlMenubuilder\Domain\Model\MenuGroup $menuGroup)
+    {
+        $this->menuGroup = $menuGroup;
+    }
+
     /**
      * Adds a MenuItem
      * 
@@ -110,7 +131,7 @@ class Menu extends \TYPO3\CMS\Extbase\DomainObject\AbstractEntity
     /**
      * Returns the menuItem
      * 
-     * @return \TYPO3\CMS\Extbase\Persistence\ObjectStorage<\NL\NlMenubuilder\Domain\Model\MenuItem> $menuItem
+     * @return \TYPO3\CMS\Extbase\Persistence\ObjectStorage<\NL\NlMenubuilder\Domain\Model\MenuItem> menuItem
      */
     public function getMenuItem()
     {
@@ -127,25 +148,4 @@ class Menu extends \TYPO3\CMS\Extbase\DomainObject\AbstractEntity
     {
         $this->menuItem = $menuItem;
     }
-
-    /**
-     * Returns the menuGroup
-     * 
-     * @return \NL\NlMenubuilder\Domain\Model\MenuGroup $menuGroup
-     */
-    public function getMenuGroup()
-    {
-        return $this->menuGroup;
-    }
-
-    /**
-     * Sets the menuGroup
-     * 
-     * @param \NL\NlMenubuilder\Domain\Model\MenuGroup $menuGroup
-     * @return void
-     */
-    public function setMenuGroup(\NL\NlMenubuilder\Domain\Model\MenuGroup $menuGroup)
-    {
-        $this->menuGroup = $menuGroup;
-    }
 }
diff --git a/Classes/Domain/Model/MenuItem.php b/Classes/Domain/Model/MenuItem.php
index a30f6671a43f42d4c7e8e5823e11bbeb3dc45842..b56df01e29a3427103db839174b68ccdf16a0853 100644
--- a/Classes/Domain/Model/MenuItem.php
+++ b/Classes/Domain/Model/MenuItem.php
@@ -1,8 +1,6 @@
 <?php
 namespace NL\NlMenubuilder\Domain\Model;
 
-use ReflectionClass;
-
 /***
  *
  * This file is part of the "Menu Builder" Extension for TYPO3 CMS.
@@ -10,7 +8,7 @@ use ReflectionClass;
  * For the full copyright and license information, please read the
  * LICENSE.txt file that was distributed with this source code.
  *
- *  (c) 2021 
+ *  (c) 2021
  *
  ***/
 /**
@@ -18,26 +16,66 @@ use ReflectionClass;
  */
 class MenuItem extends \TYPO3\CMS\Extbase\DomainObject\AbstractEntity
 {
+    public const TYPE_PAGE = '0';
+    public const TYPE_LINK = '1';
+    public const TYPE_CONTENT = '2';
+    public const TYPE_SUBMENU = '3';
+
+    /**
+     * Type of the menu item
+     *
+     * @var int
+     * @TYPO3\CMS\Extbase\Annotation\Validate("NotEmpty")
+     */
+    protected $type = 0;
 
     /**
      * Name of the menu item
-     * 
+     *
      * @var string
      * @TYPO3\CMS\Extbase\Annotation\Validate("NotEmpty")
      */
     protected $title = '';
 
     /**
-     * type
-     * 
-     * @var int
-     * @TYPO3\CMS\Extbase\Annotation\Validate("NotEmpty")
+     * subtitle
+     *
+     * @var string
      */
-    protected $type = 0;
+    protected $subtitle = '';
+
+    /**
+     * Optional link image
+     *
+     * @var \TYPO3\CMS\Extbase\Domain\Model\FileReference
+     * @TYPO3\CMS\Extbase\Annotation\ORM\Cascade("remove")
+     */
+    protected $image = null;
+
+    /**
+     * page
+     *
+     * @var string
+     */
+    protected $page = '';
+
+    /**
+     * link
+     *
+     * @var string
+     */
+    protected $link = '';
+
+    /**
+     * content
+     *
+     * @var string
+     */
+    protected $content = '';
 
     /**
      * Returns the title
-     * 
+     *
      * @return string $title
      */
     public function getTitle()
@@ -47,7 +85,7 @@ class MenuItem extends \TYPO3\CMS\Extbase\DomainObject\AbstractEntity
 
     /**
      * Sets the title
-     * 
+     *
      * @param string $title
      * @return void
      */
@@ -58,7 +96,7 @@ class MenuItem extends \TYPO3\CMS\Extbase\DomainObject\AbstractEntity
 
     /**
      * Returns the type
-     * 
+     *
      * @return int $type
      */
     public function getType()
@@ -68,7 +106,7 @@ class MenuItem extends \TYPO3\CMS\Extbase\DomainObject\AbstractEntity
 
     /**
      * Sets the type
-     * 
+     *
      * @param int $type
      * @return void
      */
@@ -76,4 +114,109 @@ class MenuItem extends \TYPO3\CMS\Extbase\DomainObject\AbstractEntity
     {
         $this->type = $type;
     }
+
+    /**
+     * Returns the subtitle
+     *
+     * @return string $subtitle
+     */
+    public function getSubtitle()
+    {
+        return $this->subtitle;
+    }
+
+    /**
+     * Sets the subtitle
+     *
+     * @param string $subtitle
+     * @return void
+     */
+    public function setSubtitle($subtitle)
+    {
+        $this->subtitle = $subtitle;
+    }
+
+    /**
+     * Returns the image
+     *
+     * @return \TYPO3\CMS\Extbase\Domain\Model\FileReference $image
+     */
+    public function getImage()
+    {
+        return $this->image;
+    }
+
+    /**
+     * Sets the image
+     *
+     * @param \TYPO3\CMS\Extbase\Domain\Model\FileReference $image
+     * @return void
+     */
+    public function setImage(\TYPO3\CMS\Extbase\Domain\Model\FileReference $image)
+    {
+        $this->image = $image;
+    }
+
+    /**
+     * Returns the page
+     *
+     * @return string $page
+     */
+    public function getPage()
+    {
+        return $this->page;
+    }
+
+    /**
+     * Sets the page
+     *
+     * @param string $page
+     * @return void
+     */
+    public function setPage($page)
+    {
+        $this->page = $page;
+    }
+
+    /**
+     * Returns the link
+     *
+     * @return string $link
+     */
+    public function getLink()
+    {
+        return $this->link;
+    }
+
+    /**
+     * Sets the link
+     *
+     * @param string $link
+     * @return void
+     */
+    public function setLink($link)
+    {
+        $this->link = $link;
+    }
+
+    /**
+     * Returns the content
+     *
+     * @return string $content
+     */
+    public function getContent()
+    {
+        return $this->content;
+    }
+
+    /**
+     * Sets the content
+     *
+     * @param string $content
+     * @return void
+     */
+    public function setContent($content)
+    {
+        $this->content = $content;
+    }
 }
diff --git a/Classes/Domain/Model/MenuItemContent.php b/Classes/Domain/Model/MenuItemContent.php
index a460f0c35348d38c499dada839c487b5c5ec2bd6..06f0c2e06efd68c3e71ece1f6d29ce5898b020be 100644
--- a/Classes/Domain/Model/MenuItemContent.php
+++ b/Classes/Domain/Model/MenuItemContent.php
@@ -1,56 +1,19 @@
 <?php
-namespace NL\NlMenubuilder\Domain\Model;
 
+namespace NL\NlMenubuilder\Domain\Model;
 
-/***
- *
- * This file is part of the "Menu Builder" Extension for TYPO3 CMS.
- *
- * For the full copyright and license information, please read the
- * LICENSE.txt file that was distributed with this source code.
- *
- *  (c) 2021 
- *
- ***/
 /**
- * Content
+ * MenuItem
  */
 class MenuItemContent extends MenuItem
 {
+    public const TYPE = 2;
+
     /**
-     * type
+     * Type of the menu item
      *
      * @var int
      * @TYPO3\CMS\Extbase\Annotation\Validate("NotEmpty")
      */
-    protected $type = 0;
-
-    /**
-     * content
-     * 
-     * @var string
-     * @TYPO3\CMS\Extbase\Annotation\Validate("NotEmpty")
-     */
-    protected $content = '';
-
-    /**
-     * Returns the content
-     * 
-     * @return string $content
-     */
-    public function getContent()
-    {
-        return $this->content;
-    }
-
-    /**
-     * Sets the content
-     * 
-     * @param string $content
-     * @return void
-     */
-    public function setContent($content)
-    {
-        $this->content = $content;
-    }
+    protected $type = self::TYPE;
 }
diff --git a/Classes/Domain/Model/MenuItemLink.php b/Classes/Domain/Model/MenuItemLink.php
index bb6639ada9a03e93dc818ffb426cc104f7ac9f50..0051416e37a2f47c23c337ac61e249d0654a4a43 100644
--- a/Classes/Domain/Model/MenuItemLink.php
+++ b/Classes/Domain/Model/MenuItemLink.php
@@ -1,113 +1,19 @@
 <?php
-namespace NL\NlMenubuilder\Domain\Model;
 
+namespace NL\NlMenubuilder\Domain\Model;
 
-/***
- *
- * This file is part of the "Menu Builder" Extension for TYPO3 CMS.
- *
- * For the full copyright and license information, please read the
- * LICENSE.txt file that was distributed with this source code.
- *
- *  (c) 2021 
- *
- ***/
 /**
- * Link
+ * MenuItem
  */
 class MenuItemLink extends MenuItem
 {
+    public const TYPE = 1;
+
     /**
-     * type
+     * Type of the menu item
      *
      * @var int
      * @TYPO3\CMS\Extbase\Annotation\Validate("NotEmpty")
      */
-    protected $type = 2;
-
-    /**
-     * subtitle
-     * 
-     * @var string
-     */
-    protected $subtitle = '';
-
-    /**
-     * image
-     * 
-     * @var \TYPO3\CMS\Extbase\Domain\Model\FileReference
-     * @TYPO3\CMS\Extbase\Annotation\ORM\Cascade("remove")
-     */
-    protected $image = null;
-
-    /**
-     * link
-     * 
-     * @var string
-     * @TYPO3\CMS\Extbase\Annotation\Validate("NotEmpty")
-     */
-    protected $link = '';
-
-    /**
-     * Returns the subtitle
-     * 
-     * @return string $subtitle
-     */
-    public function getSubtitle()
-    {
-        return $this->subtitle;
-    }
-
-    /**
-     * Sets the subtitle
-     * 
-     * @param string $subtitle
-     * @return void
-     */
-    public function setSubtitle($subtitle)
-    {
-        $this->subtitle = $subtitle;
-    }
-
-    /**
-     * Returns the image
-     * 
-     * @return \TYPO3\CMS\Extbase\Domain\Model\FileReference $image
-     */
-    public function getImage()
-    {
-        return $this->image;
-    }
-
-    /**
-     * Sets the image
-     * 
-     * @param \TYPO3\CMS\Extbase\Domain\Model\FileReference $image
-     * @return void
-     */
-    public function setImage(\TYPO3\CMS\Extbase\Domain\Model\FileReference $image)
-    {
-        $this->image = $image;
-    }
-
-    /**
-     * Returns the link
-     * 
-     * @return string $link
-     */
-    public function getLink()
-    {
-        return $this->link;
-    }
-
-    /**
-     * Sets the link
-     * 
-     * @param string $link
-     * @return void
-     */
-    public function setLink($link)
-    {
-        $this->link = $link;
-    }
+    protected $type = self::TYPE;
 }
diff --git a/Classes/Domain/Model/MenuItemPage.php b/Classes/Domain/Model/MenuItemPage.php
index ca5aa8b8aa63e094c4d7077eac8eb7df8dd44923..b3618ae25ffa1c8e10704ba37334d50c05da3b37 100644
--- a/Classes/Domain/Model/MenuItemPage.php
+++ b/Classes/Domain/Model/MenuItemPage.php
@@ -2,112 +2,18 @@
 
 namespace NL\NlMenubuilder\Domain\Model;
 
-/***
- *
- * This file is part of the "Menu Builder" Extension for TYPO3 CMS.
- *
- * For the full copyright and license information, please read the
- * LICENSE.txt file that was distributed with this source code.
- *
- *  (c) 2021 
- *
- ***/
 /**
- * Page
+ * MenuItem
  */
 class MenuItemPage extends MenuItem
 {
+    public const TYPE = 0;
+
     /**
-     * type
+     * Type of the menu item
      *
      * @var int
      * @TYPO3\CMS\Extbase\Annotation\Validate("NotEmpty")
      */
-    protected $type = 1;
-
-    /**
-     * subtitle
-     * 
-     * @var string
-     */
-    protected $subtitle = '';
-
-    /**
-     * image
-     * 
-     * @var \TYPO3\CMS\Extbase\Domain\Model\FileReference
-     * @TYPO3\CMS\Extbase\Annotation\ORM\Cascade("remove")
-     */
-    protected $image = null;
-
-    /**
-     * page
-     * 
-     * @var string
-     * @TYPO3\CMS\Extbase\Annotation\Validate("NotEmpty")
-     */
-    protected $page = '';
-
-    /**
-     * Returns the subtitle
-     * 
-     * @return string $subtitle
-     */
-    public function getSubtitle()
-    {
-        return $this->subtitle;
-    }
-
-    /**
-     * Sets the subtitle
-     * 
-     * @param string $subtitle
-     * @return void
-     */
-    public function setSubtitle($subtitle)
-    {
-        $this->subtitle = $subtitle;
-    }
-
-    /**
-     * Returns the image
-     * 
-     * @return \TYPO3\CMS\Extbase\Domain\Model\FileReference $image
-     */
-    public function getImage()
-    {
-        return $this->image;
-    }
-
-    /**
-     * Sets the image
-     * 
-     * @param \TYPO3\CMS\Extbase\Domain\Model\FileReference $image
-     * @return void
-     */
-    public function setImage(\TYPO3\CMS\Extbase\Domain\Model\FileReference $image)
-    {
-        $this->image = $image;
-    }
-
-    /**
-     * Returns the page
-     * 
-     * @return string $page
-     */
-    public function getPage()
-    {
-        return $this->page;
-    }
-
-    /**
-     * Sets the page
-     * 
-     * @param string $page
-     * @return void
-     */
-    public function setPage($page)
-    {
-        $this->page = $page;
-    }
+    protected $type = self::TYPE;
 }
diff --git a/Configuration/Extbase/Persistence/Classes.php b/Configuration/Extbase/Persistence/Classes.php
deleted file mode 100644
index 85d062938a60e88774f18e435e3966968fca8d1a..0000000000000000000000000000000000000000
--- a/Configuration/Extbase/Persistence/Classes.php
+++ /dev/null
@@ -1,25 +0,0 @@
-<?php
-
-declare(strict_types = 1);
-
-return [
-    \NL\NlMenubuilder\Domain\Model\MenuItem::class => [
-        'subclasses' => [
-            \NL\NlMenubuilder\Domain\Model\MenuItemContent::class,
-            \NL\NlMenubuilder\Domain\Model\MenuItemPage::class,
-            \NL\NlMenubuilder\Domain\Model\MenuItemLink::class,
-        ]
-    ],
-    \NL\NlMenubuilder\Domain\Model\MenuItemContent::class => [
-        'tableName' => 'tx_nlmenubuilder_domain_model_content',
-        'recordType' => 0,
-    ],
-    \NL\NlMenubuilder\Domain\Model\MenuItemPage::class => [
-        'tableName' => 'tx_nlmenubuilder_domain_model_page',
-        'recordType' => 1,
-    ],
-    \NL\NlMenubuilder\Domain\Model\MenuItemLink::class => [
-        'tableName' => 'tx_nlmenubuilder_domain_model_link',
-        'recordType' => 2,
-    ],
-];
diff --git a/Configuration/ExtensionBuilder/settings.yaml b/Configuration/ExtensionBuilder/settings.yaml
index 21967554aa995e85d67f6fe9d68a4b2d3350c2f4..4c89278638751eb6e07a4e5b91e568307155363f 100644
--- a/Configuration/ExtensionBuilder/settings.yaml
+++ b/Configuration/ExtensionBuilder/settings.yaml
@@ -56,6 +56,7 @@ overwriteSettings:
         Extension.svg: keep
         tx_nlmenubuilder_domain_model_menu.gif: keep
         tx_nlmenubuilder_domain_model_menugroup.gif: keep
+        tx_nlmenubuilder_domain_model_menuitem.gif: keep
     Private:
       #Language: merge
       #Templates: keep
diff --git a/Configuration/TCA/tx_nlmenubuilder_domain_model_content.php b/Configuration/TCA/tx_nlmenubuilder_domain_model_content.php
deleted file mode 100644
index 170692891ede855906e796b29491f14f17f7c663..0000000000000000000000000000000000000000
--- a/Configuration/TCA/tx_nlmenubuilder_domain_model_content.php
+++ /dev/null
@@ -1,148 +0,0 @@
-<?php
-return [
-    'ctrl' => [
-        'title' => 'LLL:EXT:nl_menubuilder/Resources/Private/Language/locallang_db.xlf:tx_nlmenubuilder_domain_model_content',
-        'label' => 'title',
-        'tstamp' => 'tstamp',
-        'crdate' => 'crdate',
-        'cruser_id' => 'cruser_id',
-        'versioningWS' => true,
-        'languageField' => 'sys_language_uid',
-        'transOrigPointerField' => 'l10n_parent',
-        'transOrigDiffSourceField' => 'l10n_diffsource',
-        'delete' => 'deleted',
-        'enablecolumns' => [
-            'disabled' => 'hidden',
-            'starttime' => 'starttime',
-            'endtime' => 'endtime',
-        ],
-        'searchFields' => 'title,content',
-        'iconfile' => 'EXT:nl_menubuilder/Resources/Public/Icons/tx_nlmenubuilder_domain_model_content.gif'
-    ],
-    'interface' => [
-        'showRecordFieldList' => 'sys_language_uid, l10n_parent, l10n_diffsource, hidden, title, content',
-    ],
-    'types' => [
-        '1' => ['showitem' => 'sys_language_uid, l10n_parent, l10n_diffsource, hidden, title, content, --div--;LLL:EXT:frontend/Resources/Private/Language/locallang_ttc.xlf:tabs.access, starttime, endtime'],
-    ],
-    'columns' => [
-        'sys_language_uid' => [
-            'exclude' => true,
-            'label' => 'LLL:EXT:core/Resources/Private/Language/locallang_general.xlf:LGL.language',
-            'config' => [
-                'type' => 'select',
-                'renderType' => 'selectSingle',
-                'special' => 'languages',
-                'items' => [
-                    [
-                        'LLL:EXT:core/Resources/Private/Language/locallang_general.xlf:LGL.allLanguages',
-                        -1,
-                        'flags-multiple'
-                    ]
-                ],
-                'default' => 0,
-            ],
-        ],
-        'l10n_parent' => [
-            'displayCond' => 'FIELD:sys_language_uid:>:0',
-            'exclude' => true,
-            'label' => 'LLL:EXT:core/Resources/Private/Language/locallang_general.xlf:LGL.l18n_parent',
-            'config' => [
-                'type' => 'select',
-                'renderType' => 'selectSingle',
-                'default' => 0,
-                'items' => [
-                    ['', 0],
-                ],
-                'foreign_table' => 'tx_nlmenubuilder_domain_model_content',
-                'foreign_table_where' => 'AND {#tx_nlmenubuilder_domain_model_content}.{#pid}=###CURRENT_PID### AND {#tx_nlmenubuilder_domain_model_content}.{#sys_language_uid} IN (-1,0)',
-            ],
-        ],
-        'l10n_diffsource' => [
-            'config' => [
-                'type' => 'passthrough',
-            ],
-        ],
-        't3ver_label' => [
-            'label' => 'LLL:EXT:core/Resources/Private/Language/locallang_general.xlf:LGL.versionLabel',
-            'config' => [
-                'type' => 'input',
-                'size' => 30,
-                'max' => 255,
-            ],
-        ],
-        'hidden' => [
-            'exclude' => true,
-            'label' => 'LLL:EXT:core/Resources/Private/Language/locallang_general.xlf:LGL.visible',
-            'config' => [
-                'type' => 'check',
-                'renderType' => 'checkboxToggle',
-                'items' => [
-                    [
-                        0 => '',
-                        1 => '',
-                        'invertStateDisplay' => true
-                    ]
-                ],
-            ],
-        ],
-        'starttime' => [
-            'exclude' => true,
-            'label' => 'LLL:EXT:core/Resources/Private/Language/locallang_general.xlf:LGL.starttime',
-            'config' => [
-                'type' => 'input',
-                'renderType' => 'inputDateTime',
-                'eval' => 'datetime,int',
-                'default' => 0,
-                'behaviour' => [
-                    'allowLanguageSynchronization' => true
-                ]
-            ],
-        ],
-        'endtime' => [
-            'exclude' => true,
-            'label' => 'LLL:EXT:core/Resources/Private/Language/locallang_general.xlf:LGL.endtime',
-            'config' => [
-                'type' => 'input',
-                'renderType' => 'inputDateTime',
-                'eval' => 'datetime,int',
-                'default' => 0,
-                'range' => [
-                    'upper' => mktime(0, 0, 0, 1, 1, 2038)
-                ],
-                'behaviour' => [
-                    'allowLanguageSynchronization' => true
-                ]
-            ],
-        ],
-
-        'title' => [
-            'exclude' => true,
-            'label' => 'LLL:EXT:nl_menubuilder/Resources/Private/Language/locallang_db.xlf:tx_nlmenubuilder_domain_model_content.title',
-            'config' => [
-                'type' => 'input',
-                'size' => 30,
-                'eval' => 'trim,required'
-            ],
-        ],
-        'content' => [
-            'exclude' => true,
-            'label' => 'LLL:EXT:nl_menubuilder/Resources/Private/Language/locallang_db.xlf:tx_nlmenubuilder_domain_model_content.content',
-            'config' => [
-                'type' => 'text',
-                'enableRichtext' => true,
-                'richtextConfiguration' => 'default',
-                'fieldControl' => [
-                    'fullScreenRichtext' => [
-                        'disabled' => false,
-                    ],
-                ],
-                'cols' => 40,
-                'rows' => 15,
-                'eval' => 'trim,required',
-            ],
-            
-        ],
-    
-    ],
-];
diff --git a/Configuration/TCA/tx_nlmenubuilder_domain_model_link.php b/Configuration/TCA/tx_nlmenubuilder_domain_model_link.php
deleted file mode 100644
index 7010c67502ac8ae4859413adff3c119810359d2b..0000000000000000000000000000000000000000
--- a/Configuration/TCA/tx_nlmenubuilder_domain_model_link.php
+++ /dev/null
@@ -1,200 +0,0 @@
-<?php
-return [
-    'ctrl' => [
-        'title' => 'LLL:EXT:nl_menubuilder/Resources/Private/Language/locallang_db.xlf:tx_nlmenubuilder_domain_model_link',
-        'label' => 'title',
-        'tstamp' => 'tstamp',
-        'crdate' => 'crdate',
-        'cruser_id' => 'cruser_id',
-        'versioningWS' => true,
-        'languageField' => 'sys_language_uid',
-        'transOrigPointerField' => 'l10n_parent',
-        'transOrigDiffSourceField' => 'l10n_diffsource',
-        'delete' => 'deleted',
-        'enablecolumns' => [
-            'disabled' => 'hidden',
-            'starttime' => 'starttime',
-            'endtime' => 'endtime',
-        ],
-        'searchFields' => 'title,subtitle,link',
-        'iconfile' => 'EXT:nl_menubuilder/Resources/Public/Icons/tx_nlmenubuilder_domain_model_link.gif'
-    ],
-    'interface' => [
-        'showRecordFieldList' => 'sys_language_uid, l10n_parent, l10n_diffsource, hidden, title, subtitle, image, link',
-    ],
-    'types' => [
-        '1' => ['showitem' => 'sys_language_uid, l10n_parent, l10n_diffsource, hidden, title, subtitle, image, link, --div--;LLL:EXT:frontend/Resources/Private/Language/locallang_ttc.xlf:tabs.access, starttime, endtime'],
-    ],
-    'columns' => [
-        'sys_language_uid' => [
-            'exclude' => true,
-            'label' => 'LLL:EXT:core/Resources/Private/Language/locallang_general.xlf:LGL.language',
-            'config' => [
-                'type' => 'select',
-                'renderType' => 'selectSingle',
-                'special' => 'languages',
-                'items' => [
-                    [
-                        'LLL:EXT:core/Resources/Private/Language/locallang_general.xlf:LGL.allLanguages',
-                        -1,
-                        'flags-multiple'
-                    ]
-                ],
-                'default' => 0,
-            ],
-        ],
-        'l10n_parent' => [
-            'displayCond' => 'FIELD:sys_language_uid:>:0',
-            'exclude' => true,
-            'label' => 'LLL:EXT:core/Resources/Private/Language/locallang_general.xlf:LGL.l18n_parent',
-            'config' => [
-                'type' => 'select',
-                'renderType' => 'selectSingle',
-                'default' => 0,
-                'items' => [
-                    ['', 0],
-                ],
-                'foreign_table' => 'tx_nlmenubuilder_domain_model_link',
-                'foreign_table_where' => 'AND {#tx_nlmenubuilder_domain_model_link}.{#pid}=###CURRENT_PID### AND {#tx_nlmenubuilder_domain_model_link}.{#sys_language_uid} IN (-1,0)',
-            ],
-        ],
-        'l10n_diffsource' => [
-            'config' => [
-                'type' => 'passthrough',
-            ],
-        ],
-        't3ver_label' => [
-            'label' => 'LLL:EXT:core/Resources/Private/Language/locallang_general.xlf:LGL.versionLabel',
-            'config' => [
-                'type' => 'input',
-                'size' => 30,
-                'max' => 255,
-            ],
-        ],
-        'hidden' => [
-            'exclude' => true,
-            'label' => 'LLL:EXT:core/Resources/Private/Language/locallang_general.xlf:LGL.visible',
-            'config' => [
-                'type' => 'check',
-                'renderType' => 'checkboxToggle',
-                'items' => [
-                    [
-                        0 => '',
-                        1 => '',
-                        'invertStateDisplay' => true
-                    ]
-                ],
-            ],
-        ],
-        'starttime' => [
-            'exclude' => true,
-            'label' => 'LLL:EXT:core/Resources/Private/Language/locallang_general.xlf:LGL.starttime',
-            'config' => [
-                'type' => 'input',
-                'renderType' => 'inputDateTime',
-                'eval' => 'datetime,int',
-                'default' => 0,
-                'behaviour' => [
-                    'allowLanguageSynchronization' => true
-                ]
-            ],
-        ],
-        'endtime' => [
-            'exclude' => true,
-            'label' => 'LLL:EXT:core/Resources/Private/Language/locallang_general.xlf:LGL.endtime',
-            'config' => [
-                'type' => 'input',
-                'renderType' => 'inputDateTime',
-                'eval' => 'datetime,int',
-                'default' => 0,
-                'range' => [
-                    'upper' => mktime(0, 0, 0, 1, 1, 2038)
-                ],
-                'behaviour' => [
-                    'allowLanguageSynchronization' => true
-                ]
-            ],
-        ],
-
-        'title' => [
-            'exclude' => true,
-            'label' => 'LLL:EXT:nl_menubuilder/Resources/Private/Language/locallang_db.xlf:tx_nlmenubuilder_domain_model_link.title',
-            'config' => [
-                'type' => 'input',
-                'size' => 30,
-                'eval' => 'trim,required'
-            ],
-        ],
-        'subtitle' => [
-            'exclude' => true,
-            'label' => 'LLL:EXT:nl_menubuilder/Resources/Private/Language/locallang_db.xlf:tx_nlmenubuilder_domain_model_link.subtitle',
-            'config' => [
-                'type' => 'input',
-                'size' => 30,
-                'eval' => 'trim'
-            ],
-        ],
-        'image' => [
-            'exclude' => true,
-            'label' => 'LLL:EXT:nl_menubuilder/Resources/Private/Language/locallang_db.xlf:tx_nlmenubuilder_domain_model_link.image',
-            'config' => \TYPO3\CMS\Core\Utility\ExtensionManagementUtility::getFileFieldTCAConfig(
-                'image',
-                [
-                    'appearance' => [
-                        'createNewRelationLinkTitle' => 'LLL:EXT:frontend/Resources/Private/Language/locallang_ttc.xlf:images.addFileReference'
-                    ],
-                    'foreign_types' => [
-                        '0' => [
-                            'showitem' => '
-                            --palette--;LLL:EXT:lang/locallang_tca.xlf:sys_file_reference.imageoverlayPalette;imageoverlayPalette,
-                            --palette--;;filePalette'
-                        ],
-                        \TYPO3\CMS\Core\Resource\File::FILETYPE_TEXT => [
-                            'showitem' => '
-                            --palette--;LLL:EXT:lang/locallang_tca.xlf:sys_file_reference.imageoverlayPalette;imageoverlayPalette,
-                            --palette--;;filePalette'
-                        ],
-                        \TYPO3\CMS\Core\Resource\File::FILETYPE_IMAGE => [
-                            'showitem' => '
-                            --palette--;LLL:EXT:lang/locallang_tca.xlf:sys_file_reference.imageoverlayPalette;imageoverlayPalette,
-                            --palette--;;filePalette'
-                        ],
-                        \TYPO3\CMS\Core\Resource\File::FILETYPE_AUDIO => [
-                            'showitem' => '
-                            --palette--;LLL:EXT:lang/locallang_tca.xlf:sys_file_reference.imageoverlayPalette;imageoverlayPalette,
-                            --palette--;;filePalette'
-                        ],
-                        \TYPO3\CMS\Core\Resource\File::FILETYPE_VIDEO => [
-                            'showitem' => '
-                            --palette--;LLL:EXT:lang/locallang_tca.xlf:sys_file_reference.imageoverlayPalette;imageoverlayPalette,
-                            --palette--;;filePalette'
-                        ],
-                        \TYPO3\CMS\Core\Resource\File::FILETYPE_APPLICATION => [
-                            'showitem' => '
-                            --palette--;LLL:EXT:lang/locallang_tca.xlf:sys_file_reference.imageoverlayPalette;imageoverlayPalette,
-                            --palette--;;filePalette'
-                        ]
-                    ],
-                    'foreign_match_fields' => [
-                        'fieldname' => 'image',
-                        'tablenames' => 'tx_nlmenubuilder_domain_model_link',
-                        'table_local' => 'sys_file',
-                    ],
-                    'maxitems' => 1
-                ],
-                $GLOBALS['TYPO3_CONF_VARS']['GFX']['imagefile_ext']
-            ),
-            
-        ],
-        'link' => [
-            'exclude' => true,
-            'label' => 'LLL:EXT:nl_menubuilder/Resources/Private/Language/locallang_db.xlf:tx_nlmenubuilder_domain_model_link.link',
-            'config' => [
-                'type' => 'input',
-                'size' => 30,
-                'eval' => 'trim,required'
-            ],
-        ],
-    
-    ],
-];
diff --git a/Configuration/TCA/tx_nlmenubuilder_domain_model_menu.php b/Configuration/TCA/tx_nlmenubuilder_domain_model_menu.php
index c0dd91c74106b7711d3d5c567efd2bd16e487057..6b20f54e2180281e8ba9fc40160953ceb9c36f5d 100644
--- a/Configuration/TCA/tx_nlmenubuilder_domain_model_menu.php
+++ b/Configuration/TCA/tx_nlmenubuilder_domain_model_menu.php
@@ -20,10 +20,10 @@ return [
         'iconfile' => 'EXT:nl_menubuilder/Resources/Public/Icons/tx_nlmenubuilder_domain_model_menu.gif'
     ],
     'interface' => [
-        'showRecordFieldList' => 'sys_language_uid, l10n_parent, l10n_diffsource, hidden, title, menu_item, menu_group',
+        'showRecordFieldList' => 'sys_language_uid, l10n_parent, l10n_diffsource, hidden, title, menu_group, menu_item',
     ],
     'types' => [
-        '1' => ['showitem' => 'sys_language_uid, l10n_parent, l10n_diffsource, hidden, title, menu_item, menu_group, --div--;LLL:EXT:frontend/Resources/Private/Language/locallang_ttc.xlf:tabs.access, starttime, endtime'],
+        '1' => ['showitem' => 'sys_language_uid, l10n_parent, l10n_diffsource, hidden, title, menu_group, menu_item, --div--;LLL:EXT:frontend/Resources/Private/Language/locallang_ttc.xlf:tabs.access, starttime, endtime'],
     ],
     'columns' => [
         'sys_language_uid' => [
@@ -125,6 +125,20 @@ return [
                 'eval' => 'trim,required'
             ],
         ],
+        'menu_group' => [
+            'exclude' => false,
+            'label' => 'LLL:EXT:nl_menubuilder/Resources/Private/Language/locallang_db.xlf:tx_nlmenubuilder_domain_model_menu.menu_group',
+            'config' => [
+                'type' => 'select',
+                'renderType' => 'selectSingle',
+                'foreign_table' => 'tx_nlmenubuilder_domain_model_menugroup',
+                'default' => 0,
+                'minitems' => 0,
+                'maxitems' => 1,
+                'eval' => 'required'
+            ],
+
+        ],
         'menu_item' => [
             'exclude' => false,
             'label' => 'LLL:EXT:nl_menubuilder/Resources/Private/Language/locallang_db.xlf:tx_nlmenubuilder_domain_model_menu.menu_item',
@@ -132,9 +146,11 @@ return [
                 'type' => 'inline',
                 'foreign_table' => 'tx_nlmenubuilder_domain_model_menuitem',
                 'foreign_field' => 'menu',
-                'maxitems' => 9999,
+                'minitems' => 0,
+                'maxitems' => 99,
                 'appearance' => [
-                    'collapseAll' => 0,
+                    'collapseAll' => true,
+                    'expandSingle' => true,
                     'levelLinksPosition' => 'top',
                     'showSynchronizationLink' => 1,
                     'showPossibleLocalizationRecords' => 1,
@@ -143,33 +159,6 @@ return [
             ],
 
         ],
-        'menu_group' => [
-            'exclude' => false,
-            'label' => 'LLL:EXT:nl_menubuilder/Resources/Private/Language/locallang_db.xlf:tx_nlmenubuilder_domain_model_menu.menu_group',
-            'config' => [
-                'type' => 'select',
-                'renderType' => 'selectMultipleSideBySide',
-                'foreign_table' => 'tx_nlmenubuilder_domain_model_menugroup',
-                'default' => 0,
-                'size' => 10,
-                'autoSizeMax' => 30,
-                'maxitems' => 1,
-                'minitems' => 1,
-                'multiple' => 0,
-                'fieldControl' => [
-                    'editPopup' => [
-                        'disabled' => false,
-                    ],
-                    'addRecord' => [
-                        'disabled' => false,
-                    ],
-                    'listModule' => [
-                        'disabled' => true,
-                    ],
-                ],
-            ],
-
-        ],
 
     ],
 ];
diff --git a/Configuration/TCA/tx_nlmenubuilder_domain_model_menuitem.php b/Configuration/TCA/tx_nlmenubuilder_domain_model_menuitem.php
index 233f85c0f9b9d060d9141085880b00ad803adb66..c45512dd1b2212d02509a3d492f0ea229e9ae579 100644
--- a/Configuration/TCA/tx_nlmenubuilder_domain_model_menuitem.php
+++ b/Configuration/TCA/tx_nlmenubuilder_domain_model_menuitem.php
@@ -16,14 +16,27 @@ return [
             'starttime' => 'starttime',
             'endtime' => 'endtime',
         ],
-        'searchFields' => 'title',
-        'iconfile' => 'EXT:nl_menubuilder/Resources/Public/Icons/tx_nlmenubuilder_domain_model_menuitem.gif'
-    ],
-    'interface' => [
-        'showRecordFieldList' => 'sys_language_uid, l10n_parent, l10n_diffsource, hidden, title, type',
+        'searchFields' => 'title,subtitle,page,link,content',
+        'iconfile' => 'EXT:nl_menubuilder/Resources/Public/Icons/tx_nlmenubuilder_domain_model_menuitem.gif',
+        'type' => 'type',
+        'typeicon_column' => 'type',
+        'typeicon_classes' => [
+            'default' => 'ext-menubuilder-menuitem-type-page',
+            '1' => 'ext-menubuilder-menuitem-type-link',
+            '2' => 'ext-menubuilder-menuitem-type-content',
+            '3' => 'ext-menubuilder-menuitem-type-submenu',
+        ],
     ],
+    'interface' => ['showRecordFieldList' => 'sys_language_uid, l10n_parent, l10n_diffsource, hidden, type, title, subtitle, image, page, link, content'],
     'types' => [
-        '1' => ['showitem' => 'sys_language_uid, l10n_parent, l10n_diffsource, hidden, title, type, --div--;LLL:EXT:frontend/Resources/Private/Language/locallang_ttc.xlf:tabs.access, starttime, endtime'],
+        // page
+        '0' => ['showitem' => 'sys_language_uid, l10n_parent, l10n_diffsource, hidden, type, title, subtitle, page, image, --div--;LLL:EXT:frontend/Resources/Private/Language/locallang_ttc.xlf:tabs.access, starttime, endtime'],
+        // link
+        '1' => ['showitem' => 'sys_language_uid, l10n_parent, l10n_diffsource, hidden, type, title, subtitle, image, link, --div--;LLL:EXT:frontend/Resources/Private/Language/locallang_ttc.xlf:tabs.access, starttime, endtime'],
+        // content
+        '2' => ['showitem' => 'sys_language_uid, l10n_parent, l10n_diffsource, hidden, type, title, content, --div--;LLL:EXT:frontend/Resources/Private/Language/locallang_ttc.xlf:tabs.access, starttime, endtime'],
+        // submenu
+        '3' => ['showitem' => 'sys_language_uid, l10n_parent, l10n_diffsource, hidden, type, title, --div--;LLL:EXT:frontend/Resources/Private/Language/locallang_ttc.xlf:tabs.access, starttime, endtime'],
     ],
     'columns' => [
         'sys_language_uid' => [
@@ -115,7 +128,28 @@ return [
                 ]
             ],
         ],
-
+        'type' => [
+            'exclude' => false,
+            'label' => 'LLL:EXT:nl_menubuilder/Resources/Private/Language/locallang_db.xlf:tx_nlmenubuilder_domain_model_menuitem.type',
+            'config' => [
+                'type' => 'select',
+                'renderType' => 'selectSingle',
+                'items' => [
+                    ['LLL:EXT:nl_menubuilder/Resources/Private/Language/locallang_db.xlf:tx_nlmenubuilder_domain_model_menuitem.page', 0, 'ext-menubuilder-menuitem-type-page'],
+                    ['LLL:EXT:nl_menubuilder/Resources/Private/Language/locallang_db.xlf:tx_nlmenubuilder_domain_model_menuitem.link', 1, 'ext-menubuilder-menuitem-type-link'],
+                    ['LLL:EXT:nl_menubuilder/Resources/Private/Language/locallang_db.xlf:tx_nlmenubuilder_domain_model_menuitem.content', 2, 'ext-menubuilder-menuitem-type-content'],
+                    ['LLL:EXT:nl_menubuilder/Resources/Private/Language/locallang_db.xlf:tx_nlmenubuilder_domain_model_menuitem.submenu', 3, 'ext-menubuilder-menuitem-type-submenu'],
+                ],
+                'fieldWizard' => [
+                    'selectIcons' => [
+                        'disabled' => false,
+                    ],
+                ],
+                'size' => 1,
+                'maxitems' => 1,
+                'eval' => 'required'
+            ],
+        ],
         'title' => [
             'exclude' => false,
             'label' => 'LLL:EXT:nl_menubuilder/Resources/Private/Language/locallang_db.xlf:tx_nlmenubuilder_domain_model_menuitem.title',
@@ -125,21 +159,106 @@ return [
                 'eval' => 'trim,required'
             ],
         ],
-        'type' => [
+        'subtitle' => [
             'exclude' => false,
-            'label' => 'LLL:EXT:nl_menubuilder/Resources/Private/Language/locallang_db.xlf:tx_nlmenubuilder_domain_model_menuitem.type',
+            'label' => 'LLL:EXT:nl_menubuilder/Resources/Private/Language/locallang_db.xlf:tx_nlmenubuilder_domain_model_menuitem.subtitle',
             'config' => [
-                'type' => 'select',
-                'renderType' => 'selectSingle',
-                'items' => [
-                    ['-- Label --', 0],
+                'type' => 'input',
+                'size' => 30,
+                'eval' => 'trim'
+            ],
+        ],
+        'image' => [
+            'exclude' => false,
+            'label' => 'LLL:EXT:nl_menubuilder/Resources/Private/Language/locallang_db.xlf:tx_nlmenubuilder_domain_model_menuitem.image',
+            'config' => \TYPO3\CMS\Core\Utility\ExtensionManagementUtility::getFileFieldTCAConfig(
+                'image',
+                [
+                    'appearance' => [
+                        'createNewRelationLinkTitle' => 'LLL:EXT:frontend/Resources/Private/Language/locallang_ttc.xlf:images.addFileReference'
+                    ],
+                    'foreign_types' => [
+                        '0' => [
+                            'showitem' => '
+                            --palette--;LLL:EXT:lang/locallang_tca.xlf:sys_file_reference.imageoverlayPalette;imageoverlayPalette,
+                            --palette--;;filePalette'
+                        ],
+                        \TYPO3\CMS\Core\Resource\File::FILETYPE_TEXT => [
+                            'showitem' => '
+                            --palette--;LLL:EXT:lang/locallang_tca.xlf:sys_file_reference.imageoverlayPalette;imageoverlayPalette,
+                            --palette--;;filePalette'
+                        ],
+                        \TYPO3\CMS\Core\Resource\File::FILETYPE_IMAGE => [
+                            'showitem' => '
+                            --palette--;LLL:EXT:lang/locallang_tca.xlf:sys_file_reference.imageoverlayPalette;imageoverlayPalette,
+                            --palette--;;filePalette'
+                        ],
+                        \TYPO3\CMS\Core\Resource\File::FILETYPE_AUDIO => [
+                            'showitem' => '
+                            --palette--;LLL:EXT:lang/locallang_tca.xlf:sys_file_reference.imageoverlayPalette;imageoverlayPalette,
+                            --palette--;;filePalette'
+                        ],
+                        \TYPO3\CMS\Core\Resource\File::FILETYPE_VIDEO => [
+                            'showitem' => '
+                            --palette--;LLL:EXT:lang/locallang_tca.xlf:sys_file_reference.imageoverlayPalette;imageoverlayPalette,
+                            --palette--;;filePalette'
+                        ],
+                        \TYPO3\CMS\Core\Resource\File::FILETYPE_APPLICATION => [
+                            'showitem' => '
+                            --palette--;LLL:EXT:lang/locallang_tca.xlf:sys_file_reference.imageoverlayPalette;imageoverlayPalette,
+                            --palette--;;filePalette'
+                        ]
+                    ],
+                    'foreign_match_fields' => [
+                        'fieldname' => 'image',
+                        'tablenames' => 'tx_nlmenubuilder_domain_model_menuitem',
+                        'table_local' => 'sys_file',
+                    ],
+                    'maxitems' => 1
                 ],
-                'size' => 1,
-                'maxitems' => 1,
-                'eval' => 'required'
+                $GLOBALS['TYPO3_CONF_VARS']['GFX']['imagefile_ext']
+            ),
+
+        ],
+        'page' => [
+            'exclude' => false,
+            'label' => 'LLL:EXT:nl_menubuilder/Resources/Private/Language/locallang_db.xlf:tx_nlmenubuilder_domain_model_menuitem.page',
+            'config' => [
+                'type' => 'input',
+                'renderType' => 'inputLink',
+                'size' => 30,
+                'eval' => 'trim,required',
+                'softref' => 'typolink',
+            ],
+        ],
+        'link' => [
+            'exclude' => false,
+            'label' => 'LLL:EXT:nl_menubuilder/Resources/Private/Language/locallang_db.xlf:tx_nlmenubuilder_domain_model_menuitem.link',
+            'config' => [
+                'type' => 'input',
+                'size' => 30,
+                'eval' => 'trim'
+            ],
+        ],
+        'content' => [
+            'exclude' => false,
+            'label' => 'LLL:EXT:nl_menubuilder/Resources/Private/Language/locallang_db.xlf:tx_nlmenubuilder_domain_model_menuitem.content',
+            'config' => [
+                'type' => 'text',
+                'enableRichtext' => true,
+                'richtextConfiguration' => 'default',
+                'fieldControl' => [
+                    'fullScreenRichtext' => [
+                        'disabled' => false,
+                    ],
+                ],
+                'cols' => 40,
+                'rows' => 15,
+                'eval' => 'trim',
             ],
+
         ],
-    
+
         'menu' => [
             'config' => [
                 'type' => 'passthrough',
diff --git a/Configuration/TCA/tx_nlmenubuilder_domain_model_page.php b/Configuration/TCA/tx_nlmenubuilder_domain_model_page.php
deleted file mode 100644
index 61533847739502d5b3e07dd50d543b2198b46a14..0000000000000000000000000000000000000000
--- a/Configuration/TCA/tx_nlmenubuilder_domain_model_page.php
+++ /dev/null
@@ -1,200 +0,0 @@
-<?php
-return [
-    'ctrl' => [
-        'title' => 'LLL:EXT:nl_menubuilder/Resources/Private/Language/locallang_db.xlf:tx_nlmenubuilder_domain_model_page',
-        'label' => 'title',
-        'tstamp' => 'tstamp',
-        'crdate' => 'crdate',
-        'cruser_id' => 'cruser_id',
-        'versioningWS' => true,
-        'languageField' => 'sys_language_uid',
-        'transOrigPointerField' => 'l10n_parent',
-        'transOrigDiffSourceField' => 'l10n_diffsource',
-        'delete' => 'deleted',
-        'enablecolumns' => [
-            'disabled' => 'hidden',
-            'starttime' => 'starttime',
-            'endtime' => 'endtime',
-        ],
-        'searchFields' => 'title,subtitle,page',
-        'iconfile' => 'EXT:nl_menubuilder/Resources/Public/Icons/tx_nlmenubuilder_domain_model_page.gif'
-    ],
-    'interface' => [
-        'showRecordFieldList' => 'sys_language_uid, l10n_parent, l10n_diffsource, hidden, title, subtitle, image, page',
-    ],
-    'types' => [
-        '1' => ['showitem' => 'sys_language_uid, l10n_parent, l10n_diffsource, hidden, title, subtitle, image, page, --div--;LLL:EXT:frontend/Resources/Private/Language/locallang_ttc.xlf:tabs.access, starttime, endtime'],
-    ],
-    'columns' => [
-        'sys_language_uid' => [
-            'exclude' => true,
-            'label' => 'LLL:EXT:core/Resources/Private/Language/locallang_general.xlf:LGL.language',
-            'config' => [
-                'type' => 'select',
-                'renderType' => 'selectSingle',
-                'special' => 'languages',
-                'items' => [
-                    [
-                        'LLL:EXT:core/Resources/Private/Language/locallang_general.xlf:LGL.allLanguages',
-                        -1,
-                        'flags-multiple'
-                    ]
-                ],
-                'default' => 0,
-            ],
-        ],
-        'l10n_parent' => [
-            'displayCond' => 'FIELD:sys_language_uid:>:0',
-            'exclude' => true,
-            'label' => 'LLL:EXT:core/Resources/Private/Language/locallang_general.xlf:LGL.l18n_parent',
-            'config' => [
-                'type' => 'select',
-                'renderType' => 'selectSingle',
-                'default' => 0,
-                'items' => [
-                    ['', 0],
-                ],
-                'foreign_table' => 'tx_nlmenubuilder_domain_model_page',
-                'foreign_table_where' => 'AND {#tx_nlmenubuilder_domain_model_page}.{#pid}=###CURRENT_PID### AND {#tx_nlmenubuilder_domain_model_page}.{#sys_language_uid} IN (-1,0)',
-            ],
-        ],
-        'l10n_diffsource' => [
-            'config' => [
-                'type' => 'passthrough',
-            ],
-        ],
-        't3ver_label' => [
-            'label' => 'LLL:EXT:core/Resources/Private/Language/locallang_general.xlf:LGL.versionLabel',
-            'config' => [
-                'type' => 'input',
-                'size' => 30,
-                'max' => 255,
-            ],
-        ],
-        'hidden' => [
-            'exclude' => true,
-            'label' => 'LLL:EXT:core/Resources/Private/Language/locallang_general.xlf:LGL.visible',
-            'config' => [
-                'type' => 'check',
-                'renderType' => 'checkboxToggle',
-                'items' => [
-                    [
-                        0 => '',
-                        1 => '',
-                        'invertStateDisplay' => true
-                    ]
-                ],
-            ],
-        ],
-        'starttime' => [
-            'exclude' => true,
-            'label' => 'LLL:EXT:core/Resources/Private/Language/locallang_general.xlf:LGL.starttime',
-            'config' => [
-                'type' => 'input',
-                'renderType' => 'inputDateTime',
-                'eval' => 'datetime,int',
-                'default' => 0,
-                'behaviour' => [
-                    'allowLanguageSynchronization' => true
-                ]
-            ],
-        ],
-        'endtime' => [
-            'exclude' => true,
-            'label' => 'LLL:EXT:core/Resources/Private/Language/locallang_general.xlf:LGL.endtime',
-            'config' => [
-                'type' => 'input',
-                'renderType' => 'inputDateTime',
-                'eval' => 'datetime,int',
-                'default' => 0,
-                'range' => [
-                    'upper' => mktime(0, 0, 0, 1, 1, 2038)
-                ],
-                'behaviour' => [
-                    'allowLanguageSynchronization' => true
-                ]
-            ],
-        ],
-
-        'title' => [
-            'exclude' => true,
-            'label' => 'LLL:EXT:nl_menubuilder/Resources/Private/Language/locallang_db.xlf:tx_nlmenubuilder_domain_model_page.title',
-            'config' => [
-                'type' => 'input',
-                'size' => 30,
-                'eval' => 'trim,required'
-            ],
-        ],
-        'subtitle' => [
-            'exclude' => true,
-            'label' => 'LLL:EXT:nl_menubuilder/Resources/Private/Language/locallang_db.xlf:tx_nlmenubuilder_domain_model_page.subtitle',
-            'config' => [
-                'type' => 'input',
-                'size' => 30,
-                'eval' => 'trim'
-            ],
-        ],
-        'image' => [
-            'exclude' => true,
-            'label' => 'LLL:EXT:nl_menubuilder/Resources/Private/Language/locallang_db.xlf:tx_nlmenubuilder_domain_model_page.image',
-            'config' => \TYPO3\CMS\Core\Utility\ExtensionManagementUtility::getFileFieldTCAConfig(
-                'image',
-                [
-                    'appearance' => [
-                        'createNewRelationLinkTitle' => 'LLL:EXT:frontend/Resources/Private/Language/locallang_ttc.xlf:images.addFileReference'
-                    ],
-                    'foreign_types' => [
-                        '0' => [
-                            'showitem' => '
-                            --palette--;LLL:EXT:lang/locallang_tca.xlf:sys_file_reference.imageoverlayPalette;imageoverlayPalette,
-                            --palette--;;filePalette'
-                        ],
-                        \TYPO3\CMS\Core\Resource\File::FILETYPE_TEXT => [
-                            'showitem' => '
-                            --palette--;LLL:EXT:lang/locallang_tca.xlf:sys_file_reference.imageoverlayPalette;imageoverlayPalette,
-                            --palette--;;filePalette'
-                        ],
-                        \TYPO3\CMS\Core\Resource\File::FILETYPE_IMAGE => [
-                            'showitem' => '
-                            --palette--;LLL:EXT:lang/locallang_tca.xlf:sys_file_reference.imageoverlayPalette;imageoverlayPalette,
-                            --palette--;;filePalette'
-                        ],
-                        \TYPO3\CMS\Core\Resource\File::FILETYPE_AUDIO => [
-                            'showitem' => '
-                            --palette--;LLL:EXT:lang/locallang_tca.xlf:sys_file_reference.imageoverlayPalette;imageoverlayPalette,
-                            --palette--;;filePalette'
-                        ],
-                        \TYPO3\CMS\Core\Resource\File::FILETYPE_VIDEO => [
-                            'showitem' => '
-                            --palette--;LLL:EXT:lang/locallang_tca.xlf:sys_file_reference.imageoverlayPalette;imageoverlayPalette,
-                            --palette--;;filePalette'
-                        ],
-                        \TYPO3\CMS\Core\Resource\File::FILETYPE_APPLICATION => [
-                            'showitem' => '
-                            --palette--;LLL:EXT:lang/locallang_tca.xlf:sys_file_reference.imageoverlayPalette;imageoverlayPalette,
-                            --palette--;;filePalette'
-                        ]
-                    ],
-                    'foreign_match_fields' => [
-                        'fieldname' => 'image',
-                        'tablenames' => 'tx_nlmenubuilder_domain_model_page',
-                        'table_local' => 'sys_file',
-                    ],
-                    'maxitems' => 1
-                ],
-                $GLOBALS['TYPO3_CONF_VARS']['GFX']['imagefile_ext']
-            ),
-            
-        ],
-        'page' => [
-            'exclude' => true,
-            'label' => 'LLL:EXT:nl_menubuilder/Resources/Private/Language/locallang_db.xlf:tx_nlmenubuilder_domain_model_page.page',
-            'config' => [
-                'type' => 'input',
-                'size' => 30,
-                'eval' => 'trim,required'
-            ],
-        ],
-    
-    ],
-];
diff --git a/Configuration/TCA/tx_nlmenubuilder_domain_model_submenu.php b/Configuration/TCA/tx_nlmenubuilder_domain_model_submenu.php
deleted file mode 100644
index 68761784e4464df33696de7b5f4f702dbe8226e7..0000000000000000000000000000000000000000
--- a/Configuration/TCA/tx_nlmenubuilder_domain_model_submenu.php
+++ /dev/null
@@ -1,130 +0,0 @@
-<?php
-return [
-    'ctrl' => [
-        'title' => 'LLL:EXT:nl_menubuilder/Resources/Private/Language/locallang_db.xlf:tx_nlmenubuilder_domain_model_submenu',
-        'label' => 'title',
-        'tstamp' => 'tstamp',
-        'crdate' => 'crdate',
-        'cruser_id' => 'cruser_id',
-        'versioningWS' => true,
-        'languageField' => 'sys_language_uid',
-        'transOrigPointerField' => 'l10n_parent',
-        'transOrigDiffSourceField' => 'l10n_diffsource',
-        'delete' => 'deleted',
-        'enablecolumns' => [
-            'disabled' => 'hidden',
-            'starttime' => 'starttime',
-            'endtime' => 'endtime',
-        ],
-        'searchFields' => 'title',
-        'iconfile' => 'EXT:nl_menubuilder/Resources/Public/Icons/tx_nlmenubuilder_domain_model_submenu.gif'
-    ],
-    'interface' => [
-        'showRecordFieldList' => 'sys_language_uid, l10n_parent, l10n_diffsource, hidden, title',
-    ],
-    'types' => [
-        '1' => ['showitem' => 'sys_language_uid, l10n_parent, l10n_diffsource, hidden, title, --div--;LLL:EXT:frontend/Resources/Private/Language/locallang_ttc.xlf:tabs.access, starttime, endtime'],
-    ],
-    'columns' => [
-        'sys_language_uid' => [
-            'exclude' => true,
-            'label' => 'LLL:EXT:core/Resources/Private/Language/locallang_general.xlf:LGL.language',
-            'config' => [
-                'type' => 'select',
-                'renderType' => 'selectSingle',
-                'special' => 'languages',
-                'items' => [
-                    [
-                        'LLL:EXT:core/Resources/Private/Language/locallang_general.xlf:LGL.allLanguages',
-                        -1,
-                        'flags-multiple'
-                    ]
-                ],
-                'default' => 0,
-            ],
-        ],
-        'l10n_parent' => [
-            'displayCond' => 'FIELD:sys_language_uid:>:0',
-            'exclude' => true,
-            'label' => 'LLL:EXT:core/Resources/Private/Language/locallang_general.xlf:LGL.l18n_parent',
-            'config' => [
-                'type' => 'select',
-                'renderType' => 'selectSingle',
-                'default' => 0,
-                'items' => [
-                    ['', 0],
-                ],
-                'foreign_table' => 'tx_nlmenubuilder_domain_model_submenu',
-                'foreign_table_where' => 'AND {#tx_nlmenubuilder_domain_model_submenu}.{#pid}=###CURRENT_PID### AND {#tx_nlmenubuilder_domain_model_submenu}.{#sys_language_uid} IN (-1,0)',
-            ],
-        ],
-        'l10n_diffsource' => [
-            'config' => [
-                'type' => 'passthrough',
-            ],
-        ],
-        't3ver_label' => [
-            'label' => 'LLL:EXT:core/Resources/Private/Language/locallang_general.xlf:LGL.versionLabel',
-            'config' => [
-                'type' => 'input',
-                'size' => 30,
-                'max' => 255,
-            ],
-        ],
-        'hidden' => [
-            'exclude' => true,
-            'label' => 'LLL:EXT:core/Resources/Private/Language/locallang_general.xlf:LGL.visible',
-            'config' => [
-                'type' => 'check',
-                'renderType' => 'checkboxToggle',
-                'items' => [
-                    [
-                        0 => '',
-                        1 => '',
-                        'invertStateDisplay' => true
-                    ]
-                ],
-            ],
-        ],
-        'starttime' => [
-            'exclude' => true,
-            'label' => 'LLL:EXT:core/Resources/Private/Language/locallang_general.xlf:LGL.starttime',
-            'config' => [
-                'type' => 'input',
-                'renderType' => 'inputDateTime',
-                'eval' => 'datetime,int',
-                'default' => 0,
-                'behaviour' => [
-                    'allowLanguageSynchronization' => true
-                ]
-            ],
-        ],
-        'endtime' => [
-            'exclude' => true,
-            'label' => 'LLL:EXT:core/Resources/Private/Language/locallang_general.xlf:LGL.endtime',
-            'config' => [
-                'type' => 'input',
-                'renderType' => 'inputDateTime',
-                'eval' => 'datetime,int',
-                'default' => 0,
-                'range' => [
-                    'upper' => mktime(0, 0, 0, 1, 1, 2038)
-                ],
-                'behaviour' => [
-                    'allowLanguageSynchronization' => true
-                ]
-            ],
-        ],
-
-        'title' => [
-            'exclude' => true,
-            'label' => 'LLL:EXT:nl_menubuilder/Resources/Private/Language/locallang_db.xlf:tx_nlmenubuilder_domain_model_submenu.title',
-            'config' => [
-                'type' => 'input',
-                'size' => 30,
-                'eval' => 'trim,required'
-            ],
-        ],
-    
-    ],
-];
diff --git a/ExtensionBuilder.json b/ExtensionBuilder.json
index 6836fe7d24e8b6d6345ad1a1c0609ae27728a428..96a701fb43d94932987632bd47e4994833f92944 100644
--- a/ExtensionBuilder.json
+++ b/ExtensionBuilder.json
@@ -53,22 +53,22 @@
                             "lazyLoading": false,
                             "propertyIsExcludeField": false,
                             "relationDescription": "",
-                            "relationName": "menuItem",
-                            "relationType": "zeroToMany",
+                            "relationName": "menuGroup",
+                            "relationType": "manyToOne",
                             "relationWire": "[wired]",
-                            "renderType": "inline",
-                            "uid": "498399672732"
+                            "renderType": "selectSingle",
+                            "uid": "910633819500"
                         },
                         {
                             "foreignRelationClass": "",
                             "lazyLoading": false,
                             "propertyIsExcludeField": false,
                             "relationDescription": "",
-                            "relationName": "menuGroup",
-                            "relationType": "manyToOne",
+                            "relationName": "menuItem",
+                            "relationType": "zeroToMany",
                             "relationWire": "[wired]",
-                            "renderType": "selectMultipleSideBySide",
-                            "uid": "910633819500"
+                            "renderType": "inline",
+                            "uid": "498399672732"
                         }
                     ]
                 }
@@ -128,8 +128,8 @@
         {
             "config": {
                 "position": [
-                    570,
-                    253
+                    517,
+                    233
                 ]
             },
             "name": "New Model Object",
@@ -158,6 +158,17 @@
                 },
                 "propertyGroup": {
                     "properties": [
+                        {
+                            "allowedFileTypes": "",
+                            "maxItems": "1",
+                            "propertyDescription": "Type of the menu item",
+                            "propertyIsExcludeField": false,
+                            "propertyIsL10nModeExclude": false,
+                            "propertyIsRequired": true,
+                            "propertyName": "type",
+                            "propertyType": "Select",
+                            "uid": "907885444815"
+                        },
                         {
                             "allowedFileTypes": "",
                             "maxItems": "1",
@@ -175,10 +186,54 @@
                             "propertyDescription": "",
                             "propertyIsExcludeField": false,
                             "propertyIsL10nModeExclude": false,
-                            "propertyIsRequired": true,
-                            "propertyName": "type",
-                            "propertyType": "Select",
-                            "uid": "907885444815"
+                            "propertyIsRequired": false,
+                            "propertyName": "subtitle",
+                            "propertyType": "String",
+                            "uid": "459494162104"
+                        },
+                        {
+                            "allowedFileTypes": "",
+                            "maxItems": "1",
+                            "propertyDescription": "Optional link image",
+                            "propertyIsExcludeField": false,
+                            "propertyIsL10nModeExclude": false,
+                            "propertyIsRequired": false,
+                            "propertyName": "image",
+                            "propertyType": "Image",
+                            "uid": "232675499137"
+                        },
+                        {
+                            "allowedFileTypes": "",
+                            "maxItems": "1",
+                            "propertyDescription": "",
+                            "propertyIsExcludeField": false,
+                            "propertyIsL10nModeExclude": false,
+                            "propertyIsRequired": false,
+                            "propertyName": "page",
+                            "propertyType": "String",
+                            "uid": "1319275530787"
+                        },
+                        {
+                            "allowedFileTypes": "",
+                            "maxItems": "1",
+                            "propertyDescription": "",
+                            "propertyIsExcludeField": false,
+                            "propertyIsL10nModeExclude": false,
+                            "propertyIsRequired": false,
+                            "propertyName": "link",
+                            "propertyType": "String",
+                            "uid": "729781755652"
+                        },
+                        {
+                            "allowedFileTypes": "",
+                            "maxItems": "1",
+                            "propertyDescription": "",
+                            "propertyIsExcludeField": false,
+                            "propertyIsL10nModeExclude": false,
+                            "propertyIsRequired": false,
+                            "propertyName": "content",
+                            "propertyType": "RichText",
+                            "uid": "1242707690455"
                         }
                     ]
                 },
@@ -215,7 +270,7 @@
         {
             "src": {
                 "moduleId": 0,
-                "terminal": "relationWire_0",
+                "terminal": "relationWire_1",
                 "uid": "498399672732"
             },
             "tgt": {
@@ -227,7 +282,7 @@
         {
             "src": {
                 "moduleId": 0,
-                "terminal": "relationWire_1",
+                "terminal": "relationWire_0",
                 "uid": "910633819500"
             },
             "tgt": {
@@ -239,7 +294,7 @@
     ],
     "storagePath": "\/var\/www\/html\/public\/typo3conf\/ext\/",
     "log": {
-        "last_modified": "2021-04-21 02:54",
+        "last_modified": "2021-04-22 11:17",
         "extension_builder_version": "9.10.3",
         "be_user": " (1)"
     }
diff --git a/Resources/Private/Language/locallang.xlf b/Resources/Private/Language/locallang.xlf
index e558e406ca77fded808b3f2640fc42bfced37190..0be185aae9f06689335a64ae50162814b191a055 100644
--- a/Resources/Private/Language/locallang.xlf
+++ b/Resources/Private/Language/locallang.xlf
@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes" ?>
 <xliff version="1.0">
-	<file source-language="en" datatype="plaintext" original="EXT:nl_menubuilder/Resources/Private/Language/locallang" date="2021-04-21T14:54:38Z" product-name="nl_menubuilder">
+	<file source-language="en" datatype="plaintext" original="EXT:nl_menubuilder/Resources/Private/Language/locallang" date="2021-04-22T11:17:02Z" product-name="nl_menubuilder">
 		<header/>
 		<body>
 			<trans-unit id="tx_nlmenubuilder_domain_model_menu" resname="tx_nlmenubuilder_domain_model_menu">
@@ -9,12 +9,12 @@
 			<trans-unit id="tx_nlmenubuilder_domain_model_menu.title" resname="tx_nlmenubuilder_domain_model_menu.title">
 				<source>Title</source>
 			</trans-unit>
-			<trans-unit id="tx_nlmenubuilder_domain_model_menu.menu_item" resname="tx_nlmenubuilder_domain_model_menu.menu_item">
-				<source>Menu Item</source>
-			</trans-unit>
 			<trans-unit id="tx_nlmenubuilder_domain_model_menu.menu_group" resname="tx_nlmenubuilder_domain_model_menu.menu_group">
 				<source>Menu Group</source>
 			</trans-unit>
+			<trans-unit id="tx_nlmenubuilder_domain_model_menu.menu_item" resname="tx_nlmenubuilder_domain_model_menu.menu_item">
+				<source>Menu Item</source>
+			</trans-unit>
 			<trans-unit id="tx_nlmenubuilder_domain_model_menugroup" resname="tx_nlmenubuilder_domain_model_menugroup">
 				<source>Menu Group</source>
 			</trans-unit>
@@ -24,11 +24,26 @@
 			<trans-unit id="tx_nlmenubuilder_domain_model_menuitem" resname="tx_nlmenubuilder_domain_model_menuitem">
 				<source>Menu Item</source>
 			</trans-unit>
+			<trans-unit id="tx_nlmenubuilder_domain_model_menuitem.type" resname="tx_nlmenubuilder_domain_model_menuitem.type">
+				<source>Type</source>
+			</trans-unit>
 			<trans-unit id="tx_nlmenubuilder_domain_model_menuitem.title" resname="tx_nlmenubuilder_domain_model_menuitem.title">
 				<source>Title</source>
 			</trans-unit>
-			<trans-unit id="tx_nlmenubuilder_domain_model_menuitem.type" resname="tx_nlmenubuilder_domain_model_menuitem.type">
-				<source>Type</source>
+			<trans-unit id="tx_nlmenubuilder_domain_model_menuitem.subtitle" resname="tx_nlmenubuilder_domain_model_menuitem.subtitle">
+				<source>Subtitle</source>
+			</trans-unit>
+			<trans-unit id="tx_nlmenubuilder_domain_model_menuitem.image" resname="tx_nlmenubuilder_domain_model_menuitem.image">
+				<source>Image</source>
+			</trans-unit>
+			<trans-unit id="tx_nlmenubuilder_domain_model_menuitem.page" resname="tx_nlmenubuilder_domain_model_menuitem.page">
+				<source>Page</source>
+			</trans-unit>
+			<trans-unit id="tx_nlmenubuilder_domain_model_menuitem.link" resname="tx_nlmenubuilder_domain_model_menuitem.link">
+				<source>Link</source>
+			</trans-unit>
+			<trans-unit id="tx_nlmenubuilder_domain_model_menuitem.content" resname="tx_nlmenubuilder_domain_model_menuitem.content">
+				<source>Content</source>
 			</trans-unit>
 		</body>
 	</file>
diff --git a/Resources/Private/Language/locallang_csh_tx_nlmenubuilder_domain_model_content.xlf b/Resources/Private/Language/locallang_csh_tx_nlmenubuilder_domain_model_content.xlf
deleted file mode 100644
index aa3a0d2f137e6de554e8a824b7117ecec14627cb..0000000000000000000000000000000000000000
--- a/Resources/Private/Language/locallang_csh_tx_nlmenubuilder_domain_model_content.xlf
+++ /dev/null
@@ -1,14 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
-<xliff version="1.0">
-	<file source-language="en" datatype="plaintext" original="EXT:nl_menubuilder/Resources/Private/Language/locallang_csh" date="2021-04-21T14:26:16Z" product-name="nl_menubuilder">
-		<header/>
-		<body>
-			<trans-unit id="title.description" resname="title.description">
-				<source>title</source>
-			</trans-unit>
-			<trans-unit id="content.description" resname="content.description">
-				<source>content</source>
-			</trans-unit>
-		</body>
-	</file>
-</xliff>
diff --git a/Resources/Private/Language/locallang_csh_tx_nlmenubuilder_domain_model_link.xlf b/Resources/Private/Language/locallang_csh_tx_nlmenubuilder_domain_model_link.xlf
deleted file mode 100644
index d1bbe8e76ed6466dc6c400ba70eb06c6656f5b42..0000000000000000000000000000000000000000
--- a/Resources/Private/Language/locallang_csh_tx_nlmenubuilder_domain_model_link.xlf
+++ /dev/null
@@ -1,20 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
-<xliff version="1.0">
-	<file source-language="en" datatype="plaintext" original="EXT:nl_menubuilder/Resources/Private/Language/locallang_csh" date="2021-04-21T14:26:16Z" product-name="nl_menubuilder">
-		<header/>
-		<body>
-			<trans-unit id="title.description" resname="title.description">
-				<source>title</source>
-			</trans-unit>
-			<trans-unit id="subtitle.description" resname="subtitle.description">
-				<source>subtitle</source>
-			</trans-unit>
-			<trans-unit id="image.description" resname="image.description">
-				<source>image</source>
-			</trans-unit>
-			<trans-unit id="link.description" resname="link.description">
-				<source>link</source>
-			</trans-unit>
-		</body>
-	</file>
-</xliff>
diff --git a/Resources/Private/Language/locallang_csh_tx_nlmenubuilder_domain_model_menu.xlf b/Resources/Private/Language/locallang_csh_tx_nlmenubuilder_domain_model_menu.xlf
index d49c49ccf5badd58f39d81b95f70ae6f80b04108..92575173e22b04df58463225d5b1083b34c479d9 100644
--- a/Resources/Private/Language/locallang_csh_tx_nlmenubuilder_domain_model_menu.xlf
+++ b/Resources/Private/Language/locallang_csh_tx_nlmenubuilder_domain_model_menu.xlf
@@ -1,17 +1,17 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes" ?>
 <xliff version="1.0">
-	<file source-language="en" datatype="plaintext" original="EXT:nl_menubuilder/Resources/Private/Language/locallang_csh" date="2021-04-21T14:54:38Z" product-name="nl_menubuilder">
+	<file source-language="en" datatype="plaintext" original="EXT:nl_menubuilder/Resources/Private/Language/locallang_csh" date="2021-04-22T11:17:02Z" product-name="nl_menubuilder">
 		<header/>
 		<body>
 			<trans-unit id="title.description" resname="title.description">
 				<source>Name of the menu</source>
 			</trans-unit>
-			<trans-unit id="menu_item.description" resname="menu_item.description">
-				<source>menuItem</source>
-			</trans-unit>
 			<trans-unit id="menu_group.description" resname="menu_group.description">
 				<source>menuGroup</source>
 			</trans-unit>
+			<trans-unit id="menu_item.description" resname="menu_item.description">
+				<source>menuItem</source>
+			</trans-unit>
 		</body>
 	</file>
 </xliff>
diff --git a/Resources/Private/Language/locallang_csh_tx_nlmenubuilder_domain_model_menugroup.xlf b/Resources/Private/Language/locallang_csh_tx_nlmenubuilder_domain_model_menugroup.xlf
index e29c366f9dafae7eb2ef0474289c82fc861f210e..a1c2f382545c41712dbae374b1085714a4daf51c 100644
--- a/Resources/Private/Language/locallang_csh_tx_nlmenubuilder_domain_model_menugroup.xlf
+++ b/Resources/Private/Language/locallang_csh_tx_nlmenubuilder_domain_model_menugroup.xlf
@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes" ?>
 <xliff version="1.0">
-	<file source-language="en" datatype="plaintext" original="EXT:nl_menubuilder/Resources/Private/Language/locallang_csh" date="2021-04-21T14:54:38Z" product-name="nl_menubuilder">
+	<file source-language="en" datatype="plaintext" original="EXT:nl_menubuilder/Resources/Private/Language/locallang_csh" date="2021-04-22T11:17:02Z" product-name="nl_menubuilder">
 		<header/>
 		<body>
 			<trans-unit id="title.description" resname="title.description">
diff --git a/Resources/Private/Language/locallang_csh_tx_nlmenubuilder_domain_model_menuitem.xlf b/Resources/Private/Language/locallang_csh_tx_nlmenubuilder_domain_model_menuitem.xlf
index 12ff063c941a939c46a1cfe73094da35e0b2bfd5..9ddcb844de9866d1d20404774d2ead53a76d28c8 100644
--- a/Resources/Private/Language/locallang_csh_tx_nlmenubuilder_domain_model_menuitem.xlf
+++ b/Resources/Private/Language/locallang_csh_tx_nlmenubuilder_domain_model_menuitem.xlf
@@ -1,13 +1,28 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes" ?>
 <xliff version="1.0">
-	<file source-language="en" datatype="plaintext" original="EXT:nl_menubuilder/Resources/Private/Language/locallang_csh" date="2021-04-21T14:54:38Z" product-name="nl_menubuilder">
+	<file source-language="en" datatype="plaintext" original="EXT:nl_menubuilder/Resources/Private/Language/locallang_csh" date="2021-04-22T11:17:02Z" product-name="nl_menubuilder">
 		<header/>
 		<body>
+			<trans-unit id="type.description" resname="type.description">
+				<source>Type of the menu item</source>
+			</trans-unit>
 			<trans-unit id="title.description" resname="title.description">
 				<source>Name of the menu item</source>
 			</trans-unit>
-			<trans-unit id="type.description" resname="type.description">
-				<source>type</source>
+			<trans-unit id="subtitle.description" resname="subtitle.description">
+				<source>subtitle</source>
+			</trans-unit>
+			<trans-unit id="image.description" resname="image.description">
+				<source>Optional link image</source>
+			</trans-unit>
+			<trans-unit id="page.description" resname="page.description">
+				<source>page</source>
+			</trans-unit>
+			<trans-unit id="link.description" resname="link.description">
+				<source>link</source>
+			</trans-unit>
+			<trans-unit id="content.description" resname="content.description">
+				<source>content</source>
 			</trans-unit>
 		</body>
 	</file>
diff --git a/Resources/Private/Language/locallang_csh_tx_nlmenubuilder_domain_model_page.xlf b/Resources/Private/Language/locallang_csh_tx_nlmenubuilder_domain_model_page.xlf
deleted file mode 100644
index c33998f5eed27d8e016f5d0ab11c160adb33a7da..0000000000000000000000000000000000000000
--- a/Resources/Private/Language/locallang_csh_tx_nlmenubuilder_domain_model_page.xlf
+++ /dev/null
@@ -1,20 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
-<xliff version="1.0">
-	<file source-language="en" datatype="plaintext" original="EXT:nl_menubuilder/Resources/Private/Language/locallang_csh" date="2021-04-21T14:26:16Z" product-name="nl_menubuilder">
-		<header/>
-		<body>
-			<trans-unit id="title.description" resname="title.description">
-				<source>title</source>
-			</trans-unit>
-			<trans-unit id="subtitle.description" resname="subtitle.description">
-				<source>subtitle</source>
-			</trans-unit>
-			<trans-unit id="image.description" resname="image.description">
-				<source>image</source>
-			</trans-unit>
-			<trans-unit id="page.description" resname="page.description">
-				<source>page</source>
-			</trans-unit>
-		</body>
-	</file>
-</xliff>
diff --git a/Resources/Private/Language/locallang_csh_tx_nlmenubuilder_domain_model_submenu.xlf b/Resources/Private/Language/locallang_csh_tx_nlmenubuilder_domain_model_submenu.xlf
deleted file mode 100644
index aac877491cb00ce919f33f7d063642c79b06b771..0000000000000000000000000000000000000000
--- a/Resources/Private/Language/locallang_csh_tx_nlmenubuilder_domain_model_submenu.xlf
+++ /dev/null
@@ -1,11 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
-<xliff version="1.0">
-	<file source-language="en" datatype="plaintext" original="EXT:nl_menubuilder/Resources/Private/Language/locallang_csh" date="2021-04-21T14:26:16Z" product-name="nl_menubuilder">
-		<header/>
-		<body>
-			<trans-unit id="title.description" resname="title.description">
-				<source>title</source>
-			</trans-unit>
-		</body>
-	</file>
-</xliff>
diff --git a/Resources/Private/Language/locallang_db.xlf b/Resources/Private/Language/locallang_db.xlf
index 3fc1da7bde7a685f4f526f89094943e5a4b144c6..d12607c5247bbd5f266873fb6a38c33710518288 100644
--- a/Resources/Private/Language/locallang_db.xlf
+++ b/Resources/Private/Language/locallang_db.xlf
@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes" ?>
 <xliff version="1.0">
-	<file source-language="en" datatype="plaintext" original="EXT:nl_menubuilder/Resources/Private/Language/locallang_db" date="2021-04-21T14:54:38Z" product-name="nl_menubuilder">
+	<file source-language="en" datatype="plaintext" original="EXT:nl_menubuilder/Resources/Private/Language/locallang_db" date="2021-04-22T11:17:02Z" product-name="nl_menubuilder">
 		<header/>
 		<body>
 			<trans-unit id="tx_nlmenubuilder_domain_model_menu" resname="tx_nlmenubuilder_domain_model_menu">
@@ -9,12 +9,12 @@
 			<trans-unit id="tx_nlmenubuilder_domain_model_menu.title" resname="tx_nlmenubuilder_domain_model_menu.title">
 				<source>Title</source>
 			</trans-unit>
-			<trans-unit id="tx_nlmenubuilder_domain_model_menu.menu_item" resname="tx_nlmenubuilder_domain_model_menu.menu_item">
-				<source>Menu Item</source>
-			</trans-unit>
 			<trans-unit id="tx_nlmenubuilder_domain_model_menu.menu_group" resname="tx_nlmenubuilder_domain_model_menu.menu_group">
 				<source>Menu Group</source>
 			</trans-unit>
+			<trans-unit id="tx_nlmenubuilder_domain_model_menu.menu_item" resname="tx_nlmenubuilder_domain_model_menu.menu_item">
+				<source>Menu Item</source>
+			</trans-unit>
 			<trans-unit id="tx_nlmenubuilder_domain_model_menugroup" resname="tx_nlmenubuilder_domain_model_menugroup">
 				<source>Menu Group</source>
 			</trans-unit>
@@ -24,11 +24,29 @@
 			<trans-unit id="tx_nlmenubuilder_domain_model_menuitem" resname="tx_nlmenubuilder_domain_model_menuitem">
 				<source>Menu Item</source>
 			</trans-unit>
+			<trans-unit id="tx_nlmenubuilder_domain_model_menuitem.type" resname="tx_nlmenubuilder_domain_model_menuitem.type">
+				<source>Type</source>
+			</trans-unit>
 			<trans-unit id="tx_nlmenubuilder_domain_model_menuitem.title" resname="tx_nlmenubuilder_domain_model_menuitem.title">
 				<source>Title</source>
 			</trans-unit>
-			<trans-unit id="tx_nlmenubuilder_domain_model_menuitem.type" resname="tx_nlmenubuilder_domain_model_menuitem.type">
-				<source>Type</source>
+			<trans-unit id="tx_nlmenubuilder_domain_model_menuitem.subtitle" resname="tx_nlmenubuilder_domain_model_menuitem.subtitle">
+				<source>Subtitle</source>
+			</trans-unit>
+			<trans-unit id="tx_nlmenubuilder_domain_model_menuitem.image" resname="tx_nlmenubuilder_domain_model_menuitem.image">
+				<source>Image</source>
+			</trans-unit>
+			<trans-unit id="tx_nlmenubuilder_domain_model_menuitem.page" resname="tx_nlmenubuilder_domain_model_menuitem.page">
+				<source>Page</source>
+			</trans-unit>
+			<trans-unit id="tx_nlmenubuilder_domain_model_menuitem.link" resname="tx_nlmenubuilder_domain_model_menuitem.link">
+				<source>Link</source>
+			</trans-unit>
+			<trans-unit id="tx_nlmenubuilder_domain_model_menuitem.content" resname="tx_nlmenubuilder_domain_model_menuitem.content">
+				<source>Content</source>
+			</trans-unit>
+			<trans-unit id="tx_nlmenubuilder_domain_model_menuitem.submenu" resname="tx_nlmenubuilder_domain_model_menuitem.submenu">
+				<source>Submenu</source>
 			</trans-unit>
 		</body>
 	</file>
diff --git a/Resources/Public/Icons/tx_nlmenubuilder_domain_model_menu.gif b/Resources/Public/Icons/tx_nlmenubuilder_domain_model_menu.gif
index 1750e037dd7ccd3a191cf9d8b1678f62d382034e..d599e5bde2d787fa86230cf3c8b53d4c43bf4a93 100644
Binary files a/Resources/Public/Icons/tx_nlmenubuilder_domain_model_menu.gif and b/Resources/Public/Icons/tx_nlmenubuilder_domain_model_menu.gif differ
diff --git a/Resources/Public/Icons/tx_nlmenubuilder_domain_model_menugroup.gif b/Resources/Public/Icons/tx_nlmenubuilder_domain_model_menugroup.gif
index 0ab6cf613b32001577c3e24378ed67cfb10ef64a..4013d7a6ea57d909a3d8d073195b548f09256155 100644
Binary files a/Resources/Public/Icons/tx_nlmenubuilder_domain_model_menugroup.gif and b/Resources/Public/Icons/tx_nlmenubuilder_domain_model_menugroup.gif differ
diff --git a/Resources/Public/Icons/tx_nlmenubuilder_domain_model_menuitem-content.svg b/Resources/Public/Icons/tx_nlmenubuilder_domain_model_menuitem-content.svg
new file mode 100644
index 0000000000000000000000000000000000000000..292c9b63be169909e99947c648888fd7e5300f66
--- /dev/null
+++ b/Resources/Public/Icons/tx_nlmenubuilder_domain_model_menuitem-content.svg
@@ -0,0 +1 @@
+<?xml version="1.0" encoding="utf-8"?><svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" viewBox="0 0 110.74 122.88" style="enable-background:new 0 0 110.74 122.88" xml:space="preserve"><g><path d="M48.47,116.35c1.8,0,3.27,1.46,3.27,3.26c0,1.8-1.46,3.26-3.27,3.26H7.6c-2.09,0-3.99-0.85-5.37-2.23 C0.85,119.27,0,117.38,0,115.28V7.6C0,5.5,0.85,3.61,2.23,2.23C3.61,0.85,5.5,0,7.6,0h93.3c2.09,0,3.99,0.86,5.37,2.23 c1.38,1.38,2.23,3.27,2.23,5.37v53.95c0,1.8-1.46,3.26-3.26,3.26c-1.8,0-3.26-1.46-3.26-3.26V7.6c0-0.29-0.12-0.56-0.32-0.75 c-0.2-0.2-0.47-0.32-0.75-0.32H7.6c-0.29,0-0.56,0.12-0.76,0.31C6.65,7.05,6.53,7.31,6.53,7.6v107.68c0,0.29,0.12,0.56,0.32,0.75 c0.2,0.2,0.47,0.32,0.76,0.32L48.47,116.35L48.47,116.35L48.47,116.35z M33.94,57.92c-0.62-1.07-0.17-4.13,1.16-5.21 c3.8-2.22,9.04-1.53,12.7-4.09c0.21-0.32,0.44-0.78,0.67-1.29c0.33-0.76,0.64-1.59,0.83-2.16c-0.81-0.96-1.51-2.04-2.17-3.1 l-2.2-3.5c-0.8-1.2-1.22-2.3-1.25-3.2c-0.01-0.42,0.06-0.81,0.22-1.15c0.16-0.36,0.41-0.65,0.76-0.88c0.16-0.11,0.34-0.2,0.53-0.27 c-0.15-1.9-0.2-4.29-0.1-6.3c0.05-0.47,0.14-0.95,0.27-1.43c0.56-2.01,1.97-3.63,3.72-4.74c0.96-0.61,2.02-1.08,3.12-1.39 c0.7-0.2-0.6-2.43,0.13-2.51c3.5-0.36,9.15,2.83,11.59,5.47c1.22,1.32,1.99,3.08,2.16,5.4l-0.14,5.71l0,0 c0.61,0.19,1,0.57,1.16,1.2c0.18,0.7-0.01,1.67-0.61,3.01l0,0c-0.01,0.02-0.02,0.05-0.04,0.07l-2.51,4.13 c-0.92,1.52-1.86,3.04-3.08,4.24c0.11,0.16,0.23,0.32,0.34,0.48c0.5,0.73,1,1.46,1.64,2.11c0.02,0.02,0.04,0.05,0.05,0.07 c2.89,2.04,9.92,2.54,12.62,4.04l0.11,0.06c1.39,1.07,1.82,4.13,1.18,5.2H33.94L33.94,57.92z M102.29,79.04 c-0.53-0.51-1.14-0.75-1.84-0.74c-0.71,0.01-1.31,0.29-1.8,0.81l-4.05,4.22l11.37,10.98l4.09-4.26c0.49-0.5,0.69-1.14,0.68-1.84 c-0.01-0.69-0.26-1.33-0.76-1.8L102.29,79.04L102.29,79.04L102.29,79.04z M84.54,116.17c-1.5,0.48-3,0.97-4.49,1.46 c-1.5,0.5-3,1-4.49,1.5c-3.53,1.16-5.51,1.8-5.93,1.92c-0.4,0.12-0.17-1.53,0.73-4.99l2.81-10.83l0,0l17.82-18.18l11.36,10.93 L84.54,116.17L84.54,116.17L84.54,116.17z M31.74,95.36c-1.8,0-3.27-1.48-3.27-3.31s1.46-3.31,3.27-3.31h22.21 c1.8,0,3.27,1.48,3.27,3.31s-1.46,3.31-3.27,3.31H31.74L31.74,95.36L31.74,95.36z M31.74,74.67c-1.8,0-3.26-1.46-3.26-3.27 c0-1.8,1.46-3.26,3.26-3.26h44.05c1.8,0,3.26,1.46,3.26,3.26c0,1.8-1.46,3.27-3.26,3.27H31.74L31.74,74.67L31.74,74.67z"/></g></svg>
\ No newline at end of file
diff --git a/Resources/Public/Icons/tx_nlmenubuilder_domain_model_menuitem-link.svg b/Resources/Public/Icons/tx_nlmenubuilder_domain_model_menuitem-link.svg
new file mode 100644
index 0000000000000000000000000000000000000000..dc5d32d862a57cbe883ae0a75e38d5d74d200c66
--- /dev/null
+++ b/Resources/Public/Icons/tx_nlmenubuilder_domain_model_menuitem-link.svg
@@ -0,0 +1 @@
+<?xml version="1.0" encoding="utf-8"?><svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" viewBox="0 0 112.55 122.88" style="enable-background:new 0 0 112.55 122.88" xml:space="preserve"><style type="text/css">.st0{fill-rule:evenodd;clip-rule:evenodd;}</style><g><path class="st0" d="M104.41,6.1c6.26,5.13,6.93,11.83,7.62,13.46l0.34,2.5c0.9,5.39-1.65,12.75-5.58,17.38L89.2,59.84 c-6.76,7.84-18.04,10.44-27.48,6.37l-0.03,0.04c3.45,5.63,3.15,9.64,3.46,10.57c0.9,5.41-1.65,12.74-5.58,17.38L41.97,114.6 c-8.53,9.89-23.58,11.1-33.53,2.61c-5.04-5.04-7.84-9.31-8.37-16.49c-0.47-6.24,1.53-12.37,5.59-17.18l17.92-20.79 c5.01-5.14,7.5-5.86,13.33-7.47l2.5-0.34l10.66,1.56c0.22,0.08,0.44,0.18,0.65,0.27l0.03-0.04c-5.35-8.71-4.57-20.11,2.14-27.97 L70.48,8.37c4.11-4.77,9.99-7.71,16.15-8.19c5.37-0.89,12.77,1.64,17.38,5.58L104.41,6.1L104.41,6.1z M74.23,51.71l-3.66,4.24 l0.64,0.01l0.02,0l0.6-0.02l0.01,0l0.14-0.01l0.02,0c2.11-0.16,4.19-0.88,5.96-2.14c0.34-0.24,0.68-0.51,1.02-0.82l0,0l0,0 c0.3-0.27,0.62-0.59,0.93-0.95l0,0l0.12-0.13l17.45-20.24c1.47-1.7,2.36-3.75,2.68-5.86c0.07-0.44,0.11-0.87,0.13-1.26 c0.02-0.41,0.01-0.85-0.01-1.28l0-0.05l-0.01-0.11c-0.16-2.11-0.88-4.19-2.14-5.96c-0.24-0.34-0.51-0.67-0.78-0.97l-0.03-0.04 c-0.29-0.32-0.61-0.64-0.94-0.94l0,0l-0.06-0.05l-0.05-0.05L96.16,15c-1.69-1.43-3.7-2.3-5.78-2.61l-0.03,0 c-0.43-0.06-0.85-0.11-1.24-0.12c-0.41-0.02-0.84-0.01-1.27,0.01l-0.07,0l-0.1,0.01c-2.11,0.16-4.19,0.88-5.96,2.14 c-0.34,0.24-0.68,0.51-0.98,0.78l-0.03,0.03c-0.33,0.29-0.64,0.61-0.94,0.95l0,0l-0.12,0.13L62.2,36.55 c-1.47,1.7-2.36,3.75-2.68,5.86h0c-0.06,0.43-0.11,0.86-0.12,1.26c-0.02,0.41-0.01,0.85,0.01,1.28l0.01,0.15l0,0.01v0.02 c0.03,0.46,0.09,0.91,0.18,1.37l3.58-4.15l0.1-0.12l0.13-0.14l0,0l0.02-0.02c1.29-1.39,3.02-2.18,4.79-2.3 c1.78-0.13,3.62,0.39,5.1,1.6l0,0l0.02,0.01l0.09,0.08l0.02,0.02l0.02,0.02l0.01,0.01l0.02,0.01l0.07,0.06l0,0l0,0 c2.06,1.83,2.82,4.6,2.21,7.13c-0.12,0.5-0.3,1-0.54,1.48c-0.22,0.46-0.51,0.9-0.83,1.31l-0.02,0.02l-0.03,0.04l0,0l-0.01,0.02 l-0.1,0.12l0,0L74.23,51.71L74.23,51.71z M40.06,80.23L40.06,80.23c2.33,2.01,5.88,1.75,7.89-0.58l5.58-6.47 c0.65,1.45,1.04,3,1.16,4.57c0.25,3.44-0.79,6.97-3.19,9.75l-17.46,20.24c-2.4,2.79-5.73,4.34-9.16,4.59 c-3.38,0.25-6.84-0.75-9.59-3.05l-0.16-0.14c-2.78-2.4-4.34-5.73-4.59-9.16c-0.25-3.4,0.76-6.89,3.1-9.65l0.09-0.1l17.25-20l0,0 l0,0l0.21-0.24c2.4-2.78,5.73-4.34,9.16-4.59c1.58-0.12,3.18,0.04,4.71,0.47l-5.58,6.47C37.47,74.67,37.73,78.22,40.06,80.23 L40.06,80.23z"/></g></svg>
\ No newline at end of file
diff --git a/Resources/Public/Icons/tx_nlmenubuilder_domain_model_menuitem-page.svg b/Resources/Public/Icons/tx_nlmenubuilder_domain_model_menuitem-page.svg
new file mode 100644
index 0000000000000000000000000000000000000000..f2d3eb1f88fef8e0807bb34654fb66725f3df067
--- /dev/null
+++ b/Resources/Public/Icons/tx_nlmenubuilder_domain_model_menuitem-page.svg
@@ -0,0 +1 @@
+<svg id="Layer_1" data-name="Layer 1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 90.48 122.88"><title>text-file</title><path d="M35.27.78a3,3,0,0,1,2-.78,1.54,1.54,0,0,1,.47.05h46.2A6.59,6.59,0,0,1,88.56,2a6.52,6.52,0,0,1,1.92,4.64v109.7a6.57,6.57,0,0,1-6.56,6.56H6.67a6.57,6.57,0,0,1-6.56-6.56v-78A3.07,3.07,0,0,1,0,37.56a3.19,3.19,0,0,1,1-2.24L34.9,1a1.5,1.5,0,0,1,.26-.21ZM84.65,6.62a.5.5,0,0,0-.21-.47A.67.67,0,0,0,84,5.94H40.22V31.62a8.89,8.89,0,0,1-8.91,8.91H6.1v75.79a.58.58,0,0,0,.2.47.69.69,0,0,0,.47.21H84a.58.58,0,0,0,.47-.21.73.73,0,0,0,.21-.47V6.62Zm-62,94.73a2.64,2.64,0,0,1,0-5.28h28a2.64,2.64,0,0,1,0,5.28Zm0-17.75a2.64,2.64,0,0,1,0-5.28H65.46a2.64,2.64,0,0,1,0,5.28Zm0-17.76a2.64,2.64,0,0,1,0-5.28H72a2.64,2.64,0,0,1,0,5.28Zm11.7-34.22V10.11L10.11,34.64h21.2a3.16,3.16,0,0,0,2.13-.88,3.06,3.06,0,0,0,.89-2.14Z"/></svg>
\ No newline at end of file
diff --git a/Resources/Public/Icons/tx_nlmenubuilder_domain_model_menuitem-submenu.svg b/Resources/Public/Icons/tx_nlmenubuilder_domain_model_menuitem-submenu.svg
new file mode 100644
index 0000000000000000000000000000000000000000..9cdf3fb88d6809eb039ad48b3a9efa903003cf40
--- /dev/null
+++ b/Resources/Public/Icons/tx_nlmenubuilder_domain_model_menuitem-submenu.svg
@@ -0,0 +1 @@
+<?xml version="1.0" encoding="utf-8"?><svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" viewBox="0 0 122.88 100.16" style="enable-background:new 0 0 122.88 100.16" xml:space="preserve"><style type="text/css">.st0{fill-rule:evenodd;clip-rule:evenodd;}</style><g><path class="st0" d="M98.74,78.39h6.32V62.24c0-0.31-0.13-0.6-0.34-0.81c-0.21-0.21-0.5-0.34-0.81-0.34l-38.58,0v17.3h6.31 c2,0,3.63,1.63,3.63,3.63v14.52c0,2-1.63,3.63-3.63,3.63l-20.51,0c-2,0-3.63-1.63-3.63-3.63V82.02c0-2,1.63-3.63,3.63-3.63l6.31,0 v-17.3H18.87c-0.31,0-0.6,0.13-0.81,0.34c-0.21,0.21-0.34,0.5-0.34,0.81v16.15h6.42c2,0,3.63,1.63,3.63,3.63v14.52 c0,2-1.63,3.63-3.63,3.63l-20.51,0c-2,0-3.63-1.63-3.63-3.63V82.02c0-2,1.63-3.63,3.63-3.63l6.23,0V62.24 c0-2.48,1.01-4.74,2.64-6.37c1.63-1.63,3.88-2.64,6.37-2.64h38.58V21.78h-6.31c-2,0-3.63-1.63-3.63-3.63V3.63 c0-2,1.63-3.63,3.63-3.63l20.51,0c2,0,3.63,1.63,3.63,3.63v14.52c0,2-1.63,3.63-3.63,3.63l-6.31,0v31.45h38.58 c2.48,0,4.74,1.01,6.37,2.64c1.63,1.63,2.64,3.89,2.64,6.37v16.15h6.33c2,0,3.63,1.63,3.63,3.63v14.52c0,2-1.63,3.63-3.63,3.63 l-20.51,0c-2,0-3.63-1.63-3.63-3.63V82.02C95.11,80.02,96.75,78.39,98.74,78.39L98.74,78.39L98.74,78.39z"/></g></svg>
\ No newline at end of file
diff --git a/Resources/Public/Icons/tx_nlmenubuilder_domain_model_menuitem.gif b/Resources/Public/Icons/tx_nlmenubuilder_domain_model_menuitem.gif
index 6cc5f16355d84652db5ce39fcbc7256b7ea457cd..93ed8aa9345a29a4a09dcc47c99a2c59213b6b0a 100644
Binary files a/Resources/Public/Icons/tx_nlmenubuilder_domain_model_menuitem.gif and b/Resources/Public/Icons/tx_nlmenubuilder_domain_model_menuitem.gif differ
diff --git a/Resources/Public/Icons/tx_nlmenubuilder_domain_model_menuitemcontent.svg b/Resources/Public/Icons/tx_nlmenubuilder_domain_model_menuitemcontent.svg
deleted file mode 100644
index ba78ed50d2057be43d84d5c11f54bec0ef562617..0000000000000000000000000000000000000000
--- a/Resources/Public/Icons/tx_nlmenubuilder_domain_model_menuitemcontent.svg
+++ /dev/null
@@ -1,3 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?><svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" viewBox="0 0 122.88 110.78" style="enable-background:new 0 0 122.88 110.78" xml:space="preserve"><style type="text/css"><![CDATA[
-	.st0{fill-rule:evenodd;clip-rule:evenodd;}
-]]></style><g><path class="st0" d="M7.05,0h100.97c1.92,0,3.68,0.8,4.95,2.07l0,0l0.01,0.01l0.01,0.01L113,2.1c1.27,1.28,2.06,3.03,2.06,4.95 v35.02c-0.53-0.48-1.13-0.91-1.78-1.28c-1.54-0.87-3.06-1.36-4.58-1.52V25.21l0,0c-0.22,0.04-0.45,0.06-0.67,0.06H7.05 c-0.23,0-0.46-0.02-0.67-0.06v78.51c0,0.19,0.07,0.36,0.19,0.48l0,0l0.01,0.01c0.12,0.12,0.28,0.19,0.48,0.19h52.44 c-0.01,2.74,0.52,4.86,1.58,6.38l-54.02,0c-1.92,0-3.68-0.79-4.96-2.07l-0.01-0.01l-0.01-0.01l-0.01-0.01 C0.79,107.4,0,105.65,0,103.73l0-96.7c0.02-1.94,0.81-3.7,2.08-4.97c0.08-0.08,0.15-0.15,0.23-0.22C3.57,0.7,5.23,0,7.05,0L7.05,0 L7.05,0z M55.11,47.78c-1.48,0-2.68-1.3-2.68-2.91c0-1.61,1.2-2.91,2.68-2.91h40.15c1.25,0,2.3,0.93,2.6,2.19l-3.51,3.64H55.11 L55.11,47.78L55.11,47.78z M55.11,62.5c-1.48,0-2.68-1.3-2.68-2.91s1.2-2.91,2.68-2.91h30.65l-5.62,5.82H55.11L55.11,62.5 L55.11,62.5z M89.25,97.9c-2.05,0.65-4.1,1.29-6.15,1.94c-2.05,0.65-4.1,1.4-6.15,2.05c-4.86,1.51-7.55,2.48-8.1,2.59 c-0.54,0.11-0.21-2.05,0.97-6.8l3.88-14.78l0.32-0.32L89.25,97.9L89.25,97.9L89.25,97.9L89.25,97.9L89.25,97.9L89.25,97.9z M79.64,76.85l27.16-28.13c0.65-0.54,1.3-0.75,2.05-0.32l13.6,13.17c0.54,0.65,0.65,1.4-0.11,2.16L94.86,92.18L79.64,76.85 L79.64,76.85L79.64,76.85L79.64,76.85z M115.06,85.16v18.58c0,1.94-0.79,3.7-2.07,4.97c-1.27,1.27-3.03,2.07-4.97,2.07H79.74 l0.51-0.16l0.5-0.14c0.55-0.17,1.86-0.62,3.16-1.07c0.67-0.23,1.34-0.46,2.74-0.9l5.9-1.86l-0.01-0.02 c1.39-0.44,2.7-1.18,3.83-2.23h11.65c0.18,0,0.35-0.08,0.48-0.21c0.12-0.12,0.21-0.29,0.21-0.48V91.74L115.06,85.16L115.06,85.16z M19.51,92.45c-1.46,0-2.65-1.3-2.65-2.91s1.19-2.91,2.65-2.91h43.62l-1.53,5.82H19.51L19.51,92.45L19.51,92.45z M18.45,79.73 c-1.46,0-2.65-1.3-2.65-2.91c0-1.61,1.19-2.91,2.65-2.91h50.92c-0.56,0.37-1.1,0.81-1.6,1.31l-0.05,0.05 c-1.26,1.18-2.24,2.7-2.77,4.46H18.45L18.45,79.73L18.45,79.73z M16.49,34.55h29.25v29.51H16.49V34.55L16.49,34.55L16.49,34.55z M46.94,9.08c2.53,0,4.57,2.05,4.57,4.57c0,2.52-2.05,4.57-4.57,4.57c-2.52,0-4.57-2.05-4.57-4.57 C42.37,11.13,44.42,9.08,46.94,9.08L46.94,9.08L46.94,9.08z M30.96,9.08c2.53,0,4.57,2.05,4.57,4.57c0,2.52-2.05,4.57-4.57,4.57 c-2.53,0-4.57-2.05-4.57-4.57C26.39,11.13,28.44,9.08,30.96,9.08L30.96,9.08L30.96,9.08z M14.99,9.08c2.53,0,4.57,2.05,4.57,4.57 c0,2.52-2.05,4.57-4.57,4.57c-2.53,0-4.57-2.05-4.57-4.57C10.42,11.13,12.46,9.08,14.99,9.08L14.99,9.08L14.99,9.08z"/></g></svg>
\ No newline at end of file
diff --git a/ext_emconf.php b/ext_emconf.php
index a02c602c02e18ca365db44d5fea765221f7472b9..bc184f83df3740042ffa19b4a342ea432922b72c 100644
--- a/ext_emconf.php
+++ b/ext_emconf.php
@@ -3,7 +3,7 @@
 /***************************************************************
  * Extension Manager/Repository config file for ext: "nl_menubuilder"
  *
- * Auto generated by Extension Builder 2021-04-21
+ * Auto generated by Extension Builder 2021-04-22
  *
  * Manual updates:
  * Only the data in the array - anything else is removed by next write.
@@ -17,7 +17,7 @@ $EM_CONF[$_EXTKEY] = [
     'author' => '',
     'author_email' => '',
     'state' => 'alpha',
-    'uploadfolder' => 0,
+    'uploadfolder' => 1,
     'createDirs' => '',
     'clearCacheOnLoad' => 0,
     'version' => '1.0.0',
diff --git a/ext_localconf.php b/ext_localconf.php
index b3602e68695ffc7ba899c09dae84635e5fbb5537..088daf4d333fb1ec68c3d23719923b2b6e8827fb 100644
--- a/ext_localconf.php
+++ b/ext_localconf.php
@@ -3,12 +3,14 @@ defined('TYPO3_MODE') or die();
 
 $boot = function () {
     if (TYPO3_MODE === 'BE') {
+        $iconRegistry = \TYPO3\CMS\Core\Utility\GeneralUtility::makeInstance(\TYPO3\CMS\Core\Imaging\IconRegistry::class);
+
         $icons = [
-            'ext-menuitem-type-content' => 'tx_nlmenubuilder_domain_model_menuitemcontent.svg',
-            'ext-menuitem-type-page' => 'tx_nlmenubuilder_domain_model_menuitemcontent.svg',
-            'ext-menuitem-type-link' => 'tx_nlmenubuilder_domain_model_menuitemcontent.svg',
+            'ext-menubuilder-menuitem-type-page' => 'tx_nlmenubuilder_domain_model_menuitem-page.svg',
+            'ext-menubuilder-menuitem-type-link' => 'tx_nlmenubuilder_domain_model_menuitem-link.svg',
+            'ext-menubuilder-menuitem-type-content' => 'tx_nlmenubuilder_domain_model_menuitem-content.svg',
+            'ext-menubuilder-menuitem-type-submenu' => 'tx_nlmenubuilder_domain_model_menuitem-submenu.svg',
         ];
-        $iconRegistry = \TYPO3\CMS\Core\Utility\GeneralUtility::makeInstance(\TYPO3\CMS\Core\Imaging\IconRegistry::class);
 
         foreach ($icons as $identifier => $path) {
             if (!$iconRegistry->isRegistered($identifier)) {
diff --git a/ext_tables.sql b/ext_tables.sql
index 3372bc97d0bca6d32aa285db4ea70f99a0418109..508495d7de304f1f7ac376f75de0ff9e02b1bb22 100644
--- a/ext_tables.sql
+++ b/ext_tables.sql
@@ -4,8 +4,8 @@
 CREATE TABLE tx_nlmenubuilder_domain_model_menu (
 
 	title varchar(255) DEFAULT '' NOT NULL,
-	menu_item int(11) unsigned DEFAULT '0' NOT NULL,
-	menu_group int(11) unsigned DEFAULT '0'
+	menu_group int(11) unsigned DEFAULT '0',
+	menu_item int(11) unsigned DEFAULT '0' NOT NULL
 
 );
 
@@ -25,7 +25,14 @@ CREATE TABLE tx_nlmenubuilder_domain_model_menuitem (
 
 	menu int(11) unsigned DEFAULT '0' NOT NULL,
 
+	type int(11) DEFAULT '0' NOT NULL,
 	title varchar(255) DEFAULT '' NOT NULL,
-	type int(11) DEFAULT '0' NOT NULL
+	subtitle varchar(255) DEFAULT '' NOT NULL,
+	image int(11) unsigned NOT NULL default '0',
+	page varchar(255) DEFAULT '' NOT NULL,
+	link varchar(255) DEFAULT '' NOT NULL,
+	content text
 
 );
+
+## EXTENSION BUILDER DEFAULTS END TOKEN - Everything BEFORE this line is overwritten with the defaults of the extension builder
\ No newline at end of file