diff --git a/.gitignore b/.gitignore
index 779e19d13e656b7de76b5744e5b5a15f0abdf0b9..629c2242031356f7de485a8625dcab3325c9b4ab 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,3 +1,7 @@
 .idea
 .vscode
 /vendor/
+/Documentation/
+/Tests/
+Documentation.tmpl
+
diff --git a/Classes/Domain/Model/Menu.php b/Classes/Domain/Model/Menu.php
new file mode 100644
index 0000000000000000000000000000000000000000..fd82a0d4a534d2f199ca96294128fd44d4e37544
--- /dev/null
+++ b/Classes/Domain/Model/Menu.php
@@ -0,0 +1,151 @@
+<?php
+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 
+ *
+ ***/
+/**
+ * Menu
+ */
+class Menu extends \TYPO3\CMS\Extbase\DomainObject\AbstractEntity
+{
+
+    /**
+     * Name of the menu
+     * 
+     * @var string
+     * @TYPO3\CMS\Extbase\Annotation\Validate("NotEmpty")
+     */
+    protected $title = '';
+
+    /**
+     * menuItem
+     * 
+     * @var \TYPO3\CMS\Extbase\Persistence\ObjectStorage<\NL\NlMenubuilder\Domain\Model\MenuItem>
+     * @TYPO3\CMS\Extbase\Annotation\ORM\Cascade("remove")
+     */
+    protected $menuItem = null;
+
+    /**
+     * menuGroup
+     * 
+     * @var \NL\NlMenubuilder\Domain\Model\MenuGroup
+     */
+    protected $menuGroup = null;
+
+    /**
+     * Returns the title
+     * 
+     * @return string $title
+     */
+    public function getTitle()
+    {
+        return $this->title;
+    }
+
+    /**
+     * Sets the title
+     * 
+     * @param string $title
+     * @return void
+     */
+    public function setTitle($title)
+    {
+        $this->title = $title;
+    }
+
+    /**
+     * __construct
+     */
+    public function __construct()
+    {
+
+        //Do not remove the next line: It would break the functionality
+        $this->initStorageObjects();
+    }
+
+    /**
+     * Initializes all ObjectStorage properties
+     * Do not modify this method!
+     * It will be rewritten on each save in the extension builder
+     * You may modify the constructor of this class instead
+     * 
+     * @return void
+     */
+    protected function initStorageObjects()
+    {
+        $this->menuItem = new \TYPO3\CMS\Extbase\Persistence\ObjectStorage();
+    }
+
+    /**
+     * Adds a MenuItem
+     * 
+     * @param \NL\NlMenubuilder\Domain\Model\MenuItem $menuItem
+     * @return void
+     */
+    public function addMenuItem(\NL\NlMenubuilder\Domain\Model\MenuItem $menuItem)
+    {
+        $this->menuItem->attach($menuItem);
+    }
+
+    /**
+     * Removes a MenuItem
+     * 
+     * @param \NL\NlMenubuilder\Domain\Model\MenuItem $menuItemToRemove The MenuItem to be removed
+     * @return void
+     */
+    public function removeMenuItem(\NL\NlMenubuilder\Domain\Model\MenuItem $menuItemToRemove)
+    {
+        $this->menuItem->detach($menuItemToRemove);
+    }
+
+    /**
+     * Returns the menuItem
+     * 
+     * @return \TYPO3\CMS\Extbase\Persistence\ObjectStorage<\NL\NlMenubuilder\Domain\Model\MenuItem> $menuItem
+     */
+    public function getMenuItem()
+    {
+        return $this->menuItem;
+    }
+
+    /**
+     * Sets the menuItem
+     * 
+     * @param \TYPO3\CMS\Extbase\Persistence\ObjectStorage<\NL\NlMenubuilder\Domain\Model\MenuItem> $menuItem
+     * @return void
+     */
+    public function setMenuItem(\TYPO3\CMS\Extbase\Persistence\ObjectStorage $menuItem)
+    {
+        $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/MenuGroup.php b/Classes/Domain/Model/MenuGroup.php
new file mode 100644
index 0000000000000000000000000000000000000000..e2cdd9f9d5166909fc0014d6a6441cd7c9884530
--- /dev/null
+++ b/Classes/Domain/Model/MenuGroup.php
@@ -0,0 +1,71 @@
+<?php
+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 
+ *
+ ***/
+/**
+ * MenuGroup
+ */
+class MenuGroup extends \TYPO3\CMS\Extbase\DomainObject\AbstractEntity
+{
+
+    /**
+     * Name of the menu group
+     * 
+     * @var string
+     * @TYPO3\CMS\Extbase\Annotation\Validate("NotEmpty")
+     */
+    protected $title = '';
+
+    /**
+     * __construct
+     */
+    public function __construct()
+    {
+
+        //Do not remove the next line: It would break the functionality
+        $this->initStorageObjects();
+    }
+
+    /**
+     * Initializes all ObjectStorage properties
+     * Do not modify this method!
+     * It will be rewritten on each save in the extension builder
+     * You may modify the constructor of this class instead
+     * 
+     * @return void
+     */
+    protected function initStorageObjects()
+    {
+    }
+
+    /**
+     * Returns the title
+     * 
+     * @return string title
+     */
+    public function getTitle()
+    {
+        return $this->title;
+    }
+
+    /**
+     * Sets the title
+     * 
+     * @param string $title
+     * @return void
+     */
+    public function setTitle($title)
+    {
+        $this->title = $title;
+    }
+}
diff --git a/Classes/Domain/Model/MenuItem.php b/Classes/Domain/Model/MenuItem.php
new file mode 100644
index 0000000000000000000000000000000000000000..a30f6671a43f42d4c7e8e5823e11bbeb3dc45842
--- /dev/null
+++ b/Classes/Domain/Model/MenuItem.php
@@ -0,0 +1,79 @@
+<?php
+namespace NL\NlMenubuilder\Domain\Model;
+
+use ReflectionClass;
+
+/***
+ *
+ * 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 
+ *
+ ***/
+/**
+ * MenuItem
+ */
+class MenuItem extends \TYPO3\CMS\Extbase\DomainObject\AbstractEntity
+{
+
+    /**
+     * Name of the menu item
+     * 
+     * @var string
+     * @TYPO3\CMS\Extbase\Annotation\Validate("NotEmpty")
+     */
+    protected $title = '';
+
+    /**
+     * type
+     * 
+     * @var int
+     * @TYPO3\CMS\Extbase\Annotation\Validate("NotEmpty")
+     */
+    protected $type = 0;
+
+    /**
+     * Returns the title
+     * 
+     * @return string $title
+     */
+    public function getTitle()
+    {
+        return $this->title;
+    }
+
+    /**
+     * Sets the title
+     * 
+     * @param string $title
+     * @return void
+     */
+    public function setTitle($title)
+    {
+        $this->title = $title;
+    }
+
+    /**
+     * Returns the type
+     * 
+     * @return int $type
+     */
+    public function getType()
+    {
+        return $this->type;
+    }
+
+    /**
+     * Sets the type
+     * 
+     * @param int $type
+     * @return void
+     */
+    public function setType($type)
+    {
+        $this->type = $type;
+    }
+}
diff --git a/Classes/Domain/Model/MenuItemContent.php b/Classes/Domain/Model/MenuItemContent.php
new file mode 100644
index 0000000000000000000000000000000000000000..a460f0c35348d38c499dada839c487b5c5ec2bd6
--- /dev/null
+++ b/Classes/Domain/Model/MenuItemContent.php
@@ -0,0 +1,56 @@
+<?php
+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
+ */
+class MenuItemContent extends MenuItem
+{
+    /**
+     * type
+     *
+     * @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;
+    }
+}
diff --git a/Classes/Domain/Model/MenuItemLink.php b/Classes/Domain/Model/MenuItemLink.php
new file mode 100644
index 0000000000000000000000000000000000000000..bb6639ada9a03e93dc818ffb426cc104f7ac9f50
--- /dev/null
+++ b/Classes/Domain/Model/MenuItemLink.php
@@ -0,0 +1,113 @@
+<?php
+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
+ */
+class MenuItemLink extends MenuItem
+{
+    /**
+     * type
+     *
+     * @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;
+    }
+}
diff --git a/Classes/Domain/Model/MenuItemPage.php b/Classes/Domain/Model/MenuItemPage.php
new file mode 100644
index 0000000000000000000000000000000000000000..ca5aa8b8aa63e094c4d7077eac8eb7df8dd44923
--- /dev/null
+++ b/Classes/Domain/Model/MenuItemPage.php
@@ -0,0 +1,113 @@
+<?php
+
+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
+ */
+class MenuItemPage extends MenuItem
+{
+    /**
+     * type
+     *
+     * @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;
+    }
+}
diff --git a/Classes/Domain/Repository/MenuGroupRepository.php b/Classes/Domain/Repository/MenuGroupRepository.php
new file mode 100644
index 0000000000000000000000000000000000000000..b399d90ab70953570d7fc85ef50557368b04053e
--- /dev/null
+++ b/Classes/Domain/Repository/MenuGroupRepository.php
@@ -0,0 +1,20 @@
+<?php
+namespace NL\NlMenubuilder\Domain\Repository;
+
+
+/***
+ *
+ * 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 
+ *
+ ***/
+/**
+ * The repository for MenuGroups
+ */
+class MenuGroupRepository extends \TYPO3\CMS\Extbase\Persistence\Repository
+{
+}
diff --git a/Classes/Domain/Repository/MenuItemRepository.php b/Classes/Domain/Repository/MenuItemRepository.php
new file mode 100644
index 0000000000000000000000000000000000000000..81f00f409db6f04e9a677130ae96fb98e4cecc69
--- /dev/null
+++ b/Classes/Domain/Repository/MenuItemRepository.php
@@ -0,0 +1,20 @@
+<?php
+namespace NL\NlMenubuilder\Domain\Repository;
+
+
+/***
+ *
+ * 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 
+ *
+ ***/
+/**
+ * The repository for MenuItems
+ */
+class MenuItemRepository extends \TYPO3\CMS\Extbase\Persistence\Repository
+{
+}
diff --git a/Classes/Domain/Repository/MenuRepository.php b/Classes/Domain/Repository/MenuRepository.php
new file mode 100644
index 0000000000000000000000000000000000000000..12eb34c82094cb51e4170b1828a4596df93dc642
--- /dev/null
+++ b/Classes/Domain/Repository/MenuRepository.php
@@ -0,0 +1,20 @@
+<?php
+namespace NL\NlMenubuilder\Domain\Repository;
+
+
+/***
+ *
+ * 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 
+ *
+ ***/
+/**
+ * The repository for Menus
+ */
+class MenuRepository extends \TYPO3\CMS\Extbase\Persistence\Repository
+{
+}
diff --git a/Configuration/Extbase/Persistence/Classes.php b/Configuration/Extbase/Persistence/Classes.php
new file mode 100644
index 0000000000000000000000000000000000000000..85d062938a60e88774f18e435e3966968fca8d1a
--- /dev/null
+++ b/Configuration/Extbase/Persistence/Classes.php
@@ -0,0 +1,25 @@
+<?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 dfc0588115ed87c6c9a5c9f6f49aab2ef905e61d..21967554aa995e85d67f6fe9d68a4b2d3350c2f4 100644
--- a/Configuration/ExtensionBuilder/settings.yaml
+++ b/Configuration/ExtensionBuilder/settings.yaml
@@ -51,13 +51,18 @@ overwriteSettings:
     #TypoScript: keep
 
   Resources:
+    Public:
+      Icons:
+        Extension.svg: keep
+        tx_nlmenubuilder_domain_model_menu.gif: keep
+        tx_nlmenubuilder_domain_model_menugroup.gif: keep
     Private:
       #Language: merge
       #Templates: keep
 
   user_extension.svg: keep
 
-#  ext_localconf.php: merge
+  ext_localconf.php: merge
 
 #  ext_tables.php: merge
 
@@ -98,4 +103,4 @@ classBuilder:
   Repository:
     parentClass: \TYPO3\CMS\Extbase\Persistence\Repository
 
-  setDefaultValuesForClassProperties: true
\ No newline at end of file
+  setDefaultValuesForClassProperties: true
diff --git a/Configuration/TCA/tx_nlmenubuilder_domain_model_content.php b/Configuration/TCA/tx_nlmenubuilder_domain_model_content.php
new file mode 100644
index 0000000000000000000000000000000000000000..170692891ede855906e796b29491f14f17f7c663
--- /dev/null
+++ b/Configuration/TCA/tx_nlmenubuilder_domain_model_content.php
@@ -0,0 +1,148 @@
+<?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
new file mode 100644
index 0000000000000000000000000000000000000000..7010c67502ac8ae4859413adff3c119810359d2b
--- /dev/null
+++ b/Configuration/TCA/tx_nlmenubuilder_domain_model_link.php
@@ -0,0 +1,200 @@
+<?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
new file mode 100644
index 0000000000000000000000000000000000000000..c0dd91c74106b7711d3d5c567efd2bd16e487057
--- /dev/null
+++ b/Configuration/TCA/tx_nlmenubuilder_domain_model_menu.php
@@ -0,0 +1,175 @@
+<?php
+return [
+    'ctrl' => [
+        'title' => 'LLL:EXT:nl_menubuilder/Resources/Private/Language/locallang_db.xlf:tx_nlmenubuilder_domain_model_menu',
+        '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_menu.gif'
+    ],
+    'interface' => [
+        'showRecordFieldList' => 'sys_language_uid, l10n_parent, l10n_diffsource, hidden, title, menu_item, menu_group',
+    ],
+    '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'],
+    ],
+    '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_menu',
+                'foreign_table_where' => 'AND {#tx_nlmenubuilder_domain_model_menu}.{#pid}=###CURRENT_PID### AND {#tx_nlmenubuilder_domain_model_menu}.{#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' => false,
+            'label' => 'LLL:EXT:nl_menubuilder/Resources/Private/Language/locallang_db.xlf:tx_nlmenubuilder_domain_model_menu.title',
+            'config' => [
+                'type' => 'input',
+                'size' => 30,
+                'eval' => 'trim,required'
+            ],
+        ],
+        'menu_item' => [
+            'exclude' => false,
+            'label' => 'LLL:EXT:nl_menubuilder/Resources/Private/Language/locallang_db.xlf:tx_nlmenubuilder_domain_model_menu.menu_item',
+            'config' => [
+                'type' => 'inline',
+                'foreign_table' => 'tx_nlmenubuilder_domain_model_menuitem',
+                'foreign_field' => 'menu',
+                'maxitems' => 9999,
+                'appearance' => [
+                    'collapseAll' => 0,
+                    'levelLinksPosition' => 'top',
+                    'showSynchronizationLink' => 1,
+                    'showPossibleLocalizationRecords' => 1,
+                    'showAllLocalizationLink' => 1
+                ],
+            ],
+
+        ],
+        '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_menugroup.php b/Configuration/TCA/tx_nlmenubuilder_domain_model_menugroup.php
new file mode 100644
index 0000000000000000000000000000000000000000..6bea82c00c6030f19926d44689014dd81a19fe28
--- /dev/null
+++ b/Configuration/TCA/tx_nlmenubuilder_domain_model_menugroup.php
@@ -0,0 +1,130 @@
+<?php
+return [
+    'ctrl' => [
+        'title' => 'LLL:EXT:nl_menubuilder/Resources/Private/Language/locallang_db.xlf:tx_nlmenubuilder_domain_model_menugroup',
+        '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_menugroup.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_menugroup',
+                'foreign_table_where' => 'AND {#tx_nlmenubuilder_domain_model_menugroup}.{#pid}=###CURRENT_PID### AND {#tx_nlmenubuilder_domain_model_menugroup}.{#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' => false,
+            'label' => 'LLL:EXT:nl_menubuilder/Resources/Private/Language/locallang_db.xlf:tx_nlmenubuilder_domain_model_menugroup.title',
+            'config' => [
+                'type' => 'input',
+                'size' => 30,
+                'eval' => 'trim'
+            ],
+        ],
+    
+    ],
+];
diff --git a/Configuration/TCA/tx_nlmenubuilder_domain_model_menuitem.php b/Configuration/TCA/tx_nlmenubuilder_domain_model_menuitem.php
new file mode 100644
index 0000000000000000000000000000000000000000..233f85c0f9b9d060d9141085880b00ad803adb66
--- /dev/null
+++ b/Configuration/TCA/tx_nlmenubuilder_domain_model_menuitem.php
@@ -0,0 +1,149 @@
+<?php
+return [
+    'ctrl' => [
+        'title' => 'LLL:EXT:nl_menubuilder/Resources/Private/Language/locallang_db.xlf:tx_nlmenubuilder_domain_model_menuitem',
+        '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_menuitem.gif'
+    ],
+    'interface' => [
+        'showRecordFieldList' => 'sys_language_uid, l10n_parent, l10n_diffsource, hidden, title, type',
+    ],
+    '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'],
+    ],
+    '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_menuitem',
+                'foreign_table_where' => 'AND {#tx_nlmenubuilder_domain_model_menuitem}.{#pid}=###CURRENT_PID### AND {#tx_nlmenubuilder_domain_model_menuitem}.{#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' => false,
+            'label' => 'LLL:EXT:nl_menubuilder/Resources/Private/Language/locallang_db.xlf:tx_nlmenubuilder_domain_model_menuitem.title',
+            'config' => [
+                'type' => 'input',
+                'size' => 30,
+                'eval' => 'trim,required'
+            ],
+        ],
+        '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' => [
+                    ['-- Label --', 0],
+                ],
+                'size' => 1,
+                'maxitems' => 1,
+                'eval' => 'required'
+            ],
+        ],
+    
+        'menu' => [
+            'config' => [
+                'type' => 'passthrough',
+            ],
+        ],
+    ],
+];
diff --git a/Configuration/TCA/tx_nlmenubuilder_domain_model_page.php b/Configuration/TCA/tx_nlmenubuilder_domain_model_page.php
new file mode 100644
index 0000000000000000000000000000000000000000..61533847739502d5b3e07dd50d543b2198b46a14
--- /dev/null
+++ b/Configuration/TCA/tx_nlmenubuilder_domain_model_page.php
@@ -0,0 +1,200 @@
+<?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
new file mode 100644
index 0000000000000000000000000000000000000000..68761784e4464df33696de7b5f4f702dbe8226e7
--- /dev/null
+++ b/Configuration/TCA/tx_nlmenubuilder_domain_model_submenu.php
@@ -0,0 +1,130 @@
+<?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 c2878b11cc2d55405e959341e70ea682f4b4276d..6836fe7d24e8b6d6345ad1a1c0609ae27728a428 100644
--- a/ExtensionBuilder.json
+++ b/ExtensionBuilder.json
@@ -1,5 +1,193 @@
 {
-    "modules": [],
+    "modules": [
+        {
+            "config": {
+                "position": [
+                    982,
+                    274
+                ]
+            },
+            "name": "New Model Object",
+            "value": {
+                "actionGroup": {
+                    "_default0_list": false,
+                    "_default1_show": false,
+                    "_default2_new_create": false,
+                    "_default3_edit_update": false,
+                    "_default4_delete": false,
+                    "customActions": []
+                },
+                "name": "Menu",
+                "objectsettings": {
+                    "addDeletedField": true,
+                    "addHiddenField": true,
+                    "addStarttimeEndtimeFields": true,
+                    "aggregateRoot": true,
+                    "categorizable": false,
+                    "description": "",
+                    "mapToTable": "",
+                    "parentClass": "",
+                    "sorting": false,
+                    "type": "Entity",
+                    "uid": "782096674115"
+                },
+                "propertyGroup": {
+                    "properties": [
+                        {
+                            "allowedFileTypes": "",
+                            "maxItems": "1",
+                            "propertyDescription": "Name of the menu",
+                            "propertyIsExcludeField": false,
+                            "propertyIsL10nModeExclude": false,
+                            "propertyIsRequired": true,
+                            "propertyName": "title",
+                            "propertyType": "String",
+                            "uid": "1605171702573"
+                        }
+                    ]
+                },
+                "relationGroup": {
+                    "relations": [
+                        {
+                            "foreignRelationClass": "",
+                            "lazyLoading": false,
+                            "propertyIsExcludeField": false,
+                            "relationDescription": "",
+                            "relationName": "menuItem",
+                            "relationType": "zeroToMany",
+                            "relationWire": "[wired]",
+                            "renderType": "inline",
+                            "uid": "498399672732"
+                        },
+                        {
+                            "foreignRelationClass": "",
+                            "lazyLoading": false,
+                            "propertyIsExcludeField": false,
+                            "relationDescription": "",
+                            "relationName": "menuGroup",
+                            "relationType": "manyToOne",
+                            "relationWire": "[wired]",
+                            "renderType": "selectMultipleSideBySide",
+                            "uid": "910633819500"
+                        }
+                    ]
+                }
+            }
+        },
+        {
+            "config": {
+                "position": [
+                    1258,
+                    14
+                ]
+            },
+            "name": "New Model Object",
+            "value": {
+                "actionGroup": {
+                    "_default0_list": false,
+                    "_default1_show": false,
+                    "_default2_new_create": false,
+                    "_default3_edit_update": false,
+                    "_default4_delete": false,
+                    "customActions": []
+                },
+                "name": "MenuGroup",
+                "objectsettings": {
+                    "addDeletedField": true,
+                    "addHiddenField": true,
+                    "addStarttimeEndtimeFields": true,
+                    "aggregateRoot": true,
+                    "categorizable": false,
+                    "description": "",
+                    "mapToTable": "",
+                    "parentClass": "",
+                    "sorting": false,
+                    "type": "Entity",
+                    "uid": "908718443858"
+                },
+                "propertyGroup": {
+                    "properties": [
+                        {
+                            "allowedFileTypes": "",
+                            "maxItems": "1",
+                            "propertyDescription": "Name of the menu group",
+                            "propertyIsExcludeField": false,
+                            "propertyIsL10nModeExclude": false,
+                            "propertyIsRequired": false,
+                            "propertyName": "title",
+                            "propertyType": "String",
+                            "uid": "1499991436488"
+                        }
+                    ]
+                },
+                "relationGroup": {
+                    "relations": []
+                }
+            }
+        },
+        {
+            "config": {
+                "position": [
+                    570,
+                    253
+                ]
+            },
+            "name": "New Model Object",
+            "value": {
+                "actionGroup": {
+                    "_default0_list": false,
+                    "_default1_show": false,
+                    "_default2_new_create": false,
+                    "_default3_edit_update": false,
+                    "_default4_delete": false,
+                    "customActions": []
+                },
+                "name": "MenuItem",
+                "objectsettings": {
+                    "addDeletedField": true,
+                    "addHiddenField": true,
+                    "addStarttimeEndtimeFields": true,
+                    "aggregateRoot": true,
+                    "categorizable": false,
+                    "description": "",
+                    "mapToTable": "",
+                    "parentClass": "",
+                    "sorting": false,
+                    "type": "Entity",
+                    "uid": "461753844786"
+                },
+                "propertyGroup": {
+                    "properties": [
+                        {
+                            "allowedFileTypes": "",
+                            "maxItems": "1",
+                            "propertyDescription": "Name of the menu item",
+                            "propertyIsExcludeField": false,
+                            "propertyIsL10nModeExclude": false,
+                            "propertyIsRequired": true,
+                            "propertyName": "title",
+                            "propertyType": "String",
+                            "uid": "1275033111048"
+                        },
+                        {
+                            "allowedFileTypes": "",
+                            "maxItems": "1",
+                            "propertyDescription": "",
+                            "propertyIsExcludeField": false,
+                            "propertyIsL10nModeExclude": false,
+                            "propertyIsRequired": true,
+                            "propertyName": "type",
+                            "propertyType": "Select",
+                            "uid": "907885444815"
+                        }
+                    ]
+                },
+                "relationGroup": {
+                    "relations": []
+                }
+            }
+        }
+    ],
     "properties": {
         "backendModules": [],
         "description": "Menu Builder by netzlabor coding GmbH",
@@ -23,11 +211,36 @@
         "plugins": [],
         "vendorName": "NL"
     },
-    "wires": [],
+    "wires": [
+        {
+            "src": {
+                "moduleId": 0,
+                "terminal": "relationWire_0",
+                "uid": "498399672732"
+            },
+            "tgt": {
+                "moduleId": 2,
+                "terminal": "SOURCES",
+                "uid": "461753844786"
+            }
+        },
+        {
+            "src": {
+                "moduleId": 0,
+                "terminal": "relationWire_1",
+                "uid": "910633819500"
+            },
+            "tgt": {
+                "moduleId": 1,
+                "terminal": "SOURCES",
+                "uid": "908718443858"
+            }
+        }
+    ],
     "storagePath": "\/var\/www\/html\/public\/typo3conf\/ext\/",
     "log": {
-        "last_modified": "2021-04-20 09:30",
+        "last_modified": "2021-04-21 02:54",
         "extension_builder_version": "9.10.3",
         "be_user": " (1)"
     }
-}
+}
\ No newline at end of file
diff --git a/Resources/Private/Language/locallang.xlf b/Resources/Private/Language/locallang.xlf
new file mode 100644
index 0000000000000000000000000000000000000000..e558e406ca77fded808b3f2640fc42bfced37190
--- /dev/null
+++ b/Resources/Private/Language/locallang.xlf
@@ -0,0 +1,35 @@
+<?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">
+		<header/>
+		<body>
+			<trans-unit id="tx_nlmenubuilder_domain_model_menu" resname="tx_nlmenubuilder_domain_model_menu">
+				<source>Menu</source>
+			</trans-unit>
+			<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_menugroup" resname="tx_nlmenubuilder_domain_model_menugroup">
+				<source>Menu Group</source>
+			</trans-unit>
+			<trans-unit id="tx_nlmenubuilder_domain_model_menugroup.title" resname="tx_nlmenubuilder_domain_model_menugroup.title">
+				<source>Title</source>
+			</trans-unit>
+			<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.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>
+		</body>
+	</file>
+</xliff>
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
new file mode 100644
index 0000000000000000000000000000000000000000..aa3a0d2f137e6de554e8a824b7117ecec14627cb
--- /dev/null
+++ b/Resources/Private/Language/locallang_csh_tx_nlmenubuilder_domain_model_content.xlf
@@ -0,0 +1,14 @@
+<?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
new file mode 100644
index 0000000000000000000000000000000000000000..d1bbe8e76ed6466dc6c400ba70eb06c6656f5b42
--- /dev/null
+++ b/Resources/Private/Language/locallang_csh_tx_nlmenubuilder_domain_model_link.xlf
@@ -0,0 +1,20 @@
+<?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
new file mode 100644
index 0000000000000000000000000000000000000000..d49c49ccf5badd58f39d81b95f70ae6f80b04108
--- /dev/null
+++ b/Resources/Private/Language/locallang_csh_tx_nlmenubuilder_domain_model_menu.xlf
@@ -0,0 +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">
+		<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>
+		</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
new file mode 100644
index 0000000000000000000000000000000000000000..e29c366f9dafae7eb2ef0474289c82fc861f210e
--- /dev/null
+++ b/Resources/Private/Language/locallang_csh_tx_nlmenubuilder_domain_model_menugroup.xlf
@@ -0,0 +1,11 @@
+<?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">
+		<header/>
+		<body>
+			<trans-unit id="title.description" resname="title.description">
+				<source>Name of the menu group</source>
+			</trans-unit>
+		</body>
+	</file>
+</xliff>
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
new file mode 100644
index 0000000000000000000000000000000000000000..12ff063c941a939c46a1cfe73094da35e0b2bfd5
--- /dev/null
+++ b/Resources/Private/Language/locallang_csh_tx_nlmenubuilder_domain_model_menuitem.xlf
@@ -0,0 +1,14 @@
+<?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">
+		<header/>
+		<body>
+			<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>
+		</body>
+	</file>
+</xliff>
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
new file mode 100644
index 0000000000000000000000000000000000000000..c33998f5eed27d8e016f5d0ab11c160adb33a7da
--- /dev/null
+++ b/Resources/Private/Language/locallang_csh_tx_nlmenubuilder_domain_model_page.xlf
@@ -0,0 +1,20 @@
+<?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
new file mode 100644
index 0000000000000000000000000000000000000000..aac877491cb00ce919f33f7d063642c79b06b771
--- /dev/null
+++ b/Resources/Private/Language/locallang_csh_tx_nlmenubuilder_domain_model_submenu.xlf
@@ -0,0 +1,11 @@
+<?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
new file mode 100644
index 0000000000000000000000000000000000000000..3fc1da7bde7a685f4f526f89094943e5a4b144c6
--- /dev/null
+++ b/Resources/Private/Language/locallang_db.xlf
@@ -0,0 +1,35 @@
+<?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">
+		<header/>
+		<body>
+			<trans-unit id="tx_nlmenubuilder_domain_model_menu" resname="tx_nlmenubuilder_domain_model_menu">
+				<source>Menu</source>
+			</trans-unit>
+			<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_menugroup" resname="tx_nlmenubuilder_domain_model_menugroup">
+				<source>Menu Group</source>
+			</trans-unit>
+			<trans-unit id="tx_nlmenubuilder_domain_model_menugroup.title" resname="tx_nlmenubuilder_domain_model_menugroup.title">
+				<source>Title</source>
+			</trans-unit>
+			<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.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>
+		</body>
+	</file>
+</xliff>
diff --git a/Resources/Public/Icons/relation.gif b/Resources/Public/Icons/relation.gif
new file mode 100644
index 0000000000000000000000000000000000000000..db61d7e18817e2969b740ccc62838a1447cd3c3c
Binary files /dev/null and b/Resources/Public/Icons/relation.gif differ
diff --git a/Resources/Public/Icons/tx_nlmenubuilder_domain_model_menu.gif b/Resources/Public/Icons/tx_nlmenubuilder_domain_model_menu.gif
new file mode 100644
index 0000000000000000000000000000000000000000..1750e037dd7ccd3a191cf9d8b1678f62d382034e
Binary files /dev/null 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
new file mode 100644
index 0000000000000000000000000000000000000000..0ab6cf613b32001577c3e24378ed67cfb10ef64a
Binary files /dev/null and b/Resources/Public/Icons/tx_nlmenubuilder_domain_model_menugroup.gif differ
diff --git a/Resources/Public/Icons/tx_nlmenubuilder_domain_model_menuitem.gif b/Resources/Public/Icons/tx_nlmenubuilder_domain_model_menuitem.gif
new file mode 100644
index 0000000000000000000000000000000000000000..6cc5f16355d84652db5ce39fcbc7256b7ea457cd
Binary files /dev/null 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
new file mode 100644
index 0000000000000000000000000000000000000000..ba78ed50d2057be43d84d5c11f54bec0ef562617
--- /dev/null
+++ b/Resources/Public/Icons/tx_nlmenubuilder_domain_model_menuitemcontent.svg
@@ -0,0 +1,3 @@
+<?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 633641e17b3dd77c71d139b410dd2f1405fd35aa..a02c602c02e18ca365db44d5fea765221f7472b9 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-20
+ * Auto generated by Extension Builder 2021-04-21
  *
  * Manual updates:
  * Only the data in the array - anything else is removed by next write.
