diff --git a/.gitignore b/.gitignore
new file mode 100644
index 0000000000000000000000000000000000000000..779e19d13e656b7de76b5744e5b5a15f0abdf0b9
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1,3 @@
+.idea
+.vscode
+/vendor/
diff --git a/Configuration/ExtensionBuilder/settings.yaml b/Configuration/ExtensionBuilder/settings.yaml
new file mode 100644
index 0000000000000000000000000000000000000000..dfc0588115ed87c6c9a5c9f6f49aab2ef905e61d
--- /dev/null
+++ b/Configuration/ExtensionBuilder/settings.yaml
@@ -0,0 +1,101 @@
+#
+# Extension Builder settings for extension nl_menubuilder
+# generated 2021-04-20T09:30:00Z
+#
+# See http://www.yaml.org/spec/1.2/spec.html
+#
+
+---
+
+###########    Overwrite settings  ###########
+#
+# These settings only apply, if the roundtrip feature of the extension builder
+# is enabled in the extension manager
+#
+# Usage:
+# nesting reflects the file structure
+# a setting applies to a file or recursive to all files and subfolders
+#
+# merge:
+#   means for classes: All properties ,methods and method bodies
+#   of the existing class will be modified according to the new settings
+#   but not overwritten
+#
+#   for locallang xlf files: Existing keys and labels are always
+#   preserved (renaming a property or DomainObject will result in new keys and new labels)
+#
+#   for other files: You will find a Split token at the end of the file
+#   see: \EBT\ExtensionBuilder\Service\RoundTrip::SPLIT_TOKEN
+#
+#   After this token you can write whatever you want and it will be appended
+#   everytime the code is generated
+#
+# keep:
+#   files are never overwritten
+#   These settings may break the functionality of the extension builder!
+#   Handle with care!
+#
+#
+
+############  extension settings  ##############
+
+overwriteSettings:
+  Classes:
+    Controller: merge
+    Domain:
+      Model: merge
+      Repository: merge
+
+  Configuration:
+    #TCA merge not possible - use overrides directory
+    #TypoScript: keep
+
+  Resources:
+    Private:
+      #Language: merge
+      #Templates: keep
+
+  user_extension.svg: keep
+
+#  ext_localconf.php: merge
+
+#  ext_tables.php: merge
+
+#  ext_tables.sql: merge
+
+## use static date attribute in xliff files ##
+#staticDateInXliffFiles: 2021-04-20T09:30:00Z
+
+## skip docComment (license header) ##
+#skipDocComment
+
+## list of error codes for warnings that should be ignored ##
+#ignoreWarnings:
+  #503
+
+######### settings for classBuilder #############################
+#
+# here you may define default parent classes for your classes
+# these settings only apply for new generated classes
+# you may also just change the parent class in the generated class file.
+# It will be kept on next code generation, if the overwrite settings
+# are configured to merge it
+#
+#################################################################
+
+classBuilder:
+
+  Controller:
+    parentClass: \TYPO3\CMS\Extbase\Mvc\Controller\ActionController
+
+  Model:
+    AbstractEntity:
+      parentClass: \TYPO3\CMS\Extbase\DomainObject\AbstractEntity
+
+    AbstractValueObject:
+      parentClass: \TYPO3\CMS\Extbase\DomainObject\AbstractValueObject
+
+  Repository:
+    parentClass: \TYPO3\CMS\Extbase\Persistence\Repository
+
+  setDefaultValuesForClassProperties: true
\ No newline at end of file
diff --git a/ExtensionBuilder.json b/ExtensionBuilder.json
new file mode 100644
index 0000000000000000000000000000000000000000..c2878b11cc2d55405e959341e70ea682f4b4276d
--- /dev/null
+++ b/ExtensionBuilder.json
@@ -0,0 +1,33 @@
+{
+    "modules": [],
+    "properties": {
+        "backendModules": [],
+        "description": "Menu Builder by netzlabor coding GmbH",
+        "emConf": {
+            "category": "plugin",
+            "custom_category": "",
+            "dependsOn": "typo3 => 9.5.0-9.5.99\n",
+            "disableLocalization": false,
+            "disableVersioning": false,
+            "skipGenerateDocumentationTemplate": false,
+            "sourceLanguage": "en",
+            "state": "alpha",
+            "targetVersion": "9.5.0-9.5.99",
+            "version": "1.0.0"
+        },
+        "extensionKey": "nl_menubuilder",
+        "name": "Menu Builder",
+        "originalExtensionKey": "nl_menubuilder",
+        "originalVendorName": "NL",
+        "persons": [],
+        "plugins": [],
+        "vendorName": "NL"
+    },
+    "wires": [],
+    "storagePath": "\/var\/www\/html\/public\/typo3conf\/ext\/",
+    "log": {
+        "last_modified": "2021-04-20 09:30",
+        "extension_builder_version": "9.10.3",
+        "be_user": " (1)"
+    }
+}
diff --git a/README.md b/README.md
index 3cc8860069697473a682dd5ccb46a4986c2880a4..9c86b61bf354935aab6345898e0725dc9001cb40 100644
--- a/README.md
+++ b/README.md
@@ -1,2 +1 @@
-# nl_menubuilder
-
+# Menu Builder by netzlabor coding GmbH
diff --git a/Resources/Private/.htaccess b/Resources/Private/.htaccess
new file mode 100644
index 0000000000000000000000000000000000000000..96d0729cec58415f32d64c14f02e2df1df9573f1
--- /dev/null
+++ b/Resources/Private/.htaccess
@@ -0,0 +1,11 @@
+# Apache < 2.3
+<IfModule !mod_authz_core.c>
+	Order allow,deny
+	Deny from all
+	Satisfy All
+</IfModule>
+
+# Apache >= 2.3
+<IfModule mod_authz_core.c>
+	Require all denied
+</IfModule>
diff --git a/Resources/Public/Icons/Extension.svg b/Resources/Public/Icons/Extension.svg
new file mode 100644
index 0000000000000000000000000000000000000000..5593ae4b97c9ba73d9f4c1699e0cad0e4f9836c7
--- /dev/null
+++ b/Resources/Public/Icons/Extension.svg
@@ -0,0 +1,45 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Generator: Adobe Illustrator 18.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0)  -->
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+<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 64 64" enable-background="new 0 0 64 64" xml:space="preserve">
+<g>
+	<g>
+		<g>
+			<path fill="#316CFF" d="M64,32c0,17.7-14.3,32-32,32S0,49.7,0,32S14.3,0,32,0S64,14.3,64,32z"/>
+		</g>
+	</g>
+	<g>
+		<g>
+			<g>
+				<rect x="24" y="19" fill="#FFFFFF" width="26" height="4"/>
+			</g>
+		</g>
+		<g>
+			<g>
+				<rect x="24" y="30" fill="#FFFFFF" width="26" height="4"/>
+			</g>
+		</g>
+		<g>
+			<g>
+				<rect x="24" y="41" fill="#FFFFFF" width="26" height="4"/>
+			</g>
+		</g>
+		<g>
+			<g>
+				<path fill="#FFFFFF" d="M17,24L17,24c1.7,0,3-1.3,3-3v0c0-1.7-1.3-3-3-3h0c-1.7,0-3,1.3-3,3v0C14,22.7,15.3,24,17,24z"/>
+			</g>
+		</g>
+		<g>
+			<g>
+				<path fill="#FFFFFF" d="M17,35L17,35c1.7,0,3-1.3,3-3v0c0-1.7-1.3-3-3-3h0c-1.7,0-3,1.3-3,3v0C14,33.7,15.3,35,17,35z"/>
+			</g>
+		</g>
+		<g>
+			<g>
+				<path fill="#FFFFFF" d="M17,46L17,46c1.7,0,3-1.3,3-3v0c0-1.7-1.3-3-3-3h0c-1.7,0-3,1.3-3,3v0C14,44.7,15.3,46,17,46z"/>
+			</g>
+		</g>
+	</g>
+</g>
+</svg>
diff --git a/composer.json b/composer.json
new file mode 100644
index 0000000000000000000000000000000000000000..3790001f5a730ec7c4f6e5fdcab743bbe4f162c1
--- /dev/null
+++ b/composer.json
@@ -0,0 +1,31 @@
+{
+    "name": "nl/nl-menubuilder",
+    "type": "typo3-cms-extension",
+    "description": "Menu Builder by netzlabor coding GmbH",
+	"version": "1.0.0",
+	"authors": [
+		{
+			"name": "Roman Derlemenko",
+			"email": "romanderlemenko@gmail.com",
+			"role": "Developer"
+		}
+	],
+	"require": {
+        "php": "^7.2",
+        "typo3/cms-core": "^9.5"
+    },
+    "autoload": {
+        "psr-4": {
+            "NL\\NlMenubuilder\\": "Classes"
+        }
+    },
+    "autoload-dev": {
+        "psr-4": {
+            "NL\\NlMenubuilder\\Tests\\": "Tests"
+        }
+    },
+    "replace": {
+        "nl/nl-menubuilder": "self.version",
+        "typo3-ter/nl-menubuilder": "self.version"
+    }
+}
diff --git a/ext_emconf.php b/ext_emconf.php
new file mode 100644
index 0000000000000000000000000000000000000000..633641e17b3dd77c71d139b410dd2f1405fd35aa
--- /dev/null
+++ b/ext_emconf.php
@@ -0,0 +1,31 @@
+<?php
+
+/***************************************************************
+ * Extension Manager/Repository config file for ext: "nl_menubuilder"
+ *
+ * Auto generated by Extension Builder 2021-04-20
+ *
+ * Manual updates:
+ * Only the data in the array - anything else is removed by next write.
+ * "version" and "dependencies" must not be touched!
+ ***************************************************************/
+
+$EM_CONF[$_EXTKEY] = [
+    'title' => 'Menu Builder',
+    'description' => 'Menu Builder by netzlabor coding GmbH',
+    'category' => 'plugin',
+    'author' => 'Roman Derlemenko',
+    'author_email' => 'romanderlemenko@gmail.com',
+    'state' => 'alpha',
+    'uploadfolder' => 0,
+    'createDirs' => '',
+    'clearCacheOnLoad' => 0,
+    'version' => '1.0.0',
+    'constraints' => [
+        'depends' => [
+            'typo3' => '9.5.0-9.5.99',
+        ],
+        'conflicts' => [],
+        'suggests' => [],
+    ],
+];
diff --git a/ext_tables.php b/ext_tables.php
new file mode 100644
index 0000000000000000000000000000000000000000..4d568c8b6e2e91c56d55bcae9c138f2d9db9971e
--- /dev/null
+++ b/ext_tables.php
@@ -0,0 +1,11 @@
+<?php
+defined('TYPO3_MODE') || die('Access denied.');
+
+call_user_func(
+    function()
+    {
+
+        \TYPO3\CMS\Core\Utility\ExtensionManagementUtility::addStaticFile('nl_menubuilder', 'Configuration/TypoScript', 'Menu Builder');
+
+    }
+);