@@ -14,8 +14,8 @@ $EM_CONF[$_EXTKEY] = [
     'title' => 'Menu Builder',
     'description' => 'Menu Builder by netzlabor coding GmbH',
     'category' => 'plugin',
-    'author' => 'Roman Derlemenko',
-    'author_email' => 'romanderlemenko@gmail.com',
+    'author' => '',
+    'author_email' => '',
     'state' => 'alpha',
     'uploadfolder' => 0,
     'createDirs' => '',
diff --git a/ext_localconf.php b/ext_localconf.php
new file mode 100644
index 0000000000000000000000000000000000000000..b3602e68695ffc7ba899c09dae84635e5fbb5537
--- /dev/null
+++ b/ext_localconf.php
@@ -0,0 +1,27 @@
+<?php
+defined('TYPO3_MODE') or die();
+
+$boot = function () {
+    if (TYPO3_MODE === 'BE') {
+        $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',
+        ];
+        $iconRegistry = \TYPO3\CMS\Core\Utility\GeneralUtility::makeInstance(\TYPO3\CMS\Core\Imaging\IconRegistry::class);
+
+        foreach ($icons as $identifier => $path) {
+            if (!$iconRegistry->isRegistered($identifier)) {
+                $iconRegistry->registerIcon(
+                    $identifier,
+                    \TYPO3\CMS\Core\Imaging\IconProvider\SvgIconProvider::class,
+                    ['source' => 'EXT:nl_menubuilder/Resources/Public/Icons/' . $path]
+                );
+            }
+        }
+    }
+};
+
+$boot();
+
+unset($boot);
diff --git a/ext_tables.php b/ext_tables.php
index 4d568c8b6e2e91c56d55bcae9c138f2d9db9971e..41d074abe233c85fceb1d56f99ce0edf35982e26 100644
--- a/ext_tables.php
+++ b/ext_tables.php
@@ -7,5 +7,14 @@ call_user_func(
 
         \TYPO3\CMS\Core\Utility\ExtensionManagementUtility::addStaticFile('nl_menubuilder', 'Configuration/TypoScript', 'Menu Builder');
 
+        \TYPO3\CMS\Core\Utility\ExtensionManagementUtility::addLLrefForTCAdescr('tx_nlmenubuilder_domain_model_menu', 'EXT:nl_menubuilder/Resources/Private/Language/locallang_csh_tx_nlmenubuilder_domain_model_menu.xlf');
+        \TYPO3\CMS\Core\Utility\ExtensionManagementUtility::allowTableOnStandardPages('tx_nlmenubuilder_domain_model_menu');
+
+        \TYPO3\CMS\Core\Utility\ExtensionManagementUtility::addLLrefForTCAdescr('tx_nlmenubuilder_domain_model_menugroup', 'EXT:nl_menubuilder/Resources/Private/Language/locallang_csh_tx_nlmenubuilder_domain_model_menugroup.xlf');
+        \TYPO3\CMS\Core\Utility\ExtensionManagementUtility::allowTableOnStandardPages('tx_nlmenubuilder_domain_model_menugroup');
+
+        \TYPO3\CMS\Core\Utility\ExtensionManagementUtility::addLLrefForTCAdescr('tx_nlmenubuilder_domain_model_menuitem', 'EXT:nl_menubuilder/Resources/Private/Language/locallang_csh_tx_nlmenubuilder_domain_model_menuitem.xlf');
+        \TYPO3\CMS\Core\Utility\ExtensionManagementUtility::allowTableOnStandardPages('tx_nlmenubuilder_domain_model_menuitem');
+
     }
 );
diff --git a/ext_tables.sql b/ext_tables.sql
new file mode 100644
index 0000000000000000000000000000000000000000..3372bc97d0bca6d32aa285db4ea70f99a0418109
--- /dev/null
+++ b/ext_tables.sql
@@ -0,0 +1,31 @@
+#
+# Table structure for table 'tx_nlmenubuilder_domain_model_menu'
+#
+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'
+
+);
+
+#
+# Table structure for table 'tx_nlmenubuilder_domain_model_menugroup'
+#
+CREATE TABLE tx_nlmenubuilder_domain_model_menugroup (
+
+	title varchar(255) DEFAULT '' NOT NULL
+
+);
+
+#
+# Table structure for table 'tx_nlmenubuilder_domain_model_menuitem'
+#
+CREATE TABLE tx_nlmenubuilder_domain_model_menuitem (
+
+	menu int(11) unsigned DEFAULT '0' NOT NULL,
+
+	title varchar(255) DEFAULT '' NOT NULL,
+	type int(11) DEFAULT '0' NOT NULL
+
+);