diff --git a/Build/Resources/Public/Less/TYPO3/_element_label.less b/Build/Resources/Public/Less/TYPO3/_element_label.less
index 27785bcaf43ab6df915fb77660e05d95b3e32e4f..60b4260d44689102327c298f6d54ab5c2b7d99bc 100644
--- a/Build/Resources/Public/Less/TYPO3/_element_label.less
+++ b/Build/Resources/Public/Less/TYPO3/_element_label.less
@@ -6,8 +6,9 @@
 .label-beta:extend(.label-warning){};
 .label-alpha:extend(.label-danger){};
 .label-obsolete:extend(.label-default){};
-.label-experimental:extend(.label-default){}
-.label-test:extend(.label-default){}
+.label-experimental:extend(.label-info){};
+.label-test:extend(.label-default){};
+.label-deprecated:extend(.label-danger){};
 .label-excludeFromUpdates:extend(.label-default){}
 
 .label-inline,
@@ -24,4 +25,4 @@
 }
 .label-space-right {
 	margin-right: 1em;
-}
\ No newline at end of file
+}
diff --git a/typo3/sysext/backend/Classes/Controller/Wizard/TableController.php b/typo3/sysext/backend/Classes/Controller/Wizard/TableController.php
index a096fc1a5fe0ef2e9fb7f4b738d963ad3d15cc7c..ba7289eb594698230c9b05a6d768ee02719ee89c 100644
--- a/typo3/sysext/backend/Classes/Controller/Wizard/TableController.php
+++ b/typo3/sysext/backend/Classes/Controller/Wizard/TableController.php
@@ -265,11 +265,8 @@ class TableController extends AbstractWizardController
     public function getConfigCode($row)
     {
         // Get delimiter settings
-        $flexForm = GeneralUtility::xml2array($row['pi_flexform']);
-        if (is_array($flexForm)) {
-            $this->tableParsing_quote = $flexForm['data']['s_parsing']['lDEF']['tableparsing_quote']['vDEF'] ? chr((int)$flexForm['data']['s_parsing']['lDEF']['tableparsing_quote']['vDEF']) : '';
-            $this->tableParsing_delimiter = $flexForm['data']['s_parsing']['lDEF']['tableparsing_delimiter']['vDEF'] ? chr((int)$flexForm['data']['s_parsing']['lDEF']['tableparsing_delimiter']['vDEF']) : '|';
-        }
+        $this->tableParsing_quote = $row['table_enclosure'] ? chr((int)$row['table_enclosure']) : '';
+        $this->tableParsing_delimiter = $row['table_delimiter'] ? chr((int)$row['table_delimiter']) : '|';
         // If some data has been submitted, then construct
         if (isset($this->TABLECFG['c'])) {
             // Process incoming:
diff --git a/typo3/sysext/backend/Classes/Tree/View/PagePositionMap.php b/typo3/sysext/backend/Classes/Tree/View/PagePositionMap.php
index 35e601d403df95cdebd4ed5c6ad34df829116b59..760bbcb20d4d195abc3cf7c0d1b5fee11dcb6b64 100644
--- a/typo3/sysext/backend/Classes/Tree/View/PagePositionMap.php
+++ b/typo3/sysext/backend/Classes/Tree/View/PagePositionMap.php
@@ -459,7 +459,7 @@ class PagePositionMap
                     } elseif ($columnConfig['colPos']) {
                         $table .= '<em>' . $this->wrapColumnHeader($this->getLanguageService()->getLL('noAccess'), '', '') . '</em>';
                     } else {
-                        $table .= '<em>' . $this->wrapColumnHeader(($columnConfig['name']?: '') . ' (' . $this->getLanguageService()->getLL('notAssigned') . ')', '', '') . '</em>';
+                        $table .= '<em>' . $this->wrapColumnHeader(($this->getLanguageService()->sL($columnConfig['name']) ?: '') . ' (' . $this->getLanguageService()->getLL('notAssigned') . ')', '', '') . '</em>';
                     }
                     $table .= '</p>';
                     // Render lines
diff --git a/typo3/sysext/backend/Configuration/PageTSconfig/NewContentElementWizard.ts b/typo3/sysext/backend/Configuration/PageTSconfig/NewContentElementWizard.ts
deleted file mode 100644
index b0ddf1c9c80fc7f738d3ca82a946eb2046e42c93..0000000000000000000000000000000000000000
--- a/typo3/sysext/backend/Configuration/PageTSconfig/NewContentElementWizard.ts
+++ /dev/null
@@ -1,16 +0,0 @@
-# dummy placeholders for item groups
-mod.wizards.newContentElement.wizardItems {
-	common.header = LLL:EXT:backend/Resources/Private/Language/locallang_db_new_content_el.xlf:common
-	special.header = LLL:EXT:backend/Resources/Private/Language/locallang_db_new_content_el.xlf:special
-	forms.header = LLL:EXT:backend/Resources/Private/Language/locallang_db_new_content_el.xlf:forms
-	plugins.header = LLL:EXT:backend/Resources/Private/Language/locallang_db_new_content_el.xlf:plugins
-	plugins.elements {
-		general {
-			iconIdentifier = content-plugin
-			title = LLL:EXT:backend/Resources/Private/Language/locallang_db_new_content_el.xlf:plugins_general_title
-			description = LLL:EXT:backend/Resources/Private/Language/locallang_db_new_content_el.xlf:plugins_general_description
-			tt_content_defValues.CType = list
-		}
-	}
-	plugins.show = *
-}
diff --git a/typo3/sysext/backend/Configuration/TSconfig/Page/Mod/Wizards/NewContentElement.ts b/typo3/sysext/backend/Configuration/TSconfig/Page/Mod/Wizards/NewContentElement.ts
new file mode 100644
index 0000000000000000000000000000000000000000..ddc975701ab963e14adba783ded22b1817b41329
--- /dev/null
+++ b/typo3/sysext/backend/Configuration/TSconfig/Page/Mod/Wizards/NewContentElement.ts
@@ -0,0 +1,17 @@
+# dummy placeholders for item groups
+mod.wizards.newContentElement.wizardItems {
+    common.header = LLL:EXT:backend/Resources/Private/Language/locallang_db_new_content_el.xlf:common
+    menu.header = LLL:EXT:backend/Resources/Private/Language/locallang_db_new_content_el.xlf:menu
+    special.header = LLL:EXT:backend/Resources/Private/Language/locallang_db_new_content_el.xlf:special
+    forms.header = LLL:EXT:backend/Resources/Private/Language/locallang_db_new_content_el.xlf:forms
+    plugins.header = LLL:EXT:backend/Resources/Private/Language/locallang_db_new_content_el.xlf:plugins
+    plugins.elements {
+        general {
+            iconIdentifier = content-plugin
+            title = LLL:EXT:backend/Resources/Private/Language/locallang_db_new_content_el.xlf:plugins_general_title
+            description = LLL:EXT:backend/Resources/Private/Language/locallang_db_new_content_el.xlf:plugins_general_description
+            tt_content_defValues.CType = list
+        }
+    }
+    plugins.show = *
+}
diff --git a/typo3/sysext/backend/Configuration/UserTSconfig/Options.ts b/typo3/sysext/backend/Configuration/TSconfig/User/Options.ts
similarity index 100%
rename from typo3/sysext/backend/Configuration/UserTSconfig/Options.ts
rename to typo3/sysext/backend/Configuration/TSconfig/User/Options.ts
diff --git a/typo3/sysext/backend/Resources/Private/Language/locallang_db_new_content_el.xlf b/typo3/sysext/backend/Resources/Private/Language/locallang_db_new_content_el.xlf
index f1e74898f60a706b4a2c2f4d49df56251e0ca263..2a434a66abfe7613d96e8b11443e2e5b6d5949e8 100644
--- a/typo3/sysext/backend/Resources/Private/Language/locallang_db_new_content_el.xlf
+++ b/typo3/sysext/backend/Resources/Private/Language/locallang_db_new_content_el.xlf
@@ -54,6 +54,75 @@
 			<trans-unit id="common_table_description">
 				<source>A simple table.</source>
 			</trans-unit>
+			<trans-unit id="menu">
+				<source>Menu</source>
+			</trans-unit>
+			<trans-unit id="menu_abstract.title">
+				<source>Abstracts</source>
+			</trans-unit>
+			<trans-unit id="menu_abstract.description">
+				<source>Menu of subpages of selected pages including abstracts</source>
+			</trans-unit>
+			<trans-unit id="menu_categorized_content.title">
+				<source>Categorized content</source>
+			</trans-unit>
+			<trans-unit id="menu_categorized_content.description">
+				<source>Content elements for selected categories</source>
+			</trans-unit>
+			<trans-unit id="menu_categorized_pages.title">
+				<source>Categorized pages</source>
+			</trans-unit>
+			<trans-unit id="menu_pages.title">
+				<source>Pages</source>
+			</trans-unit>
+			<trans-unit id="menu_pages.description">
+				<source>Menu of selected pages</source>
+			</trans-unit>
+			<trans-unit id="menu_subpages.title">
+				<source>Subpages</source>
+			</trans-unit>
+			<trans-unit id="menu_subpages.description">
+				<source>Menu of subpages of selected pages</source>
+			</trans-unit>
+			<trans-unit id="menu_categorized_pages.description">
+				<source>Pages for selected categories</source>
+			</trans-unit>
+			<trans-unit id="menu_recently_updated.title">
+				<source>Recently updated pages</source>
+			</trans-unit>
+			<trans-unit id="menu_recently_updated.description">
+				<source>Menu of recenlty updated pages</source>
+			</trans-unit>
+			<trans-unit id="menu_related_pages.title">
+				<source>Related pages</source>
+			</trans-unit>
+			<trans-unit id="menu_related_pages.description">
+				<source>Menu of related pages based on keywords</source>
+			</trans-unit>
+			<trans-unit id="menu_section.title">
+				<source>Section index</source>
+			</trans-unit>
+			<trans-unit id="menu_section.description">
+				<source>Page content marked for section menus</source>
+			</trans-unit>
+			<trans-unit id="menu_section_pages.title">
+				<source>Section index of subpages from selected pages</source>
+			</trans-unit>
+			<trans-unit id="menu_section_pages.description">
+				<source>Menu of subpages of selected pages including sections</source>
+			</trans-unit>
+			<trans-unit id="menu_sitemap.title">
+				<source>Sitemap</source>
+			</trans-unit>
+			<trans-unit id="menu_sitemap.description">
+				<source>Expanded menu of all pages and subpages for selected pages</source>
+			</trans-unit>
+			<trans-unit id="menu_sitemap_pages.title">
+				<source>Sitemaps of selected pages</source>
+			</trans-unit>
+			<trans-unit id="menu_sitemap_pages.description">
+				<source>Expanded menu of all subpages for selected pages</source>
+			</trans-unit>
 			<trans-unit id="special">
 				<source>Special elements</source>
 			</trans-unit>
diff --git a/typo3/sysext/backend/Resources/Public/Css/backend.css b/typo3/sysext/backend/Resources/Public/Css/backend.css
index 9e43e99d381eb8e2d0826c2a255b297b903bcbba..782f3f054f5cfa357f2359f4910c0806ccbbe2f5 100644
--- a/typo3/sysext/backend/Resources/Public/Css/backend.css
+++ b/typo3/sysext/backend/Resources/Public/Css/backend.css
@@ -320,7 +320,8 @@ th {
 :root .fa-rotate-270,
 :root .fa-flip-horizontal,
 :root .fa-flip-vertical {
-  filter: none;
+  -webkit-filter: none;
+          filter: none;
 }
 .fa-stack {
   position: relative;
@@ -5726,7 +5727,6 @@ a.label:focus {
 }
 .label-default,
 .label-obsolete,
-.label-experimental,
 .label-test,
 .label-excludeFromUpdates {
   background-color: #d7d7d7;
@@ -5750,7 +5750,8 @@ a.label:focus {
 .label-success[href]:focus {
   background-color: #5f8139;
 }
-.label-info {
+.label-info,
+.label-experimental {
   background-color: #6daae0;
 }
 .label-info[href]:hover,
@@ -5766,7 +5767,8 @@ a.label:focus {
   background-color: #d88b1a;
 }
 .label-danger,
-.label-alpha {
+.label-alpha,
+.label-deprecated {
   background-color: #c83c3c;
 }
 .label-danger[href]:hover,
@@ -8901,7 +8903,7 @@ div.dropdown-menu {
 }
 /*!
  * Datetimepicker for Bootstrap 3
- * version : 4.17.44
+ * version : 4.17.42
  * https://github.com/Eonasdan/bootstrap-datetimepicker/
  */
 .bootstrap-datetimepicker-widget {
diff --git a/typo3/sysext/backend/ext_localconf.php b/typo3/sysext/backend/ext_localconf.php
index a10532d6c4dfe930f2978ae6e3534026267889be..52191c95cec796e832ba5cb3380c046096014b3d 100644
--- a/typo3/sysext/backend/ext_localconf.php
+++ b/typo3/sysext/backend/ext_localconf.php
@@ -40,5 +40,5 @@ $GLOBALS['TYPO3_CONF_VARS']['SC_OPTIONS']['t3lib/class.t3lib_tsfebeuserauth.php'
 $GLOBALS['TYPO3_CONF_VARS']['SYS']['livesearch']['page'] = 'pages';
 
 // Include base TSconfig setup
-\TYPO3\CMS\Core\Utility\ExtensionManagementUtility::addPageTSConfig('<INCLUDE_TYPOSCRIPT: source="FILE:EXT:backend/Configuration/PageTSconfig/NewContentElementWizard.ts">');
-\TYPO3\CMS\Core\Utility\ExtensionManagementUtility::addUserTSConfig('<INCLUDE_TYPOSCRIPT: source="FILE:EXT:backend/Configuration/UserTSconfig/Options.ts">');
+\TYPO3\CMS\Core\Utility\ExtensionManagementUtility::addPageTSConfig('<INCLUDE_TYPOSCRIPT: source="FILE:EXT:backend/Configuration/TSconfig/Page/Mod/Wizards/NewContentElement.ts">');
+\TYPO3\CMS\Core\Utility\ExtensionManagementUtility::addUserTSConfig('<INCLUDE_TYPOSCRIPT: source="FILE:EXT:backend/Configuration/TSconfig/User/Options.ts">');
diff --git a/typo3/sysext/fluid_styled_content/Classes/ViewHelpers/Menu/AbstractMenuViewHelper.php b/typo3/sysext/compatibility7/Classes/ViewHelpers/Menu/AbstractMenuViewHelper.php
similarity index 98%
rename from typo3/sysext/fluid_styled_content/Classes/ViewHelpers/Menu/AbstractMenuViewHelper.php
rename to typo3/sysext/compatibility7/Classes/ViewHelpers/Menu/AbstractMenuViewHelper.php
index 5a50de01c53cbe2b53d90d57ca43c2f26ae3323e..f6414373e5ed3d5b561aef4dfd9610e9731d44e7 100644
--- a/typo3/sysext/fluid_styled_content/Classes/ViewHelpers/Menu/AbstractMenuViewHelper.php
+++ b/typo3/sysext/compatibility7/Classes/ViewHelpers/Menu/AbstractMenuViewHelper.php
@@ -1,5 +1,5 @@
 <?php
-namespace TYPO3\CMS\FluidStyledContent\ViewHelpers\Menu;
+namespace TYPO3\CMS\Compatibility7\ViewHelpers\Menu;
 
 /*
  * This file is part of the TYPO3 CMS project.
diff --git a/typo3/sysext/fluid_styled_content/Classes/ViewHelpers/Menu/CategoriesViewHelper.php b/typo3/sysext/compatibility7/Classes/ViewHelpers/Menu/CategoriesViewHelper.php
similarity index 98%
rename from typo3/sysext/fluid_styled_content/Classes/ViewHelpers/Menu/CategoriesViewHelper.php
rename to typo3/sysext/compatibility7/Classes/ViewHelpers/Menu/CategoriesViewHelper.php
index e3c3e67b00249264c35a020b4efee47b40377f1e..8155be0b0d93e44d3580509715066f15e485245a 100644
--- a/typo3/sysext/fluid_styled_content/Classes/ViewHelpers/Menu/CategoriesViewHelper.php
+++ b/typo3/sysext/compatibility7/Classes/ViewHelpers/Menu/CategoriesViewHelper.php
@@ -1,5 +1,5 @@
 <?php
-namespace TYPO3\CMS\FluidStyledContent\ViewHelpers\Menu;
+namespace TYPO3\CMS\Compatibility7\ViewHelpers\Menu;
 
 /*
  * This file is part of the TYPO3 CMS project.
diff --git a/typo3/sysext/fluid_styled_content/Classes/ViewHelpers/Menu/DirectoryViewHelper.php b/typo3/sysext/compatibility7/Classes/ViewHelpers/Menu/DirectoryViewHelper.php
similarity index 98%
rename from typo3/sysext/fluid_styled_content/Classes/ViewHelpers/Menu/DirectoryViewHelper.php
rename to typo3/sysext/compatibility7/Classes/ViewHelpers/Menu/DirectoryViewHelper.php
index be0eaa89557b4081d509ed309296dc84194b25e1..e79a23897c0d613c614639d0f7eb5d100c6362ea 100644
--- a/typo3/sysext/fluid_styled_content/Classes/ViewHelpers/Menu/DirectoryViewHelper.php
+++ b/typo3/sysext/compatibility7/Classes/ViewHelpers/Menu/DirectoryViewHelper.php
@@ -1,5 +1,5 @@
 <?php
-namespace TYPO3\CMS\FluidStyledContent\ViewHelpers\Menu;
+namespace TYPO3\CMS\Compatibility7\ViewHelpers\Menu;
 
 /*
  * This file is part of the TYPO3 CMS project.
diff --git a/typo3/sysext/fluid_styled_content/Classes/ViewHelpers/Menu/KeywordsViewHelper.php b/typo3/sysext/compatibility7/Classes/ViewHelpers/Menu/KeywordsViewHelper.php
similarity index 99%
rename from typo3/sysext/fluid_styled_content/Classes/ViewHelpers/Menu/KeywordsViewHelper.php
rename to typo3/sysext/compatibility7/Classes/ViewHelpers/Menu/KeywordsViewHelper.php
index 19c2f243c96b3b2d7e9ded18b0dd1e44ee5d3d52..43d71abfd8a84f6916a0befd9606426ad8deaa9b 100644
--- a/typo3/sysext/fluid_styled_content/Classes/ViewHelpers/Menu/KeywordsViewHelper.php
+++ b/typo3/sysext/compatibility7/Classes/ViewHelpers/Menu/KeywordsViewHelper.php
@@ -1,5 +1,5 @@
 <?php
-namespace TYPO3\CMS\FluidStyledContent\ViewHelpers\Menu;
+namespace TYPO3\CMS\Compatibility7\ViewHelpers\Menu;
 
 /*
  * This file is part of the TYPO3 CMS project.
diff --git a/typo3/sysext/fluid_styled_content/Classes/ViewHelpers/Menu/ListViewHelper.php b/typo3/sysext/compatibility7/Classes/ViewHelpers/Menu/ListViewHelper.php
similarity index 98%
rename from typo3/sysext/fluid_styled_content/Classes/ViewHelpers/Menu/ListViewHelper.php
rename to typo3/sysext/compatibility7/Classes/ViewHelpers/Menu/ListViewHelper.php
index 3f528299929040025da3f35505ea6c32b71d98be..f52eb57d495e30dfe1590fd0bada202f10c0eae1 100644
--- a/typo3/sysext/fluid_styled_content/Classes/ViewHelpers/Menu/ListViewHelper.php
+++ b/typo3/sysext/compatibility7/Classes/ViewHelpers/Menu/ListViewHelper.php
@@ -1,5 +1,5 @@
 <?php
-namespace TYPO3\CMS\FluidStyledContent\ViewHelpers\Menu;
+namespace TYPO3\CMS\Compatibility7\ViewHelpers\Menu;
 
 /*
  * This file is part of the TYPO3 CMS project.
diff --git a/typo3/sysext/fluid_styled_content/Classes/ViewHelpers/Menu/MenuViewHelperTrait.php b/typo3/sysext/compatibility7/Classes/ViewHelpers/Menu/MenuViewHelperTrait.php
similarity index 98%
rename from typo3/sysext/fluid_styled_content/Classes/ViewHelpers/Menu/MenuViewHelperTrait.php
rename to typo3/sysext/compatibility7/Classes/ViewHelpers/Menu/MenuViewHelperTrait.php
index 5f9675ba506543f223fad3b011ba50ca938f0453..da1566e02b71b48016181b9f2c0ded1dd5fffe6c 100644
--- a/typo3/sysext/fluid_styled_content/Classes/ViewHelpers/Menu/MenuViewHelperTrait.php
+++ b/typo3/sysext/compatibility7/Classes/ViewHelpers/Menu/MenuViewHelperTrait.php
@@ -1,5 +1,5 @@
 <?php
-namespace TYPO3\CMS\FluidStyledContent\ViewHelpers\Menu;
+namespace TYPO3\CMS\Compatibility7\ViewHelpers\Menu;
 
 /*
  * This file is part of the TYPO3 CMS project.
diff --git a/typo3/sysext/fluid_styled_content/Classes/ViewHelpers/Menu/SectionViewHelper.php b/typo3/sysext/compatibility7/Classes/ViewHelpers/Menu/SectionViewHelper.php
similarity index 98%
rename from typo3/sysext/fluid_styled_content/Classes/ViewHelpers/Menu/SectionViewHelper.php
rename to typo3/sysext/compatibility7/Classes/ViewHelpers/Menu/SectionViewHelper.php
index cff7ae6fadabadb484092567e3cebf2bddde14d1..e5de6da178b741ad3877b12f0e8f9300932041aa 100644
--- a/typo3/sysext/fluid_styled_content/Classes/ViewHelpers/Menu/SectionViewHelper.php
+++ b/typo3/sysext/compatibility7/Classes/ViewHelpers/Menu/SectionViewHelper.php
@@ -1,5 +1,5 @@
 <?php
-namespace TYPO3\CMS\FluidStyledContent\ViewHelpers\Menu;
+namespace TYPO3\CMS\Compatibility7\ViewHelpers\Menu;
 
 /*
  * This file is part of the TYPO3 CMS project.
diff --git a/typo3/sysext/fluid_styled_content/Classes/ViewHelpers/Menu/UpdatedViewHelper.php b/typo3/sysext/compatibility7/Classes/ViewHelpers/Menu/UpdatedViewHelper.php
similarity index 98%
rename from typo3/sysext/fluid_styled_content/Classes/ViewHelpers/Menu/UpdatedViewHelper.php
rename to typo3/sysext/compatibility7/Classes/ViewHelpers/Menu/UpdatedViewHelper.php
index 95471a19144f5889a158a72763e447dcb3664aa0..9a590d54d74d6d72ae905b776af05e13e5f1aa34 100644
--- a/typo3/sysext/fluid_styled_content/Classes/ViewHelpers/Menu/UpdatedViewHelper.php
+++ b/typo3/sysext/compatibility7/Classes/ViewHelpers/Menu/UpdatedViewHelper.php
@@ -1,5 +1,5 @@
 <?php
-namespace TYPO3\CMS\FluidStyledContent\ViewHelpers\Menu;
+namespace TYPO3\CMS\Compatibility7\ViewHelpers\Menu;
 
 /*
  * This file is part of the TYPO3 CMS project.
diff --git a/typo3/sysext/compatibility7/Configuration/PageTS/Mod/Wizards/NewContentElementMenu.txt b/typo3/sysext/compatibility7/Configuration/PageTS/Mod/Wizards/NewContentElementMenu.txt
new file mode 100644
index 0000000000000000000000000000000000000000..08430a55b129a99fe2b89642d432eca4504df6f8
--- /dev/null
+++ b/typo3/sysext/compatibility7/Configuration/PageTS/Mod/Wizards/NewContentElementMenu.txt
@@ -0,0 +1,17 @@
+#
+# Define content elements in "New Content Element Wizard"
+#
+mod.wizards.newContentElement.wizardItems {
+    menu.elements {
+        menu {
+            iconIdentifier = content-special-menu
+            title = LLL:EXT:backend/Resources/Private/Language/locallang_db_new_content_el.xlf:special_menus_title
+            description = LLL:EXT:backend/Resources/Private/Language/locallang_db_new_content_el.xlf:special_menus_description
+            tt_content_defValues {
+                CType = menu
+                menu_type = 0
+            }
+        }
+    }
+    menu.show := addToList(menu)
+}
diff --git a/typo3/sysext/compatibility7/Configuration/TCA/Overrides/sys_template.php b/typo3/sysext/compatibility7/Configuration/TCA/Overrides/sys_template.php
new file mode 100644
index 0000000000000000000000000000000000000000..57adc0cf0e8d955e558f7412374645894758d34f
--- /dev/null
+++ b/typo3/sysext/compatibility7/Configuration/TCA/Overrides/sys_template.php
@@ -0,0 +1,17 @@
+<?php
+defined('TYPO3_MODE') or die();
+
+if (\TYPO3\CMS\Core\Utility\ExtensionManagementUtility::isLoaded('css_styled_content')) {
+    \TYPO3\CMS\Core\Utility\ExtensionManagementUtility::addStaticFile(
+        'compatibility7',
+        'Configuration/TypoScript/ContentElement/CssStyledContent/',
+        'CSS Styled Content TYPO3 v7'
+    );
+}
+if (\TYPO3\CMS\Core\Utility\ExtensionManagementUtility::isLoaded('fluid_styled_content')) {
+    \TYPO3\CMS\Core\Utility\ExtensionManagementUtility::addStaticFile(
+        'compatibility7',
+        'Configuration/TypoScript/ContentElement/FluidStyledContent/',
+        'Fluid Styled Content TYPO3 v7'
+    );
+}
diff --git a/typo3/sysext/compatibility7/Configuration/TCA/Overrides/tt_content.php b/typo3/sysext/compatibility7/Configuration/TCA/Overrides/tt_content.php
index 2bd8202242c13f50ca985b3233c3b1b2e24a4599..12788252aa51cf2d2a60d4a245d64f4b811ef4a0 100644
--- a/typo3/sysext/compatibility7/Configuration/TCA/Overrides/tt_content.php
+++ b/typo3/sysext/compatibility7/Configuration/TCA/Overrides/tt_content.php
@@ -19,7 +19,10 @@ $fields = [
 
 // Register "old" FE plugin and hide layout, select_key and pages fields in BE
 \TYPO3\CMS\Core\Utility\ExtensionManagementUtility::addPlugin(
-    ['LLL:EXT:indexed_search/Resources/Private/Language/locallang_main.xlf:mod_indexed_search', 'indexed_search'],
+    [
+        'LLL:EXT:indexed_search/Resources/Private/Language/locallang_main.xlf:mod_indexed_search',
+        'indexed_search'
+    ],
     'list_type',
     'indexed_search'
 );
diff --git a/typo3/sysext/compatibility7/Configuration/TCA/Overrides/tt_content_element_menu.php b/typo3/sysext/compatibility7/Configuration/TCA/Overrides/tt_content_element_menu.php
new file mode 100644
index 0000000000000000000000000000000000000000..149cc6d6159164e6842c9b4dbcc1db76115d1cf6
--- /dev/null
+++ b/typo3/sysext/compatibility7/Configuration/TCA/Overrides/tt_content_element_menu.php
@@ -0,0 +1,119 @@
+<?php
+defined('TYPO3_MODE') or die();
+
+call_user_func(function () {
+    // Add the CType
+    \TYPO3\CMS\Core\Utility\ExtensionManagementUtility::addTcaSelectItem(
+        'tt_content',
+        'CType',
+        [
+            'LLL:EXT:frontend/Resources/Private/Language/locallang_ttc.xlf:CType.I.12',
+            'menu',
+            'content-special-menu'
+        ],
+        'shortcut',
+        'before'
+    );
+    $GLOBALS['TCA']['tt_content']['ctrl']['requestUpdate'] .= ',menu_type';
+    $GLOBALS['TCA']['tt_content']['ctrl']['typeicon_classes']['menu'] = 'content-special-menu';
+    $GLOBALS['TCA']['tt_content']['palettes']['menu'] = [
+        'showitem' => '
+            menu_type;LLL:EXT:frontend/Resources/Private/Language/locallang_ttc.xlf:menu_type_formlabel,
+            --linebreak--,
+            pages;LLL:EXT:frontend/Resources/Private/Language/locallang_ttc.xlf:pages.ALT.menu_formlabel
+        ',
+    ];
+    $GLOBALS['TCA']['tt_content']['types']['menu'] = [
+        'showitem' => '
+            --div--;LLL:EXT:core/Resources/Private/Language/Form/locallang_tabs.xlf:general,
+                --palette--;LLL:EXT:frontend/Resources/Private/Language/locallang_ttc.xlf:palette.general;general,
+                --palette--;LLL:EXT:frontend/Resources/Private/Language/locallang_ttc.xlf:palette.header;header,
+                --palette--;LLL:EXT:frontend/Resources/Private/Language/locallang_ttc.xlf:palette.menu;menu,
+            --div--;LLL:EXT:frontend/Resources/Private/Language/locallang_ttc.xlf:tabs.appearance,
+                layout;LLL:EXT:frontend/Resources/Private/Language/locallang_ttc.xlf:layout_formlabel,
+                --palette--;LLL:EXT:frontend/Resources/Private/Language/locallang_ttc.xlf:palette.appearanceLinks;appearanceLinks,
+            --div--;LLL:EXT:frontend/Resources/Private/Language/locallang_ttc.xlf:tabs.accessibility,
+                --palette--;LLL:EXT:frontend/Resources/Private/Language/locallang_ttc.xlf:palette.menu_accessibility;menu_accessibility,
+            --div--;LLL:EXT:core/Resources/Private/Language/Form/locallang_tabs.xlf:language,
+                --palette--;;language,
+            --div--;LLL:EXT:core/Resources/Private/Language/Form/locallang_tabs.xlf:access,
+                --palette--;;hidden,
+                --palette--;LLL:EXT:frontend/Resources/Private/Language/locallang_ttc.xlf:palette.access;access,
+            --div--;LLL:EXT:core/Resources/Private/Language/Form/locallang_tabs.xlf:categories,
+                categories,
+            --div--;LLL:EXT:core/Resources/Private/Language/Form/locallang_tabs.xlf:notes,
+                rowDescription,
+            --div--;LLL:EXT:core/Resources/Private/Language/Form/locallang_tabs.xlf:extended,
+        ',
+        'subtype_value_field' => 'menu_type',
+        'subtypes_excludelist' => [
+            '2' => 'pages',
+            'categorized_pages' => 'pages',
+            'categorized_content' => 'pages',
+        ],
+        'subtypes_addlist' => [
+            'categorized_pages' => 'selected_categories, category_field',
+            'categorized_content' => 'selected_categories, category_field',
+        ]
+    ];
+
+    // Add additional fields
+    $additionalColumns = [
+        'menu_type' => [
+            'label' => 'LLL:EXT:frontend/Resources/Private/Language/locallang_ttc.xlf:menu_type',
+            'onChange' => 'reload',
+            'config' => [
+                'type' => 'select',
+                'renderType' => 'selectSingle',
+                'items' => [
+                    [
+                        'LLL:EXT:frontend/Resources/Private/Language/locallang_ttc.xlf:menu_type.I.0',
+                        '0'
+                    ],
+                    [
+                        'LLL:EXT:frontend/Resources/Private/Language/locallang_ttc.xlf:menu_type.I.1',
+                        '1'
+                    ],
+                    [
+                        'LLL:EXT:frontend/Resources/Private/Language/locallang_ttc.xlf:menu_type.I.2',
+                        '4'
+                    ],
+                    [
+                        'LLL:EXT:frontend/Resources/Private/Language/locallang_ttc.xlf:menu_type.I.3',
+                        '7'
+                    ],
+                    [
+                        'LLL:EXT:frontend/Resources/Private/Language/locallang_ttc.xlf:menu_type.I.4',
+                        '2'
+                    ],
+                    [
+                        'LLL:EXT:frontend/Resources/Private/Language/locallang_ttc.xlf:menu_type.I.8',
+                        '8'
+                    ],
+                    [
+                        'LLL:EXT:frontend/Resources/Private/Language/locallang_ttc.xlf:menu_type.I.5',
+                        '3'
+                    ],
+                    [
+                        'LLL:EXT:frontend/Resources/Private/Language/locallang_ttc.xlf:menu_type.I.6',
+                        '5'
+                    ],
+                    [
+                        'LLL:EXT:frontend/Resources/Private/Language/locallang_ttc.xlf:menu_type.I.7',
+                        '6'
+                    ],
+                    [
+                        'LLL:EXT:frontend/Resources/Private/Language/locallang_ttc.xlf:menu_type.I.categorized_pages',
+                        'categorized_pages'
+                    ],
+                    [
+                        'LLL:EXT:frontend/Resources/Private/Language/locallang_ttc.xlf:menu_type.I.categorized_content',
+                        'categorized_content'
+                    ]
+                ],
+                'default' => 0
+            ]
+        ]
+    ];
+    \TYPO3\CMS\Core\Utility\ExtensionManagementUtility::addTCAcolumns('tt_content', $additionalColumns);
+});
diff --git a/typo3/sysext/compatibility7/Configuration/TypoScript/ContentElement/CssStyledContent/setup.txt b/typo3/sysext/compatibility7/Configuration/TypoScript/ContentElement/CssStyledContent/setup.txt
new file mode 100644
index 0000000000000000000000000000000000000000..8e39fea03db62bd449fed18e8417009fa9a70d7f
--- /dev/null
+++ b/typo3/sysext/compatibility7/Configuration/TypoScript/ContentElement/CssStyledContent/setup.txt
@@ -0,0 +1,272 @@
+#
+# Menu configuration for css_styled_content
+#
+tt_content.stdWrap.innerWrap.cObject.default {
+    10.cObject.menu = TEXT
+    10.cObject.menu.value = <nav id="c{field:uid}"
+    30.cObject.menu = TEXT
+    30.cObject.menu.value = >|</nav>
+}
+
+
+#
+# cType: menu
+#
+tt_content.menu = COA
+tt_content.menu {
+    10 = < lib.stdheader
+    20 = CASE
+    20 {
+        key.field = menu_type
+        # "Menu of these pages"
+        default = HMENU
+        default {
+            special = list
+            special.value.field = pages
+            stdWrap {
+                prepend = COA
+                prepend {
+                    stdWrap {
+                        if.isTrue.field = accessibility_bypass
+                    }
+                    10 = LOAD_REGISTER
+                    10 {
+                        accessibility_bypass_text = TEXT
+                        accessibility_bypass_text {
+                            field = accessibility_bypass_text
+                        }
+                    }
+                    20 = CONTENT
+                    20 {
+                        table = tt_content
+                        select {
+                            pidInList = this
+                            orderBy = sorting
+                            where {
+                                dataWrap = sorting>{field:sorting}
+                            }
+                            languageField = sys_language_uid
+                            max = 1
+                        }
+                        renderObj = TEXT
+                        renderObj {
+                            required = 1
+                            data = LLL:EXT:css_styled_content/Resources/Private/Language/locallang.xlf:menu.bypassNavigation
+                            override.data = register:accessibility_bypass_text
+                            trim = 1
+                            htmlSpecialChars = 1
+                            typolink {
+                                parameter {
+                                    field = pid
+                                }
+                                section {
+                                    field = uid
+                                }
+                            }
+                            wrap = <li class="csc-nav-bypass">|</li>
+                        }
+                    }
+                    30 = RESTORE_REGISTER
+                }
+                outerWrap = <ul class="csc-menu csc-menu-def">|</ul>
+                required = 1
+            }
+            1 = TMENU
+            1 {
+                target < lib.parseTarget
+                target =
+                target.override = {$PAGE_TARGET}
+                NO {
+                    stdWrap.htmlSpecialChars = 1
+                    wrapItemAndSub = <li>|</li>
+                    ATagTitle.field = description // title
+                }
+            }
+        }
+        # "Menu of subpages to these pages"
+        1 < .default
+        1 {
+            special = directory
+            stdWrap {
+                outerWrap = <ul class="csc-menu csc-menu-1">|</ul>
+            }
+        }
+        # "Sitemap - liststyle"
+        2 = HMENU
+        2 {
+            stdWrap < tt_content.menu.20.default.stdWrap
+            stdWrap {
+                outerWrap = <div class="csc-sitemap">|</div>
+            }
+            1 = TMENU
+            1 {
+                target < lib.parseTarget
+                target =
+                target.override = {$PAGE_TARGET}
+                expAll = 1
+                wrap = <ul>|</ul>
+                NO {
+                    stdWrap.htmlSpecialChars = 1
+                    wrapItemAndSub = <li>|</li>
+                    ATagTitle.field = description // title
+                }
+            }
+            2 < .1
+            3 < .1
+            4 < .1
+            5 < .1
+            6 < .1
+            7 < .1
+        }
+        # "Section index (pagecontent w/Index checked - liststyle)"
+        3 < .default
+        3 {
+            special {
+                value {
+                    override {
+                        data = page:uid
+                        if {
+                            isFalse.field = pages
+                        }
+                    }
+                }
+            }
+            stdWrap {
+                outerWrap = <ul class="csc-menu csc-menu-3">|</ul>
+            }
+            1 = TMENU
+            1 {
+                sectionIndex = 1
+                sectionIndex.type = header
+                NO.wrapItemAndSub = <li class="csc-section">|</li>
+            }
+        }
+        # "Menu of subpages to these pages (with abstract)"
+        4 < .1
+        4 {
+            stdWrap {
+                prepend.20.renderObj.wrap = <dt class="csc-nav-bypass">|</dt><dd>&nbsp;</dd>
+                outerWrap = <dl class="csc-menu csc-menu-4">|</dl>
+            }
+            1.NO {
+                wrapItemAndSub >
+                linkWrap = <dt>|</dt>
+                after {
+                    cObject = TEXT
+                    cObject {
+                        data = field : abstract // field : description // field : subtitle
+                        htmlSpecialChars = 1
+                        required = 1
+                    }
+                    ifBlank = &nbsp;
+                    wrap = <dd>|</dd>
+                }
+                ATagTitle.field = description // title
+            }
+        }
+        # "Recently updated pages"
+        5 < .default
+        5 {
+            stdWrap {
+                outerWrap = <ul class="csc-menu csc-menu-5">|</ul>
+            }
+            special = updated
+            special {
+                maxAge = 3600*24*7
+                excludeNoSearchPages = 1
+            }
+        }
+        # "Related pages (based on keywords)"
+        6 < .default
+        6 {
+            stdWrap {
+                outerWrap = <ul class="csc-menu csc-menu-6">|</ul>
+            }
+            special = keywords
+            special {
+                excludeNoSearchPages = 1
+            }
+        }
+        # "Menu of subpages to these pages + sections - liststyle"
+        7 < .1
+        7 {
+            stdWrap {
+                outerWrap = <ul class="csc-menu csc-menu-7">|</ul>
+            }
+            1.expAll = 1
+            2 < .1
+            2 {
+                sectionIndex = 1
+                sectionIndex.type = header
+                wrap = <ul>|</ul>
+                NO.wrapItemAndSub = <li class="csc-section">|</li>
+            }
+        }
+        # "Sitemaps of selected pages - liststyle"
+        8 < .2
+        8 {
+            special = directory
+            special.value.field = pages
+        }
+        # Menu of categorized pages
+        categorized_pages < .default
+        categorized_pages {
+            special = categories
+            special.value.field = selected_categories
+            special.relation.field = category_field
+            special.sorting = title
+            special.order = asc
+            stdWrap {
+                outerWrap = <ul class="csc-menu csc-menu-categorized-pages">|</ul>
+            }
+        }
+        # Menu of categorized content elements
+        categorized_content = RECORDS
+        categorized_content {
+            categories.field = selected_categories
+            categories.relation.field = category_field
+            tables = tt_content
+            conf.tt_content = TEXT
+            conf.tt_content {
+                field = header
+                typolink.parameter = {field:pid}#{field:uid}
+                typolink.parameter.insertData = 1
+                wrap = <li>|</li>
+            }
+            wrap = <ul>|</ul>
+        }
+    }
+    20.stdWrap {
+        wrap {
+            cObject = COA
+            cObject {
+                10 = TEXT
+                10 {
+                    field = accessibility_title
+                    htmlSpecialChars = 1
+                    dataWrap = <map id="map{field:uid}" title="|">
+                    dataWrap {
+                        override = <map name="map{field:uid}" title="|">
+                        override {
+                            if {
+                                isFalse.data = TSFE:xhtmlDoctype
+                            }
+                        }
+                    }
+                }
+                20 = TEXT
+                20 {
+                    value = |</map>
+                }
+            }
+            if {
+                isTrue {
+                    field = accessibility_title
+                }
+            }
+        }
+        editIcons = tt_content: menu_type, pages
+        editIcons.iconTitle.data = LLL:EXT:css_styled_content/Resources/Private/Language/locallang.xlf:eIcon.menuSitemap
+        prefixComment = 2 | Menu/Sitemap element:
+    }
+}
diff --git a/typo3/sysext/fluid_styled_content/Configuration/TypoScript/ContentElement/Menu.txt b/typo3/sysext/compatibility7/Configuration/TypoScript/ContentElement/FluidStyledContent/setup.txt
similarity index 65%
rename from typo3/sysext/fluid_styled_content/Configuration/TypoScript/ContentElement/Menu.txt
rename to typo3/sysext/compatibility7/Configuration/TypoScript/ContentElement/FluidStyledContent/setup.txt
index b94341012db96a44659a37a1a08740efeec11949..d9310455209981c9b1588983ed18a4d9d4cf07fa 100644
--- a/typo3/sysext/fluid_styled_content/Configuration/TypoScript/ContentElement/Menu.txt
+++ b/typo3/sysext/compatibility7/Configuration/TypoScript/ContentElement/FluidStyledContent/setup.txt
@@ -1,8 +1,22 @@
-# Special Menus:
-# Creates a menu of pages, sitemap or other special menus.
 #
-# CType: menu
+# Default configuration for content elements which are using FLUIDTEMPLATE directly
+#
+lib.fluidContent {
+    templateRootPaths {
+        1 = EXT:compatibility7/Resources/Private/FluidStyledContent/Templates/
+    }
+    partialRootPaths {
+        1 = EXT:compatibility7/Resources/Private/FluidStyledContent/Partials/
+    }
+    layoutRootPaths {
+        1 = EXT:compatibility7/Resources/Private/FluidStyledContent/Layouts/
+    }
+}
+
 
+#
+# Special Menus:
+#
 tt_content.menu =< lib.fluidContent
 tt_content.menu {
     templateName = Menu
diff --git a/typo3/sysext/compatibility7/Resources/Private/FluidStyledContent/Partials/Menu/Directory.html b/typo3/sysext/compatibility7/Resources/Private/FluidStyledContent/Partials/Menu/Directory.html
new file mode 100644
index 0000000000000000000000000000000000000000..51e3161a33dc92d4fa5677599111d32ca29cd943
--- /dev/null
+++ b/typo3/sysext/compatibility7/Resources/Private/FluidStyledContent/Partials/Menu/Directory.html
@@ -0,0 +1,23 @@
+<html xmlns:f="http://typo3.org/ns/TYPO3/CMS/Fluid/ViewHelpers" xmlns:ce="http://typo3.org/ns/TYPO3/CMS/Compatibility7/ViewHelpers" data-namespace-typo3-fluid="true">
+<ce:menu.directory pageUids="{pageUids}" as="pages" levelAs="level">
+    <f:if condition="{pages}">
+        <ul>
+            <f:for each="{pages}" as="page">
+                <li>
+                    <f:link.page pageUid="{page.uid}" target="{page.target}">
+                        <f:if condition="{page.nav_title}">
+                            <f:then>
+                                {page.nav_title}
+                            </f:then>
+                            <f:else>
+                                {page.title}
+                            </f:else>
+                        </f:if>
+                    </f:link.page>
+                    <f:render partial="Menu/Directory" arguments="{pageUids: {0: page.uid}}" />
+                </li>
+            </f:for>
+        </ul>
+    </f:if>
+</ce:menu.directory>
+</html>
diff --git a/typo3/sysext/compatibility7/Resources/Private/FluidStyledContent/Partials/Menu/Type-0.html b/typo3/sysext/compatibility7/Resources/Private/FluidStyledContent/Partials/Menu/Type-0.html
new file mode 100644
index 0000000000000000000000000000000000000000..3e8dc5190b18531123d3d296f08dd94c8198f244
--- /dev/null
+++ b/typo3/sysext/compatibility7/Resources/Private/FluidStyledContent/Partials/Menu/Type-0.html
@@ -0,0 +1,22 @@
+<html xmlns:f="http://typo3.org/ns/TYPO3/CMS/Fluid/ViewHelpers" xmlns:ce="http://typo3.org/ns/TYPO3/CMS/Compatibility7/ViewHelpers" data-namespace-typo3-fluid="true">
+<ce:menu.list pageUids="{pageUids}" as="pages">
+    <f:if condition="{pages}">
+        <ul class="ce-menu ce-menu-0">
+            <f:for each="{pages}" as="page">
+                <li>
+                    <f:link.page pageUid="{page.uid}" target="{page.target}">
+                        <f:if condition="{page.nav_title}">
+                            <f:then>
+                                {page.nav_title}
+                            </f:then>
+                            <f:else>
+                                {page.title}
+                            </f:else>
+                        </f:if>
+                    </f:link.page>
+                </li>
+            </f:for>
+        </ul>
+    </f:if>
+</ce:menu.list>
+</html>
diff --git a/typo3/sysext/compatibility7/Resources/Private/FluidStyledContent/Partials/Menu/Type-1.html b/typo3/sysext/compatibility7/Resources/Private/FluidStyledContent/Partials/Menu/Type-1.html
new file mode 100644
index 0000000000000000000000000000000000000000..f883e65ce06198f657ea3de65892c0c7e1d6e94e
--- /dev/null
+++ b/typo3/sysext/compatibility7/Resources/Private/FluidStyledContent/Partials/Menu/Type-1.html
@@ -0,0 +1,22 @@
+<html xmlns:f="http://typo3.org/ns/TYPO3/CMS/Fluid/ViewHelpers" xmlns:ce="http://typo3.org/ns/TYPO3/CMS/Compatibility7/ViewHelpers" data-namespace-typo3-fluid="true">
+<ce:menu.directory pageUids="{pageUids}" as="pages">
+    <f:if condition="{pages}">
+        <ul class="ce-menu ce-menu-1">
+            <f:for each="{pages}" as="page">
+                <li>
+                    <f:link.page pageUid="{page.uid}" target="{page.target}">
+                        <f:if condition="{page.nav_title}">
+                            <f:then>
+                                {page.nav_title}
+                            </f:then>
+                            <f:else>
+                                {page.title}
+                            </f:else>
+                        </f:if>
+                    </f:link.page>
+                </li>
+            </f:for>
+        </ul>
+    </f:if>
+</ce:menu.directory>
+</html>
diff --git a/typo3/sysext/compatibility7/Resources/Private/FluidStyledContent/Partials/Menu/Type-2.html b/typo3/sysext/compatibility7/Resources/Private/FluidStyledContent/Partials/Menu/Type-2.html
new file mode 100644
index 0000000000000000000000000000000000000000..d3e8b36ea136702936cf59a0bc0b9b0264ecdfdd
--- /dev/null
+++ b/typo3/sysext/compatibility7/Resources/Private/FluidStyledContent/Partials/Menu/Type-2.html
@@ -0,0 +1,23 @@
+<html xmlns:f="http://typo3.org/ns/TYPO3/CMS/Fluid/ViewHelpers" xmlns:ce="http://typo3.org/ns/TYPO3/CMS/Compatibility7/ViewHelpers" data-namespace-typo3-fluid="true">
+<ce:menu.list entryLevel="0" as="pages" levelAs="level">
+    <f:if condition="{pages}">
+        <ul class="ce-menu ce-menu-2">
+            <f:for each="{pages}" as="page">
+                <li>
+                    <f:link.page pageUid="{page.uid}" target="{page.target}">
+                        <f:if condition="{page.nav_title}">
+                            <f:then>
+                                {page.nav_title}
+                            </f:then>
+                            <f:else>
+                                {page.title}
+                            </f:else>
+                        </f:if>
+                    </f:link.page>
+                    <f:render partial="Menu/Directory" arguments="{pageUids: {0: page.uid}}" />
+                </li>
+            </f:for>
+        </ul>
+    </f:if>
+</ce:menu.list>
+</html>
diff --git a/typo3/sysext/compatibility7/Resources/Private/FluidStyledContent/Partials/Menu/Type-3.html b/typo3/sysext/compatibility7/Resources/Private/FluidStyledContent/Partials/Menu/Type-3.html
new file mode 100644
index 0000000000000000000000000000000000000000..b66300ed12b9f44063bcd74750934c5eee152416
--- /dev/null
+++ b/typo3/sysext/compatibility7/Resources/Private/FluidStyledContent/Partials/Menu/Type-3.html
@@ -0,0 +1,21 @@
+<html xmlns:f="http://typo3.org/ns/TYPO3/CMS/Fluid/ViewHelpers" xmlns:ce="http://typo3.org/ns/TYPO3/CMS/Compatibility7/ViewHelpers" data-namespace-typo3-fluid="true">
+<ce:menu.list pageUids="{pageUids}" as="pages">
+    <f:if condition="{pages}">
+        <ul class="ce-menu ce-menu-3">
+            <f:for each="{pages}" as="page">
+                <ce:menu.section pageUid="{page.uid}" as="contentElements" type="header">
+                    <f:if condition="{contentElements}">
+                        <f:for each="{contentElements}" as="contentElement">
+                            <li>
+                                <f:link.page pageUid="{page.uid}" section="c{contentElement.uid}" target="{page.target}">
+                                    {contentElement.header}
+                                </f:link.page>
+                            </li>
+                        </f:for>
+                    </f:if>
+                </ce:menu.section>
+            </f:for>
+        </ul>
+    </f:if>
+</ce:menu.list>
+</html>
diff --git a/typo3/sysext/compatibility7/Resources/Private/FluidStyledContent/Partials/Menu/Type-4.html b/typo3/sysext/compatibility7/Resources/Private/FluidStyledContent/Partials/Menu/Type-4.html
new file mode 100644
index 0000000000000000000000000000000000000000..59bbfab35497b4369d477d1fe501deaa6460a610
--- /dev/null
+++ b/typo3/sysext/compatibility7/Resources/Private/FluidStyledContent/Partials/Menu/Type-4.html
@@ -0,0 +1,46 @@
+<html xmlns:f="http://typo3.org/ns/TYPO3/CMS/Fluid/ViewHelpers" xmlns:ce="http://typo3.org/ns/TYPO3/CMS/Compatibility7/ViewHelpers" data-namespace-typo3-fluid="true">
+<ce:menu.directory pageUids="{pageUids}" as="pages">
+    <f:if condition="{pages}">
+        <dl class="ce-menu ce-menu-4">
+            <f:for each="{pages}" as="page">
+                <dt>
+                    <f:link.page pageUid="{page.uid}" target="{page.target}">
+                        <f:if condition="{page.nav_title}">
+                            <f:then>
+                                {page.nav_title}
+                            </f:then>
+                            <f:else>
+                                {page.title}
+                            </f:else>
+                        </f:if>
+                    </f:link.page>
+                </dt>
+                <dd>
+                    <f:if condition="{page.abstract}">
+                        <f:then>
+                            {page.abstract}
+                        </f:then>
+                        <f:else>
+                            <f:if condition="{page.description}">
+                                <f:then>
+                                    {page.description}
+                                </f:then>
+                                <f:else>
+                                    <f:if condition="{page.subtitle}">
+                                        <f:then>
+                                            {page.subtitle}
+                                        </f:then>
+                                        <f:else>
+                                            &nbsp;
+                                        </f:else>
+                                    </f:if>
+                                </f:else>
+                            </f:if>
+                        </f:else>
+                    </f:if>
+                </dd>
+            </f:for>
+        </dl>
+    </f:if>
+</ce:menu.directory>
+</html>
diff --git a/typo3/sysext/compatibility7/Resources/Private/FluidStyledContent/Partials/Menu/Type-5.html b/typo3/sysext/compatibility7/Resources/Private/FluidStyledContent/Partials/Menu/Type-5.html
new file mode 100644
index 0000000000000000000000000000000000000000..a29ba7a82186f0c0f27337f2921489bbe1576336
--- /dev/null
+++ b/typo3/sysext/compatibility7/Resources/Private/FluidStyledContent/Partials/Menu/Type-5.html
@@ -0,0 +1,22 @@
+<html xmlns:f="http://typo3.org/ns/TYPO3/CMS/Fluid/ViewHelpers" xmlns:ce="http://typo3.org/ns/TYPO3/CMS/Compatibility7/ViewHelpers" data-namespace-typo3-fluid="true">
+<ce:menu.updated pageUids="{pageUids}" as="pages" maximumAge="3600*24*7">
+    <f:if condition="{pages}">
+        <ul class="ce-menu ce-menu-5">
+            <f:for each="{pages}" as="page">
+                <li>
+                    <f:link.page pageUid="{page.uid}" target="{page.target}">
+                        <f:if condition="{page.nav_title}">
+                            <f:then>
+                                {page.nav_title}
+                            </f:then>
+                            <f:else>
+                                {page.title}
+                            </f:else>
+                        </f:if>
+                    </f:link.page>
+                </li>
+            </f:for>
+        </ul>
+    </f:if>
+</ce:menu.updated>
+</html>
diff --git a/typo3/sysext/compatibility7/Resources/Private/FluidStyledContent/Partials/Menu/Type-6.html b/typo3/sysext/compatibility7/Resources/Private/FluidStyledContent/Partials/Menu/Type-6.html
new file mode 100644
index 0000000000000000000000000000000000000000..75d653933c62d5aede92dd3a96af126479cd3e38
--- /dev/null
+++ b/typo3/sysext/compatibility7/Resources/Private/FluidStyledContent/Partials/Menu/Type-6.html
@@ -0,0 +1,22 @@
+<html xmlns:f="http://typo3.org/ns/TYPO3/CMS/Fluid/ViewHelpers" xmlns:ce="http://typo3.org/ns/TYPO3/CMS/Compatibility7/ViewHelpers" data-namespace-typo3-fluid="true">
+<ce:menu.keywords pageUids="{pageUids}" as="pages">
+    <f:if condition="{pages}">
+        <ul class="ce-menu ce-menu-6">
+            <f:for each="{pages}" as="page">
+                <li>
+                    <f:link.page pageUid="{page.uid}" target="{page.target}">
+                        <f:if condition="{page.nav_title}">
+                            <f:then>
+                                {page.nav_title}
+                            </f:then>
+                            <f:else>
+                                {page.title}
+                            </f:else>
+                        </f:if>
+                    </f:link.page>
+                </li>
+            </f:for>
+        </ul>
+    </f:if>
+</ce:menu.keywords>
+</html>
diff --git a/typo3/sysext/compatibility7/Resources/Private/FluidStyledContent/Partials/Menu/Type-7.html b/typo3/sysext/compatibility7/Resources/Private/FluidStyledContent/Partials/Menu/Type-7.html
new file mode 100644
index 0000000000000000000000000000000000000000..5889158c0582d754142d33108640fbbdcbd8e918
--- /dev/null
+++ b/typo3/sysext/compatibility7/Resources/Private/FluidStyledContent/Partials/Menu/Type-7.html
@@ -0,0 +1,35 @@
+<html xmlns:f="http://typo3.org/ns/TYPO3/CMS/Fluid/ViewHelpers" xmlns:ce="http://typo3.org/ns/TYPO3/CMS/Compatibility7/ViewHelpers" data-namespace-typo3-fluid="true">
+<ce:menu.directory pageUids="{pageUids}" as="pages">
+    <f:if condition="{pages}">
+        <ul class="ce-menu ce-menu-7">
+            <f:for each="{pages}" as="page">
+                <li>
+                    <f:link.page pageUid="{page.uid}" target="{page.target}">
+                        <f:if condition="{page.nav_title}">
+                            <f:then>
+                                {page.nav_title}
+                            </f:then>
+                            <f:else>
+                                {page.title}
+                            </f:else>
+                        </f:if>
+                    </f:link.page>
+                </li>
+                <ce:menu.section pageUid="{page.uid}" as="contentElements" type="header">
+                    <f:if condition="{contentElements}">
+                        <ul>
+                            <f:for each="{contentElements}" as="contentElement">
+                                <li>
+                                    <f:link.page pageUid="{page.uid}" section="c{contentElement.uid}" target="{page.target}">
+                                        {contentElement.header}
+                                    </f:link.page>
+                                </li>
+                            </f:for>
+                        </ul>
+                    </f:if>
+                </ce:menu.section>
+            </f:for>
+        </ul>
+    </f:if>
+</ce:menu.directory>
+</html>
diff --git a/typo3/sysext/compatibility7/Resources/Private/FluidStyledContent/Partials/Menu/Type-8.html b/typo3/sysext/compatibility7/Resources/Private/FluidStyledContent/Partials/Menu/Type-8.html
new file mode 100644
index 0000000000000000000000000000000000000000..f0c7866e4b91073da041cadcc52ad599c0d31d1f
--- /dev/null
+++ b/typo3/sysext/compatibility7/Resources/Private/FluidStyledContent/Partials/Menu/Type-8.html
@@ -0,0 +1,23 @@
+<html xmlns:f="http://typo3.org/ns/TYPO3/CMS/Fluid/ViewHelpers" xmlns:ce="http://typo3.org/ns/TYPO3/CMS/Compatibility7/ViewHelpers" data-namespace-typo3-fluid="true">
+<ce:menu.directory pageUids="{pageUids}" as="pages" levelAs="level">
+    <f:if condition="{pages}">
+        <ul class="ce-menu ce-menu-8">
+            <f:for each="{pages}" as="page">
+                <li>
+                    <f:link.page pageUid="{page.uid}" target="{page.target}">
+                        <f:if condition="{page.nav_title}">
+                            <f:then>
+                                {page.nav_title}
+                            </f:then>
+                            <f:else>
+                                {page.title}
+                            </f:else>
+                        </f:if>
+                    </f:link.page>
+                    <f:render partial="Menu/Directory" arguments="{pageUids: {0: page.uid}}" />
+                </li>
+            </f:for>
+        </ul>
+    </f:if>
+</ce:menu.directory>
+</html>
diff --git a/typo3/sysext/compatibility7/Resources/Private/FluidStyledContent/Partials/Menu/Type-categorized_content.html b/typo3/sysext/compatibility7/Resources/Private/FluidStyledContent/Partials/Menu/Type-categorized_content.html
new file mode 100644
index 0000000000000000000000000000000000000000..7a46008afd2de34fbbb8c01685b98864479016bd
--- /dev/null
+++ b/typo3/sysext/compatibility7/Resources/Private/FluidStyledContent/Partials/Menu/Type-categorized_content.html
@@ -0,0 +1,17 @@
+<html xmlns:f="http://typo3.org/ns/TYPO3/CMS/Fluid/ViewHelpers" xmlns:ce="http://typo3.org/ns/TYPO3/CMS/Compatibility7/ViewHelpers" data-namespace-typo3-fluid="true">
+<ce:menu.categories categoryUids="{categoryUids}" as="contentElements" relationField="{data.category_field}" table="tt_content">
+    <f:if condition="{contentElements}">
+        <ul class="ce-menu ce-menu-categorized-content">
+            <f:for each="{contentElements}" as="contentElement">
+                <f:if condition="{contentElement.header}">
+                    <li>
+                        <f:link.page pageUid="{contentElement.pid}" section="c{contentElement.uid}" target="{page.target}">
+                            {contentElement.header}
+                        </f:link.page>
+                    </li>
+                </f:if>
+            </f:for>
+        </ul>
+    </f:if>
+</ce:menu.categories>
+</html>
diff --git a/typo3/sysext/compatibility7/Resources/Private/FluidStyledContent/Partials/Menu/Type-categorized_pages.html b/typo3/sysext/compatibility7/Resources/Private/FluidStyledContent/Partials/Menu/Type-categorized_pages.html
new file mode 100644
index 0000000000000000000000000000000000000000..eb6406a8ee35121fdc82eff3f6676a567f08cf62
--- /dev/null
+++ b/typo3/sysext/compatibility7/Resources/Private/FluidStyledContent/Partials/Menu/Type-categorized_pages.html
@@ -0,0 +1,22 @@
+<html xmlns:f="http://typo3.org/ns/TYPO3/CMS/Fluid/ViewHelpers" xmlns:ce="http://typo3.org/ns/TYPO3/CMS/Compatibility7/ViewHelpers" data-namespace-typo3-fluid="true">
+<ce:menu.categories categoryUids="{categoryUids}" as="pages" relationField="{data.category_field}" table="pages">
+    <f:if condition="{pages}">
+        <ul class="ce-menu ce-menu-9">
+            <f:for each="{pages}" as="page">
+                <li>
+                    <f:link.page pageUid="{page.uid}" target="{page.target}">
+                        <f:if condition="{page.nav_title}">
+                            <f:then>
+                                {page.nav_title}
+                            </f:then>
+                            <f:else>
+                                {page.title}
+                            </f:else>
+                        </f:if>
+                    </f:link.page>
+                </li>
+            </f:for>
+        </ul>
+    </f:if>
+</ce:menu.categories>
+</html>
diff --git a/typo3/sysext/compatibility7/Resources/Private/FluidStyledContent/Templates/Menu.html b/typo3/sysext/compatibility7/Resources/Private/FluidStyledContent/Templates/Menu.html
new file mode 100644
index 0000000000000000000000000000000000000000..42fdfc6be5c08d04f2d9c2815e235c0301dfb73e
--- /dev/null
+++ b/typo3/sysext/compatibility7/Resources/Private/FluidStyledContent/Templates/Menu.html
@@ -0,0 +1,8 @@
+<html xmlns:f="http://typo3.org/ns/TYPO3/CMS/Fluid/ViewHelpers" data-namespace-typo3-fluid="true">
+<f:layout name="Default" />
+<f:section name="Main">
+
+    <f:render partial="Menu/Type-{data.menu_type}" arguments="{_all}" />
+
+</f:section>
+</html>
diff --git a/typo3/sysext/compatibility7/ext_localconf.php b/typo3/sysext/compatibility7/ext_localconf.php
index 0f123a44a7c09716eaf46efb8c4aa29e47e5920b..399e9cd7500c3cc4a711922b86033a44f67ebd78 100644
--- a/typo3/sysext/compatibility7/ext_localconf.php
+++ b/typo3/sysext/compatibility7/ext_localconf.php
@@ -2,6 +2,7 @@
 
 defined('TYPO3_MODE') or die();
 
+// Indexed search
 if (\TYPO3\CMS\Core\Utility\ExtensionManagementUtility::isLoaded('indexed_search')) {
     // register pibase plugin
     \TYPO3\CMS\Core\Utility\ExtensionManagementUtility::addTypoScript(
@@ -21,6 +22,68 @@ if (\TYPO3\CMS\Core\Utility\ExtensionManagementUtility::isLoaded('indexed_search
     );
 }
 
+// Content element
+if (TYPO3_MODE === 'BE') {
+    \TYPO3\CMS\Core\Utility\ExtensionManagementUtility::addPageTSConfig(
+        '<INCLUDE_TYPOSCRIPT: source="FILE:EXT:compatibility7/Configuration/PageTS/Mod/Wizards/NewContentElementMenu.txt">'
+    );
+}
+if (\TYPO3\CMS\Core\Utility\ExtensionManagementUtility::isLoaded('css_styled_content')) {
+    $GLOBALS['TYPO3_CONF_VARS']['FE']['contentRenderingTemplates'][] = 'compatibility7/Configuration/TypoScript/ContentElement/CssStyledContent/';
+}
+if (\TYPO3\CMS\Core\Utility\ExtensionManagementUtility::isLoaded('fluid_styled_content')) {
+    $GLOBALS['TYPO3_CONF_VARS']['FE']['contentRenderingTemplates'][] = 'compatibility7/Configuration/TypoScript/ContentElement/FluidStyledContent/';
+    // Set alias for deprecated fluid styled content menu viewhelper
+    if (!class_exists('TYPO3\CMS\FluidStyledContent\ViewHelpers\Menu\AbstractMenuViewHelper')) {
+        class_alias(
+            \TYPO3\CMS\Compatibility7\ViewHelpers\Menu\AbstractMenuViewHelper::class,
+            'TYPO3\CMS\FluidStyledContent\ViewHelpers\Menu\AbstractMenuViewHelper'
+        );
+    }
+    if (!class_exists('TYPO3\CMS\FluidStyledContent\ViewHelpers\Menu\CategoriesViewHelper')) {
+        class_alias(
+            \TYPO3\CMS\Compatibility7\ViewHelpers\Menu\CategoriesViewHelper::class,
+            'TYPO3\CMS\FluidStyledContent\ViewHelpers\Menu\CategoriesViewHelper'
+        );
+    }
+    if (!class_exists('TYPO3\CMS\FluidStyledContent\ViewHelpers\Menu\DirectoryViewHelper')) {
+        class_alias(
+            \TYPO3\CMS\Compatibility7\ViewHelpers\Menu\DirectoryViewHelper::class,
+            'TYPO3\CMS\FluidStyledContent\ViewHelpers\Menu\DirectoryViewHelper'
+        );
+    }
+    if (!class_exists('TYPO3\CMS\FluidStyledContent\ViewHelpers\Menu\KeywordsViewHelper')) {
+        class_alias(
+            \TYPO3\CMS\Compatibility7\ViewHelpers\Menu\KeywordsViewHelper::class,
+            'TYPO3\CMS\FluidStyledContent\ViewHelpers\Menu\KeywordsViewHelper'
+        );
+    }
+    if (!class_exists('TYPO3\CMS\FluidStyledContent\ViewHelpers\Menu\ListViewHelper')) {
+        class_alias(
+            \TYPO3\CMS\Compatibility7\ViewHelpers\Menu\ListViewHelper::class,
+            'TYPO3\CMS\FluidStyledContent\ViewHelpers\Menu\ListViewHelper'
+        );
+    }
+    if (!class_exists('TYPO3\CMS\FluidStyledContent\ViewHelpers\Menu\MenuViewHelperTrait')) {
+        class_alias(
+            \TYPO3\CMS\Compatibility7\ViewHelpers\Menu\MenuViewHelperTrait::class,
+            'TYPO3\CMS\FluidStyledContent\ViewHelpers\Menu\MenuViewHelperTrait'
+        );
+    }
+    if (!class_exists('TYPO3\CMS\FluidStyledContent\ViewHelpers\Menu\SectionViewHelper')) {
+        class_alias(
+            \TYPO3\CMS\Compatibility7\ViewHelpers\Menu\SectionViewHelper::class,
+            'TYPO3\CMS\FluidStyledContent\ViewHelpers\Menu\SectionViewHelper'
+        );
+    }
+    if (!class_exists('TYPO3\CMS\FluidStyledContent\ViewHelpers\Menu\UpdatedViewHelper')) {
+        class_alias(
+            \TYPO3\CMS\Compatibility7\ViewHelpers\Menu\UpdatedViewHelper::class,
+            'TYPO3\CMS\FluidStyledContent\ViewHelpers\Menu\UpdatedViewHelper'
+        );
+    }
+}
+
 // Enable pages.url_scheme functionality again
 $GLOBALS['TYPO3_CONF_VARS']['SC_OPTIONS']['typolinkProcessing']['typolinkModifyParameterForPageLinks']['compatibility7_urlscheme']
     = \TYPO3\CMS\Compatibility7\Hooks\EnforceUrlSchemeHook::class;
diff --git a/typo3/sysext/compatibility7/ext_tables.sql b/typo3/sysext/compatibility7/ext_tables.sql
index 7f092c256101cd9fdc16f2418c474e11640ef778..a7c9f82890bebf747fbac6700f015617b4a03fa8 100644
--- a/typo3/sysext/compatibility7/ext_tables.sql
+++ b/typo3/sysext/compatibility7/ext_tables.sql
@@ -1,3 +1,10 @@
+#
+# Table structure for table 'tt_content'
+#
+CREATE TABLE tt_content (
+	menu_type varchar(30) DEFAULT '0' NOT NULL
+);
+
 #
 # Additional fields for table 'pages'
 #
diff --git a/typo3/sysext/context_help/Resources/Private/Language/locallang_csh_ttcontent.xlf b/typo3/sysext/context_help/Resources/Private/Language/locallang_csh_ttcontent.xlf
index eb560f375055daa2818d3f265048e2e3a8bbfd7e..61b9f79e8dfd6aa68e438412e9c9f81a03a3faa4 100644
--- a/typo3/sysext/context_help/Resources/Private/Language/locallang_csh_ttcontent.xlf
+++ b/typo3/sysext/context_help/Resources/Private/Language/locallang_csh_ttcontent.xlf
@@ -298,14 +298,11 @@ You can also display images in multiple columns and even enable an option that o
 tt_content:imageheight,
 tt_content:imageorient,
 tt_content:imageborder,
-tt_content:image_noRows,
 tt_content:image_link,
 tt_content:image_zoom,
 tt_content:imagecols,
 tt_content:imagecaption,
-tt_content:image_effects,
 tt_content:image_frames,
-tt_content:image_compression,
 Using images ("Getting Started") | https://docs.typo3.org/typo3cms/GettingStartedTutorial/TheFileModuleOrImageArchives/ManagingFilesInTypo3/
 Using images (Animation) | FILE:EXT:welcome/modsub/ani_10.gif</source>
 				<note from="developer">A part of this string is an internal text, which must not be changed. Just copy this part into the translation field and do not change it. For more information have a look at the Tutorial.</note>
@@ -349,18 +346,6 @@ Apart from the visual difference there is a technical aspect as well. If you cho
 			</trans-unit>
 			<trans-unit id="_imageborder.seeAlso" xml:space="preserve">
 				<source>tt_content:imagecols,
-tt_content:image</source>
-				<note from="developer">This string contains an internal text, which must not be changed. Just copy the original text into the translation field. For more information have a look at the Tutorial.</note>
-			</trans-unit>
-			<trans-unit id="image_noRows.description">
-				<source>Disables tablerows in the image block.</source>
-			</trans-unit>
-			<trans-unit id="image_noRows.details" xml:space="preserve">
-				<source>To illustrate, imagine you have 2 or more columns &lt;em&gt;and&lt;/em&gt; rows of images. If one image in the upper row is taller than the second this will generate empty space beneath the second image. This is due to the normal flow in which the images are placed in table cells.
-If you enable the No Rows option, the table will place the images in a column into a single table cell which make the distance between them vertically identical throughout. This may provide a better look if the alternative is unacceptable.</source>
-			</trans-unit>
-			<trans-unit id="_image_noRows.seeAlso" xml:space="preserve">
-				<source>tt_content:imagecols,
 tt_content:image</source>
 				<note from="developer">This string contains an internal text, which must not be changed. Just copy the original text into the translation field. For more information have a look at the Tutorial.</note>
 			</trans-unit>
@@ -386,15 +371,6 @@ tt_content:image</source>
 			</trans-unit>
 			<trans-unit id="_image_zoom.seeAlso" xml:space="preserve">
 				<source>tt_content:image_link,
-tt_content:image</source>
-				<note from="developer">This string contains an internal text, which must not be changed. Just copy the original text into the translation field. For more information have a look at the Tutorial.</note>
-			</trans-unit>
-			<trans-unit id="image_effects.description">
-				<source>Select special image processing effects, such as rotation and color adjustments.</source>
-			</trans-unit>
-			<trans-unit id="_image_effects.seeAlso" xml:space="preserve">
-				<source>tt_content:image_compression,
-tt_content:image_frames,
 tt_content:image</source>
 				<note from="developer">This string contains an internal text, which must not be changed. Just copy the original text into the translation field. For more information have a look at the Tutorial.</note>
 			</trans-unit>
@@ -402,26 +378,14 @@ tt_content:image</source>
 				<source>Select special image framing options.</source>
 			</trans-unit>
 			<trans-unit id="_image_frames.seeAlso" xml:space="preserve">
-				<source>tt_content:image_compression,
-tt_content:image_effects,
-tt_content:image</source>
-				<note from="developer">This string contains an internal text, which must not be changed. Just copy the original text into the translation field. For more information have a look at the Tutorial.</note>
-			</trans-unit>
-			<trans-unit id="image_compression.description">
-				<source>Select image quality and image type options.</source>
-			</trans-unit>
-			<trans-unit id="_image_compression.seeAlso" xml:space="preserve">
-				<source>tt_content:image_frames,
-tt_content:image_effects,
-tt_content:image</source>
+				<source>tt_content:image</source>
 				<note from="developer">This string contains an internal text, which must not be changed. Just copy the original text into the translation field. For more information have a look at the Tutorial.</note>
 			</trans-unit>
 			<trans-unit id="imagecols.description">
 				<source>Set the number of columns when the images are displayed in the Frontend of the website.</source>
 			</trans-unit>
 			<trans-unit id="_imagecols.seeAlso" xml:space="preserve">
-				<source>tt_content:image_noRows,
-tt_content:image</source>
+				<source>tt_content:image</source>
 				<note from="developer">This string contains an internal text, which must not be changed. Just copy the original text into the translation field. For more information have a look at the Tutorial.</note>
 			</trans-unit>
 			<trans-unit id="imagecaption.description">
@@ -433,19 +397,6 @@ In this case, each line in this field will be the image caption of the correspon
 
 The caption text field is also used by the Content Element type "File Links" where each line represents a description of a file in the list.</source>
 			</trans-unit>
-			<trans-unit id="_imagecaption.seeAlso" xml:space="preserve">
-				<source>tt_content:imagecaption_position,
-tt_content:image</source>
-				<note from="developer">This string contains an internal text, which must not be changed. Just copy the original text into the translation field. For more information have a look at the Tutorial.</note>
-			</trans-unit>
-			<trans-unit id="imagecaption_position.description">
-				<source>Aligns the image captions to the left, center, or right.</source>
-			</trans-unit>
-			<trans-unit id="_imagecaption_position.seeAlso" xml:space="preserve">
-				<source>tt_content:imagecaption,
-tt_content:image</source>
-				<note from="developer">This string contains an internal text, which must not be changed. Just copy the original text into the translation field. For more information have a look at the Tutorial.</note>
-			</trans-unit>
 			<trans-unit id="cols.description">
 				<source>Select a fixed number of table columns</source>
 			</trans-unit>
@@ -533,24 +484,6 @@ tt_content:sectionIndex</source>
 				<source>EXT:context_help/Resources/Public/Images/cshimages/ttcontent_7.png</source>
 				<note from="developer">This string contains an internal text, which must not be changed. Just copy the original text into the translation field. For more information have a look at the Tutorial.</note>
 			</trans-unit>
-			<trans-unit id="table_bgColor.description">
-				<source>Select the table background color.</source>
-			</trans-unit>
-			<trans-unit id="table_border.description">
-				<source>Select the table border thickness.</source>
-			</trans-unit>
-			<trans-unit id="table_cellspacing.description">
-				<source>Select the table cell spacing.</source>
-			</trans-unit>
-			<trans-unit id="table_cellspacing.details">
-				<source>Cell spacing is the distance between table cells in rows and columns. The distance is equally applied in all directions, top, bottom, left, and right.</source>
-			</trans-unit>
-			<trans-unit id="table_cellpadding.description">
-				<source>Select the table cellpadding.</source>
-			</trans-unit>
-			<trans-unit id="table_cellpadding.details">
-				<source>Cell padding is the 'internal' margin of a table cell. The distance is equally applied in all directions, top, bottom, left, and right.</source>
-			</trans-unit>
 			<trans-unit id="media.description">
 				<source>Files can be added to the list here.</source>
 			</trans-unit>
@@ -567,24 +500,14 @@ tt_content:sectionIndex</source>
 				<source>Top Margin (in pixels) inserts whitespace &lt;em&gt;before&lt;/em&gt; this Content Element.</source>
 			</trans-unit>
 			<trans-unit id="_spaceBefore.seeAlso" xml:space="preserve">
-				<source>tt_content:spaceAfter,
-tt_content:section_frame</source>
+				<source>tt_content:spaceAfter</source>
 				<note from="developer">This string contains an internal text, which must not be changed. Just copy the original text into the translation field. For more information have a look at the Tutorial.</note>
 			</trans-unit>
 			<trans-unit id="spaceAfter.description">
 				<source>Bottom Margin (in pixels) inserts whitespace &lt;em&gt;after&lt;/em&gt; this Content Element.</source>
 			</trans-unit>
 			<trans-unit id="_spaceAfter.seeAlso" xml:space="preserve">
-				<source>tt_content:spaceBefore,
-tt_content:section_frame</source>
-				<note from="developer">This string contains an internal text, which must not be changed. Just copy the original text into the translation field. For more information have a look at the Tutorial.</note>
-			</trans-unit>
-			<trans-unit id="section_frame.description">
-				<source>Select indention or framing options for the Content Element.</source>
-			</trans-unit>
-			<trans-unit id="_section_frame.seeAlso" xml:space="preserve">
-				<source>tt_content:spaceAfter,
-tt_content:spaceBefore</source>
+				<source>tt_content:spaceBefore</source>
 				<note from="developer">This string contains an internal text, which must not be changed. Just copy the original text into the translation field. For more information have a look at the Tutorial.</note>
 			</trans-unit>
 			<trans-unit id="sectionIndex.description">
diff --git a/typo3/sysext/core/Classes/Category/CategoryRegistry.php b/typo3/sysext/core/Classes/Category/CategoryRegistry.php
index 31a9a86c55da0e56d28332d7390e2c9b68b4255f..22cdd600134bed2491dcca517412bdb7a7c1f28d 100644
--- a/typo3/sysext/core/Classes/Category/CategoryRegistry.php
+++ b/typo3/sysext/core/Classes/Category/CategoryRegistry.php
@@ -139,13 +139,16 @@ class CategoryRegistry implements SingletonInterface
      */
     public function getCategoryFieldsForTable(array &$configuration)
     {
-        $table = '';
-        $menuType = isset($configuration['row']['menu_type'][0]) ? $configuration['row']['menu_type'][0] : '';
-        // Define the table being looked up from the type of menu
-        if ($menuType === 'categorized_pages') {
-            $table = 'pages';
-        } elseif ($menuType === 'categorized_content') {
-            $table = 'tt_content';
+        $table = $configuration['config']['itemsProcConfig']['table'] ?? '';
+        // Lookup table for legacy menu content element
+        if (empty($table)) {
+            $menuType = $configuration['row']['menu_type'][0] ?? '';
+            // Define the table being looked up from the type of menu
+            if ($menuType === 'categorized_pages') {
+                $table = 'pages';
+            } elseif ($menuType === 'categorized_content') {
+                $table = 'tt_content';
+            }
         }
         // Return early if no table is defined
         if (empty($table)) {
diff --git a/typo3/sysext/core/Classes/Imaging/IconRegistry.php b/typo3/sysext/core/Classes/Imaging/IconRegistry.php
index 1ce2ed295eef4d1c26cb6d61f12b4c21e5a3a702..f44dc65db4616c5217fdbd324de581f064adc8d8 100644
--- a/typo3/sysext/core/Classes/Imaging/IconRegistry.php
+++ b/typo3/sysext/core/Classes/Imaging/IconRegistry.php
@@ -1677,6 +1677,54 @@ class IconRegistry implements SingletonInterface
                 'source' => 'EXT:core/Resources/Public/Icons/T3Icons/content/content-special-menu.svg'
             ]
         ],
+        'content-menu-abstract' => [
+            'provider' => SvgIconProvider::class,
+            'options' => [
+                'source' => 'EXT:core/Resources/Public/Icons/T3Icons/content/content-menu-abstract.svg'
+            ]
+        ],
+        'content-menu-categorized' => [
+            'provider' => SvgIconProvider::class,
+            'options' => [
+                'source' => 'EXT:core/Resources/Public/Icons/T3Icons/content/content-menu-categorized.svg'
+            ]
+        ],
+        'content-menu-pages' => [
+            'provider' => SvgIconProvider::class,
+            'options' => [
+                'source' => 'EXT:core/Resources/Public/Icons/T3Icons/content/content-menu-pages.svg'
+            ]
+        ],
+        'content-menu-section' => [
+            'provider' => SvgIconProvider::class,
+            'options' => [
+                'source' => 'EXT:core/Resources/Public/Icons/T3Icons/content/content-menu-section.svg'
+            ]
+        ],
+        'content-menu-sitemap' => [
+            'provider' => SvgIconProvider::class,
+            'options' => [
+                'source' => 'EXT:core/Resources/Public/Icons/T3Icons/content/content-menu-sitemap.svg'
+            ]
+        ],
+        'content-menu-sitemap-pages' => [
+            'provider' => SvgIconProvider::class,
+            'options' => [
+                'source' => 'EXT:core/Resources/Public/Icons/T3Icons/content/content-menu-sitemap-pages.svg'
+            ]
+        ],
+        'content-menu-recently-updated' => [
+            'provider' => SvgIconProvider::class,
+            'options' => [
+                'source' => 'EXT:core/Resources/Public/Icons/T3Icons/content/content-menu-recently-updated.svg'
+            ]
+        ],
+        'content-menu-related' => [
+            'provider' => SvgIconProvider::class,
+            'options' => [
+                'source' => 'EXT:core/Resources/Public/Icons/T3Icons/content/content-menu-related.svg'
+            ]
+        ],
         'content-special-shortcut' => [
             'provider' => SvgIconProvider::class,
             'options' => [
diff --git a/typo3/sysext/core/Documentation/Changelog/master/Breaking-79622-CSSStyledContentTableContentElementAdjustments.rst b/typo3/sysext/core/Documentation/Changelog/master/Breaking-79622-CSSStyledContentTableContentElementAdjustments.rst
new file mode 100644
index 0000000000000000000000000000000000000000..570b99d768f12aac9f2c49e6ee7e43bddbbc0ecf
--- /dev/null
+++ b/typo3/sysext/core/Documentation/Changelog/master/Breaking-79622-CSSStyledContentTableContentElementAdjustments.rst
@@ -0,0 +1,118 @@
+.. include:: ../../Includes.txt
+
+=======================================================================
+Breaking: #79622 - CSS Styled Content table content element adjustments
+=======================================================================
+
+See :issue:`79622`
+
+Description
+===========
+
+In order to streamline the options and enhance compatibility across CSS Styled
+Content and Fluid Styled Content the table content element has been partly
+refactored. All previous flexform configuration has been migrated to database
+fields, shared across both content rendering definitions.
+
+Element options removed:
+- Table Summary
+- No CSS styles for this table
+
+Element options changed:
+- Additional CSS Class
+
+Rendering changes:
+- Additional CSS classes for tr, th, td have been dropped
+
+TypoScript options removed:
+- color
+- tableParams_0
+- tableParams_1
+- tableParams_2
+- tableParams_3
+- border
+- cellpadding
+- cellspacing
+
+
+Table Summary
+-------------
+The <table> summary attribute is not supported in HTML5 and was dropped.
+No migration path available.
+
+
+No CSS styles for table
+-----------------------
+The default CSS styling for CSS Styled Content is now optional. If no styling
+is required, simply do not include the optional static template or override
+the styling with CSS.
+
+
+Additional CSS Class
+--------------------
+The process of adding additional CSS classes for tables has been changed.
+To ease the work of the editor the CSS class field is no longer a simple input
+field. Adding CSS classes are now handled by predefined CSS classes that can
+be adjusted by the integrator. Classes will be prefixed with "contenttable-".
+
+.. code-block:: typoscript
+
+   TCEFORM.tt_content.table_class {
+      removeItems = striped,bordered
+      addItems {
+         hover = LLL:my_extension/Resources/Private/language.xlf:hover
+      }
+   }
+
+.. code-block:: php
+
+   $GLOBALS['TCA']['tt_content']['columns']['table_class']['config']['items'][] = [
+      0 = LLL:my_extension/Resources/Private/language.xlf:hover
+      1 = hover
+   ];
+
+
+Rendering changes and removed TypoScript options
+------------------------------------------------
+Style specific options have been removed and are no longer available. This
+includes the following options for table rendering: `color`, `tableParams_0`,
+`tableParams_1`, `tableParams_2`, `tableParams_3`, `border`, `cellpadding` and
+`cellspacing`. Also additional CSS classes for `tr`, `th` and `td` are no
+longer available.
+
+
+Affected Installations
+======================
+
+Installations that use the CSS Styled Content element table.
+
+
+Migration
+=========
+
+Run the upgrade wizard in the install tool to migrate all fields previously
+stored in flexforms to dedicated fields in the database.
+
+
+Table summary
+-------------
+The <table> summary attribute is not supported in HTML5 and was dropped.
+No migration path available.
+
+
+No CSS styles for this table
+----------------------------
+Remove the optional "CSS Styled Content Styling" static template.
+
+
+Additional CSS classes
+----------------------
+Additional CSS Classes must be registered as items for the field `table_class`.
+
+
+Rendering changes and removed TypoScript Options
+------------------------------------------------
+Use CSS styling to restore the look of your tables.
+
+
+.. index:: FlexForm, Frontend, TCA, TypoScript
diff --git a/typo3/sysext/core/Documentation/Changelog/master/Breaking-79622-DedicatedContentElementsForMenus.rst b/typo3/sysext/core/Documentation/Changelog/master/Breaking-79622-DedicatedContentElementsForMenus.rst
new file mode 100644
index 0000000000000000000000000000000000000000..dffc68e4a47759c057f153d20bfd968e137b597b
--- /dev/null
+++ b/typo3/sysext/core/Documentation/Changelog/master/Breaking-79622-DedicatedContentElementsForMenus.rst
@@ -0,0 +1,47 @@
+.. include:: ../../Includes.txt
+
+=======================================================
+Breaking: #79622 - Dedicated content elements for menus
+=======================================================
+
+See :issue:`79622`
+
+Description
+===========
+
+For better maintainability the currently existing content element
+menu has been split into dedicated content elements.
+
+==========================   ==========================   ==========================================================
+Database Key                 Name                         Description
+==========================   ==========================   ==========================================================
+menu_abstract                Abstracts                    Menu of subpages of selected pages including abstracts
+menu_categorized_content     Categorized content          Content elements for selected categories
+menu_categorized_pages       Categorized pages            Pages for selected categories
+menu_pages                   Pages                        Menu of selected pages
+menu_subpages                Subpages                     Menu of subpages of selected pages
+menu_recently_updated        Recently updated pages       Menu of recenlty updated pages
+menu_related_pages           Related pages                Menu of related pages based on keywords
+menu_section                 Section index                Page content marked for section menus
+menu_section_pages           Section index of subpages    Menu of subpages of selected pages including sections
+menu_sitemap                 Sitemap                      Expanded menu of all pages and subpages for selected pages
+menu_sitemap_pages           Sitemaps of selected pages   Expanded menu of all subpages for selected pages
+==========================   ==========================   ==========================================================
+
+
+Affected Installations
+======================
+
+All installations that use the content element "menu".
+
+
+Migration
+=========
+
+Run the migration wizard in the install tool. All shipped menu types from the
+TYPO3 core will be migrated to the new dedicated elements.
+
+The migration is optional, you can also enable the extension `compatibility7`
+that will make the old menu content element available again.
+
+.. index:: Frontend
diff --git a/typo3/sysext/core/Documentation/Changelog/master/Breaking-79622-DefaultContentElementChangedForFluidStyledContent.rst b/typo3/sysext/core/Documentation/Changelog/master/Breaking-79622-DefaultContentElementChangedForFluidStyledContent.rst
new file mode 100644
index 0000000000000000000000000000000000000000..18f727cca1105198db53cbc68297da60a3022e56
--- /dev/null
+++ b/typo3/sysext/core/Documentation/Changelog/master/Breaking-79622-DefaultContentElementChangedForFluidStyledContent.rst
@@ -0,0 +1,44 @@
+.. include:: ../../Includes.txt
+
+===========================================================================
+Breaking: #79622 - Default content element changed for Fluid Styled Content
+===========================================================================
+
+See :issue:`79622`
+
+Description
+===========
+
+The default content element has been streamlined with CSS Styled Content
+and was changed to "Text".
+
+
+Impact
+======
+
+The default content element is now "Text".
+
+
+Affected Installations
+======================
+
+All instances that have Fluid Styled Content installed.
+
+
+Migration
+=========
+
+To restore the configuration you need to set the default content element
+manually to your preferred choice. You can do this by simply overriding
+the configuration again in your `Configuration/TCA/Overrides/tt_content.php` file.
+
+.. code-block:: php
+
+   $GLOBALS['TCA']['tt_content']['columns']['CType']['config']['default'] = 'textmedia';
+
+.. code-block:: php
+
+   $GLOBALS['TCA']['tt_content']['columns']['CType']['config']['default'] = 'header';
+
+
+.. index:: TCA
diff --git a/typo3/sysext/core/Documentation/Changelog/master/Breaking-79622-DefaultLayoutsForFluidStyledContentChanged.rst b/typo3/sysext/core/Documentation/Changelog/master/Breaking-79622-DefaultLayoutsForFluidStyledContentChanged.rst
new file mode 100644
index 0000000000000000000000000000000000000000..280e2d2c08fe553720d3022047240d04b3260ee7
--- /dev/null
+++ b/typo3/sysext/core/Documentation/Changelog/master/Breaking-79622-DefaultLayoutsForFluidStyledContentChanged.rst
@@ -0,0 +1,45 @@
+.. include:: ../../Includes.txt
+
+===================================================================
+Breaking: #79622 - Default layouts for Fluid Styled Content changed
+===================================================================
+
+See :issue:`79622`
+
+Description
+===========
+
+The content element layouts for Fluid Styled Content have been changed
+to provide a better maintainability and to be more flexible.
+
+Previously available content element layouts `ContentFooter`, `HeaderFooter`
+and `HeaderContentFooter` have been dropped and replaced with a single
+`Default` layout that is more flexible.
+
+
+Impact
+======
+
+The content element layouts `ContentFooter`, `HeaderFooter` and
+`HeaderContentFooter` are no longer available. Referencing these layouts will
+result in an exception.
+
+
+Affected Installations
+======================
+
+All instances that override or implement custom content elements based on
+Fluid Styled Content that use the layouts `ContentFooter`, `HeaderFooter`
+or `HeaderContentFooter`.
+
+
+Migration
+=========
+
+All content elements and overrides need to be migrated to the new default
+layout. Have a look at the feature description on how to use the new layout.
+
+Feature-79622-NewDefaultLayoutForFluidStyledContent.rst
+
+
+.. index:: Fluid, Frontend
diff --git a/typo3/sysext/core/Documentation/Changelog/master/Breaking-79622-DroppingThumbnailConfigurationForTt_content.rst b/typo3/sysext/core/Documentation/Changelog/master/Breaking-79622-DroppingThumbnailConfigurationForTt_content.rst
new file mode 100644
index 0000000000000000000000000000000000000000..ec1d81aa2e487234b32073864eab45b8020eda3b
--- /dev/null
+++ b/typo3/sysext/core/Documentation/Changelog/master/Breaking-79622-DroppingThumbnailConfigurationForTt_content.rst
@@ -0,0 +1,46 @@
+.. include:: ../../Includes.txt
+
+==================================================================
+Breaking: #79622 - Dropping thumbnail configuration for tt_content
+==================================================================
+
+See :issue:`79622`
+
+Description
+===========
+
+We are currently not able to set the thumbnail field for records according
+to the type of the record. Since tt_content uses different fields to store
+media we are removing this default configuration that was set to `images`
+by CSS Styled Content and `assets` by Fluid Styled Content.
+
+
+Impact
+======
+
+Thumbnails in list view are no longer displayed for tt_content records.
+
+
+Affected Installations
+======================
+
+All instances.
+
+
+Migration
+=========
+
+To restore the configuration you need to set the thumbnail field manually to
+your preferred choice.
+You can do this by simply adding the configuration again in your `Configuration/TCA/Overrides/tt_content.php` file.
+
+.. code-block:: php
+
+   $GLOBALS['TCA']['tt_content']['ctrl']['thumbnail'] = 'image';
+
+.. code-block:: php
+
+   $GLOBALS['TCA']['tt_content']['ctrl']['thumbnail'] = 'assets';
+
+
+.. index:: TCA
diff --git a/typo3/sysext/core/Documentation/Changelog/master/Breaking-79622-RemovalOfFluidStyledContentMenuViewHelpers.rst b/typo3/sysext/core/Documentation/Changelog/master/Breaking-79622-RemovalOfFluidStyledContentMenuViewHelpers.rst
new file mode 100644
index 0000000000000000000000000000000000000000..71304c28ca77b1caa472c7a95995a6fb61bf98e5
--- /dev/null
+++ b/typo3/sysext/core/Documentation/Changelog/master/Breaking-79622-RemovalOfFluidStyledContentMenuViewHelpers.rst
@@ -0,0 +1,86 @@
+.. include:: ../../Includes.txt
+
+===================================================================
+Breaking: #79622 - Removal of Fluid Styled Content Menu ViewHelpers
+===================================================================
+
+See :issue:`79622`
+
+Description
+===========
+
+Fetching data directly in the view is not recommended and the temporary
+solution of menu viewhelpers are now replaced by it´s successor the menu
+processor that is based on HMENU.
+
+Menu ViewHelpers have been moved to the `compatibility7` extension, and are
+replaced in the core menu content elements.
+
+List of removed ViewHelpers:
+- menu.categories
+- menu.directory
+- menu.keywords
+- menu.list
+- menu.section
+- menu.updated
+
+
+Affected Installations
+======================
+
+All installations that use the `fluid_styled_content` menu viewhelpers.
+
+
+Migration
+=========
+
+Use `TYPO3\CMS\Frontend\DataProcessing\MenuProcessor` instead of viewhelpers.
+
+For CMS 8 the viewhelpers will be available as soon as `compatibility7` is
+installed, but it´s highly recommended to migrate your configuration.
+
+Example (Directory)
+-------------------
+
+Before:
+
+.. code-block:: typoscript
+
+   tt_content.menu_subpages.dataProcessing {
+      10 = TYPO3\CMS\Frontend\DataProcessing\SplitProcessor
+      10 {
+         if.isTrue.field = pages
+         fieldName = pages
+         delimiter = ,
+         removeEmptyEntries = 1
+         filterIntegers = 1
+         filterUnique = 1
+         as = pageUids
+      }
+   }
+
+.. code-block:: html
+
+   <ce:menu.directory pageUids="{pageUids}" as="pages" levelAs="level">
+      <f:for each="{pages}" as="page">
+         ...
+      </f:for>
+   </ce.menu.directory>
+
+After:
+
+.. code-block:: typoscript
+
+   tt_content.menu_subpages.dataProcessing {
+      10 = TYPO3\CMS\Frontend\DataProcessing\MenuProcessor
+      10.special = directory
+      10.special.value.field = pages
+   }
+
+.. code-block:: html
+
+   <f:for each="{menu}" as="page">
+      ...
+   </f:for>
+
+.. index:: Fluid, Frontend
diff --git a/typo3/sysext/core/Documentation/Changelog/master/Breaking-79622-SpaceBeforeAndSpaceAfterAdjustmentsForCSSStyledContent.rst b/typo3/sysext/core/Documentation/Changelog/master/Breaking-79622-SpaceBeforeAndSpaceAfterAdjustmentsForCSSStyledContent.rst
new file mode 100644
index 0000000000000000000000000000000000000000..3b444a75fb04367de0ad6da737a58da3ee3507c2
--- /dev/null
+++ b/typo3/sysext/core/Documentation/Changelog/master/Breaking-79622-SpaceBeforeAndSpaceAfterAdjustmentsForCSSStyledContent.rst
@@ -0,0 +1,123 @@
+.. include:: ../../Includes.txt
+
+================================================================================
+Breaking: #79622 - SpaceBefore and SpaceAfter adjustments for CSS Styled Content
+================================================================================
+
+See :issue:`79622`
+
+Description
+===========
+
+CSS Styled Content provided the editor the possibility to fine-tune distances
+between content elements. The concept of CSC relied on that the editor
+understood what `margins` are, how they are calculated and had to maintain
+an overview of pixels that where used on the site he is maintaining.
+
+This lead to different problems not only for the editor but also for the
+integrator because he has no control about what the editor fills into these
+fields. Also it was hardly controlable when these distances should be
+variable and change on certain viewports for mobile usage.
+
+To regain control for this behaviour we are now introducing a new concept
+that purely relies on CSS classes, that can be defined by the integrator.
+
+The original fields `spaceAfter` and `spaceBefore` have been dropped, and also
+the method :php:`\TYPO3\CMS\CssStyledContent\Controller\CssStyledContentController::renderSpace`
+is not called anymore.
+
+
+Old TypoScript Rendering
+------------------------
+
+.. code-block:: typoscript
+
+   tt_content.stdWrap.innerWrap.cObject.default.20.20 = USER
+   tt_content.stdWrap.innerWrap.cObject.default.20.20 {
+      userFunc = TYPO3\CMS\CssStyledContent\Controller\CssStyledContentController->renderSpace
+      space = before
+      constant = {$content.spaceBefore}
+      classStdWrap {
+         required = 1
+         noTrimWrap = |csc-space-before-| |
+      }
+   }
+
+
+New TypoScript Rendering
+------------------------
+
+.. code-block:: typoscript
+
+   tt_content.stdWrap.innerWrap.cObject.default.20.20 = TEXT
+   tt_content.stdWrap.innerWrap.cObject.default.20.20 {
+      field = space_before_class
+      required = 1
+      noTrimWrap = |csc-space-before-| |
+   }
+
+
+Impact
+======
+
+Userdefined distances between content elements are missing.
+
+
+Affected Installations
+======================
+
+All instances that use  CSS Styled Content and have spaceBefore or spaceAfter
+values set to generate more space between their content elements.
+
+
+Check if your site is affected
+------------------------------
+
+.. code-block:: mysql
+
+   SELECT
+      uid,
+      pid,
+      spaceBefore,
+      spaceAfter
+   FROM
+      tt_content
+   WHERE
+      (spaceBefore > 0 OR spaceAfter > 0)
+      AND deleted = 0
+
+
+Migration
+=========
+
+There is no automatic migration available. If a migration is nessesary you need
+to check the new presets available and migrate the pixels defined before to the
+a preset of your choice.
+
+
+Example
+-------
+
+.. code-block:: mysql
+
+   UPDATE
+      tt_content
+   SET
+      spaceAfter = 0,
+      space_after_class = 'medium'
+   WHERE
+      spaceAfter >= 42
+      AND spaceAfter < 56
+
+
+Replacement Documentation
+-------------------------
+
+For detailed information about the replacement of spaceBefore and spaceAfter,
+please head over to the feature documentation of SpaceBefore- and SpaceAfterClass
+for CSS Styled Content.
+
+Feature-79622-SpaceBeforeAndSpaceAfterClassForCssStyledContent.rst
+
+
+.. index:: Frontend
diff --git a/typo3/sysext/core/Documentation/Changelog/master/Breaking-79622-StreamliningStructureOfCSSStyledContentAndFluidStyledContent.rst b/typo3/sysext/core/Documentation/Changelog/master/Breaking-79622-StreamliningStructureOfCSSStyledContentAndFluidStyledContent.rst
new file mode 100644
index 0000000000000000000000000000000000000000..1ddf24ae6eeb3e9062b70397af77e3e389e423fb
--- /dev/null
+++ b/typo3/sysext/core/Documentation/Changelog/master/Breaking-79622-StreamliningStructureOfCSSStyledContentAndFluidStyledContent.rst
@@ -0,0 +1,142 @@
+.. include:: ../../Includes.txt
+
+========================================================================================
+Breaking: #79622 - Streamlining structure of CSS Styled Content and Fluid Styled Content
+========================================================================================
+
+See :issue:`79622`
+
+Description
+===========
+
+The file structures of CSS Styled Content and Fluid Styled Content have been streamlined.
+
+
+File structure of CSS Styled Content
+------------------------------------
+
+.. code-block::
+
+   - Configuration/TypoScript
+   | - ContentElement
+   | | - Bullets.txt
+   | | - Div.txt
+   | | - Header.txt
+   | | - Html.txt
+   | | - Image.txt
+   | | - List.txt
+   | | - MenuAbstract.txt
+   | | - MenuCategorizedContent.txt
+   | | - MenuCategorizedPages.txt
+   | | - MenuPages.txt
+   | | - MenuRecentlyUpdated.txt
+   | | - MenuRelatedPages.txt
+   | | - MenuSection.txt
+   | | - MenuSectionPages.txt
+   | | - MenuSitemap.txt
+   | | - MenuSitemapPages.txt
+   | | - MenuSubpages.txt
+   | | - Shortcut.txt
+   | | - Table.txt
+   | | - Text.txt
+   | | - Textmedia.txt
+   | | - Textpic.txt
+   | | - Uploads.txt
+   | - ContentElementPartials
+   | | - Menu.txt
+   | - Helper
+   | | - ParseFunc.txt
+   | | - StandardHeader.txt
+   | | - StylesContent.txt
+   | - Styling
+   | | - setup.txt
+   | - constants.txt
+   | - setup.txt
+
+
+File structure of Fluid Styled Content
+--------------------------------------
+
+.. code-block::
+
+   - Configuration/TypoScript
+   | - ContentElement
+   | | - Bullets.txt
+   | | - Div.txt
+   | | - Header.txt
+   | | - Html.txt
+   | | - Image.txt
+   | | - List.txt
+   | | - MenuAbstract.txt
+   | | - MenuCategorizedContent.txt
+   | | - MenuCategorizedPages.txt
+   | | - MenuPages.txt
+   | | - MenuRecentlyUpdated.txt
+   | | - MenuRelatedPages.txt
+   | | - MenuSection.txt
+   | | - MenuSectionPages.txt
+   | | - MenuSitemap.txt
+   | | - MenuSitemapPages.txt
+   | | - MenuSubpages.txt
+   | | - Shortcut.txt
+   | | - Table.txt
+   | | - Text.txt
+   | | - Textmedia.txt
+   | | - Textpic.txt
+   | | - Uploads.txt
+   | - Helper
+   | | - FluidContent.txt
+   | | - ParseFunc.txt
+   | - Styling
+   | | - setup.txt
+   | - constants.txt
+   | - setup.txt
+
+
+Impact
+======
+
+TYPO3 will fail to load the rendering definitions correctly if the paths are
+not included matching the new file locations.
+
+
+Affected Installations
+======================
+
+All installations that are referring to the previous location of the rendering
+definitions. Please check if your using any of these paths for including the
+rendering definitions.
+
+
+CSS Styled Content
+------------------
+
+- EXT:css_styled_content/static/v4.5
+- EXT:css_styled_content/static/v4.6
+- EXT:css_styled_content/static/v4.7
+- EXT:css_styled_content/static/v6.0
+- EXT:css_styled_content/static/v6.1
+- EXT:css_styled_content/static/v6.2
+- EXT:css_styled_content/static
+- EXT:css_styled_content/Configuration/TypoScript/v7
+
+
+Fluid Styled Content
+--------------------
+
+- EXT:fluid_styled_content/TypoScript/Static
+
+
+Migration
+=========
+
+Database entries can automatically upgraded to the new locations. If you have
+references in your TypoScript files you need to to the migration manually.
+
+Use the new locations for accessing the TypoScript configuration.
+
+- `CSS Styled Content` = EXT:css_styled_content/Configuration/TypoScript/
+- `Fluid Styled Content` = EXT:fluid_styled_content/Configuration/TypoScript/
+
+
+.. index:: Fluid, Frontend
diff --git a/typo3/sysext/core/Documentation/Changelog/master/Deprecation-79622-DeprecationOfCSSStyledContent.rst b/typo3/sysext/core/Documentation/Changelog/master/Deprecation-79622-DeprecationOfCSSStyledContent.rst
new file mode 100644
index 0000000000000000000000000000000000000000..c8e7b5029a792d56c14834a0453170ade6df5064
--- /dev/null
+++ b/typo3/sysext/core/Documentation/Changelog/master/Deprecation-79622-DeprecationOfCSSStyledContent.rst
@@ -0,0 +1,38 @@
+.. include:: ../../Includes.txt
+
+=======================================================
+Deprecation: #79622 - Deprecation of CSS Styled Content
+=======================================================
+
+See :issue:`79622`
+
+Description
+===========
+
+CSS Styled Content has been a long time the preferred way of rendering
+content in the frontend. Fluid Styled Content was introduced as
+successor of CSC, but the feature set diverged from the beginning. The
+lack of flexibility and incomplete feature set in comparision to CSC made
+it hard to migrate existing instances.
+
+Since TYPO3 CMS 7.6 Fluid-Templates are the defined standard and
+official recommendation for content rendering. The feature set of FSC is
+now matching CSC. Both content renderings are now streamlined to be fully
+compatible with each other. For the period of CMS 8 LTS CSC will share
+the same capabilities to make a transition as easy as possible. CSC is
+now deprecated and goes into maintenance mode and will be removed with
+CMS 9.
+
+
+Affected Installations
+======================
+
+All installations that still use or rely on the content rendering of `css_styled_content`.
+
+
+Migration
+=========
+
+Create a custom content rendering definition or switch to a maintained one like `fluid_styled_content`.
+
+.. index:: Frontend
diff --git a/typo3/sysext/core/Documentation/Changelog/master/Feature-79622-HeaderPositionSupportForFluidStyledContent.rst b/typo3/sysext/core/Documentation/Changelog/master/Feature-79622-HeaderPositionSupportForFluidStyledContent.rst
new file mode 100644
index 0000000000000000000000000000000000000000..45811f04f1fadada3ff153b4ef032db3376221f6
--- /dev/null
+++ b/typo3/sysext/core/Documentation/Changelog/master/Feature-79622-HeaderPositionSupportForFluidStyledContent.rst
@@ -0,0 +1,82 @@
+.. include:: ../../Includes.txt
+
+==================================================================
+Feature: #79622 - Header Position support for Fluid Styled Content
+==================================================================
+
+See :issue:`79622`
+
+Description
+===========
+
+Header position as known from CSS Styled Content is now also supported by
+Fluid Styled Content. This will allow the editor to have more control about
+the alignment of the header in the frontend.
+
+By default all CSS classes for header alignment are prefixed with
+`ce-headline-` to make the css class unique to allow even more adjustments
+without breaking your styling somwhere else.
+
+
+Predefined values for header alignment and resulting CSS classes
+----------------------------------------------------------------
+
+==========   ==========   ====================
+Name         Value        CSS Class
+==========   ==========   ====================
+Default      (empty)      (No CSS Class added)
+Center       center       ce-headline-center
+Right        right        ce-headline-right
+Left         left         ce-headline-left
+
+
+Implementation Example
+----------------------
+
+The following examples are taken from the partials of fluid_styled_content that
+can be found here `EXT:fluid_styled_content/Resources/Private/Partials/Header/All.html`
+and here `EXT:fluid_styled_content/Resources/Private/Partials/Header/Header.html`.
+
+.. code-block:: html
+
+   <f:render partial="Header/Header" arguments="{
+      header: data.header,
+      layout: data.header_layout,
+      positionClass: '{f:if(condition: data.header_position, then: \'ce-headline-{data.header_position}\')}',
+      link: data.header_link,
+      default: settings.defaultHeaderType}" />
+
+.. code-block:: html
+
+   <h1 class="{positionClass}">
+     <f:link.typolink parameter="{link}">{header}</f:link.typolink>
+   </h1>
+
+
+Edit Predefined Options
+-----------------------
+
+.. code-block:: typoscript
+
+   TCEFORM.tt_content.header_position {
+      removeItems = center,left,right
+      addItems {
+         fancyheader = LLL:EXT:extension/Resources/Private/Language/locallang.xlf:fancyHeader
+      }
+   }
+
+.. code-block:: php
+
+   $GLOBALS['TCA']['tt_content']['columns']['header_position']['config']['items'][] = [
+      0 = LLL:EXT:extension/Resources/Private/Language/locallang.xlf:fancyHeader
+      1 = fancyheader
+   ];
+
+
+Impact
+======
+
+Header positions are now available to all editors by default.
+
+
+.. index:: Fluid, Frontend
diff --git a/typo3/sysext/core/Documentation/Changelog/master/Feature-79622-NewContentElementsForFluidStyledContent.rst b/typo3/sysext/core/Documentation/Changelog/master/Feature-79622-NewContentElementsForFluidStyledContent.rst
new file mode 100644
index 0000000000000000000000000000000000000000..e3fbbf7d2b867d98e2732804fa27e01199677fa5
--- /dev/null
+++ b/typo3/sysext/core/Documentation/Changelog/master/Feature-79622-NewContentElementsForFluidStyledContent.rst
@@ -0,0 +1,31 @@
+.. include:: ../../Includes.txt
+
+===============================================================
+Feature: #79622 - New Content Elements for Fluid Styled Content
+===============================================================
+
+See :issue:`79622`
+
+Description
+===========
+
+Content Elements from CSS Styled Content that were previously not supported
+by Fluid Styled Content are now making their comeback in order to share
+the same feature set across both content element renderings.
+
+=================   ==========   =================================================================
+Name                cType        Description
+=================   ==========   =================================================================
+Text                text         A regular text element with header and bodytext fields.
+Text and Images     textpic      Any number of images wrapped right around a regular text element.
+Images              image        Any number of images aligned in columns and rows with a caption.
+
+
+Impact
+======
+
+The content elements Text, Text and Images, Images are now also available
+for use when Fluid Styled Content is used as content rendering definition.
+
+
+.. index:: Frontend
diff --git a/typo3/sysext/core/Documentation/Changelog/master/Feature-79622-NewDefaultLayoutForFluidStyledContent.rst b/typo3/sysext/core/Documentation/Changelog/master/Feature-79622-NewDefaultLayoutForFluidStyledContent.rst
new file mode 100644
index 0000000000000000000000000000000000000000..ca8f4e9e1c974d5389181f2229c5b845f5c51449
--- /dev/null
+++ b/typo3/sysext/core/Documentation/Changelog/master/Feature-79622-NewDefaultLayoutForFluidStyledContent.rst
@@ -0,0 +1,151 @@
+.. include:: ../../Includes.txt
+
+=============================================================
+Feature: #79622 - New default layout for Fluid Styled Content
+=============================================================
+
+See :issue:`79622`
+
+Description
+===========
+
+Previously there have been three layouts you could choose from when you are
+defining your own custom content elements or override an existing template.
+
+To provide a better maintainability and ease the overrides we are reducing
+these to a single layout that is named `Default` with all sections optional
+and fallbacks if the section is not set. Also we are introducing the "DropIn"
+concept.
+
+
+Structure
+---------
+
+The `Default` layout consists of five predefined sections that can be utilized to
+shape the output for your content rendering. In most cases you will not have
+to care about other section than `Main`. The sections will be rendered in that
+exact ordering.
+
+- Before
+- Header
+- Main
+- Footer
+- After
+
+.. code-block:: html
+
+   <f:spaceless>
+      <f:if condition="{data.frame_class} != none">
+         <f:then>
+            <div id="c{data.uid}" class="frame frame-{data.frame_class} frame-type-{data.CType} frame-layout-{data.layout}{f:if(condition: data.space_before_class, then: ' frame-space-before-{data.space_before_class}')}{f:if(condition: data.space_after_class, then: ' frame-space-after-{data.space_after_class}')}">
+               <f:if condition="{data._LOCALIZED_UID}">
+                  <a id="c{data._LOCALIZED_UID}"></a>
+               </f:if>
+               <f:render section="Before" optional="true">
+                  <f:render partial="DropIn/Before/All" arguments="{_all}" />
+               </f:render>
+               <f:render section="Header" optional="true">
+                  <f:render partial="Header/All" arguments="{_all}" />
+               </f:render>
+               <f:render section="Main" optional="true" />
+               <f:render section="Footer" optional="true">
+                  <f:render partial="Footer/All" arguments="{_all}" />
+               </f:render>
+               <f:render section="After" optional="true">
+                  <f:render partial="DropIn/After/All" arguments="{_all}" />
+               </f:render>
+            </div>
+         </f:then>
+         <f:else>
+            <a id="c{data.uid}"></a>
+            <f:if condition="{data._LOCALIZED_UID}">
+               <a id="c{data._LOCALIZED_UID}"></a>
+            </f:if>
+            <f:if condition="{data.space_before_class}">
+               <div class="frame-space-before-{data.space_before_class}"></div>
+            </f:if>
+            <f:render section="Before" optional="true">
+               <f:render partial="DropIn/Before/All" arguments="{_all}" />
+            </f:render>
+            <f:render section="Header" optional="true">
+               <f:render partial="Header/All" arguments="{_all}" />
+            </f:render>
+            <f:render section="Main" optional="true" />
+            <f:render section="Footer" optional="true">
+               <f:render partial="Footer/All" arguments="{_all}" />
+            </f:render>
+            <f:render section="After" optional="true">
+               <f:render partial="DropIn/After/All" arguments="{_all}" />
+            </f:render>
+            <f:if condition="{data.space_after_class}">
+               <div class="frame-space-after-{data.space_after_class}"></div>
+            </f:if>
+         </f:else>
+      </f:if>
+   </f:spaceless>
+
+
+DropIn
+------
+
+The sections `Before` and `After` are so called `DropIn` sections. DropIns
+have been introduced to be able to place additional functionality to all
+content elements without overriding layouts or the templates. DropIn´s are
+basically placeholders/empty partials that are meant to be overridden if necessary.
+
+DropIn Locations:
+
+- Resources/Private/Partials/DropIn/Before/All.html
+- Resources/Private/Partials/DropIn/After/All.html
+
+
+Handling Optional Sections
+--------------------------
+
+Since all sections are optional you do not need to reference them in your
+templates. All sections except the `Main` section have a fallback to a default
+behaviour if they are not set in the template. This is for example used to render
+the content element header.
+
+.. code-block:: html
+
+   <f:render section="Header" optional="true">
+      <f:render partial="Header/All" arguments="{_all}" />
+   </f:render>
+
+In some cases it can be useful to disable or override the default fallback of a
+section. For example if the HTML does not want to render the header at all.
+
+.. code-block:: html
+
+   <f:layout name="Default" />
+   <f:section name="Header" />
+   <f:section name="Main">
+      <f:format.raw>{data.bodytext}</f:format.raw>
+   </f:section>
+
+.. code-block:: html
+
+   <f:layout name="Default" />
+   <f:section name="Header">
+      <f:if condition="{gallery.position.noWrap} != 1">
+         <f:render partial="Header/All" arguments="{_all}" />
+      </f:if>
+   </f:section>
+   <f:section name="Main">
+      ...
+   </f:section>
+
+
+Basic Usage
+-----------
+
+.. code-block:: html
+
+   <f:layout name="Default" />
+   <f:section name="Main">
+      ...
+   </f:section>
+
+
+.. index:: Fluid, Frontend
diff --git a/typo3/sysext/core/Documentation/Changelog/master/Feature-79622-SpaceBeforeAndSpaceAfterClassForCssStyledContent.rst b/typo3/sysext/core/Documentation/Changelog/master/Feature-79622-SpaceBeforeAndSpaceAfterClassForCssStyledContent.rst
new file mode 100644
index 0000000000000000000000000000000000000000..c4dd1daab8c6d131eb2bc42670a2e7b782199ae6
--- /dev/null
+++ b/typo3/sysext/core/Documentation/Changelog/master/Feature-79622-SpaceBeforeAndSpaceAfterClassForCssStyledContent.rst
@@ -0,0 +1,92 @@
+.. include:: ../../Includes.txt
+
+=========================================================================
+Feature: #79622 - SpaceBefore- and SpaceAfterClass for CSS Styled Content
+=========================================================================
+
+See :issue:`79622`
+
+Description
+===========
+
+CSS Styled Content provided the editor the possibility to fine-tune distances
+between content elements. The concept of CSC relied on that the editor
+understood what `margins` are, how they are calculated and had to maintain
+an overview of pixels that where used on the site he is maintaining.
+
+This lead to different problems not only for the editor but also for the
+integrator because he has no control about what the editor fills into these
+fields. Also it was hardly controlable when these distances should be
+variable and change on certain viewports for mobile usage.
+
+To regain control for this behaviour we are now introducing a new concept
+that purely relies on CSS classes, that can be defined by the integrator.
+
+All CSS classes are by default prefixed by `frame-space-before-` or
+`frame-spacer-after-` and added to the surrounding frame when available.
+If the frame if the content element is set to none, placeholder elements
+are placed before and after to generate that distance.
+
+The default CSS definitions are placed in the optional static template
+`TypoScript Content Elements CSS (optional)`. If this is not included
+only the CSS classes will be added but without having CSS rules matching
+these classes.
+
+
+Example for before classes
+--------------------------
+
+=============   =============   ===============================   =============
+Name            Value           CSS Class                         Margin
+=============   =============   ===============================   =============
+None            (empty)         (No CSS Class added)              (No Margin)
+Extra Small     extra-small     csc-space-before-extra-small      1em
+Small           small           csc-space-before-small            2em
+Medium          medium          csc-space-before-medium           3em
+Large           large           csc-space-before-large            4em
+Extra Large     extra-large     csc-space-before-extra-large      5em
+
+
+Example Output
+--------------
+
+.. code-block:: html
+
+   <div id="c43" class="... csc-space-before-medium">
+      ...
+   </div>
+
+.. code-block:: html
+
+   <a id="c43"></a>
+   <div class="csc-space-before-medium"></div>
+   ...
+   <div class="csc-space-after-medium"></div>
+
+
+Edit Predefined Options
+-----------------------
+
+.. code-block:: typoscript
+
+   TCEFORM.tt_content.space_before_class {
+      removeItems = extra-small,small,medium,large,extra-large
+      addItems {
+         superspace = LLL:EXT:extension/Resources/Private/Language/locallang.xlf:superSpace
+      }
+   }
+
+.. code-block:: php
+
+   $GLOBALS['TCA']['tt_content']['columns']['space_before_class']['config']['items'][] = [
+      0 = LLL:EXT:extension/Resources/Private/Language/locallang.xlf:superSpace
+      1 = superspace
+   ];
+
+
+Impact
+======
+
+SpaceBefore and SpaceAfter is now available to all CSS Styled Content elements.
+
+.. index:: Frontend
diff --git a/typo3/sysext/core/Documentation/Changelog/master/Feature-79622-SpaceBeforeAndSpaceAfterClassForFluidStyledContent.rst b/typo3/sysext/core/Documentation/Changelog/master/Feature-79622-SpaceBeforeAndSpaceAfterClassForFluidStyledContent.rst
new file mode 100644
index 0000000000000000000000000000000000000000..a00e57c9779b31ff01905b1f5ea496926fcf382d
--- /dev/null
+++ b/typo3/sysext/core/Documentation/Changelog/master/Feature-79622-SpaceBeforeAndSpaceAfterClassForFluidStyledContent.rst
@@ -0,0 +1,91 @@
+.. include:: ../../Includes.txt
+
+===========================================================================
+Feature: #79622 - SpaceBefore- and SpaceAfterClass for Fluid Styled Content
+===========================================================================
+
+See :issue:`79622`
+
+Description
+===========
+
+CSS Styled Content provided the editor the possibility to fine-tune distances
+between content elements. The concept of CSC relied on that the editor
+understood what `margins` are, how they are calculated and had to maintain
+an overview of pixels that where used on the site he is maintaining.
+
+This lead to different problems not only for the editor but also for the
+integrator because he has no control about what the editor fills into these
+fields. Also it was hardly controlable when these distances should be
+variable and change on certain viewports for mobile usage.
+
+To regain control for this behaviour we are now introducing a new concept
+that purely relies on CSS classes, that can be defined by the integrator.
+
+All CSS classes are by default prefixed by `frame-space-before-` or
+`frame-spacer-after-` and added to the surrounding frame when available.
+If the frame if the content element is set to none, placeholder elements
+are placed before and after to generate that distance.
+
+The default CSS definitions are placed in the optional static template
+`Fluid Content Elements CSS (optional)`. If this is not included only the
+CSS classes will be added but without having CSS rules matching these classes.
+
+
+Example for before classes
+--------------------------
+
+=============   =============   ===============================   =============
+Name            Value           CSS Class                         Margin
+=============   =============   ===============================   =============
+None            (empty)         (No CSS Class added)              (No Margin)
+Extra Small     extra-small     frame-space-before-extra-small     1em
+Small           small           frame-space-before-small           2em
+Medium          medium          frame-space-before-medium          3em
+Large           large           frame-space-before-large           4em
+Extra Large     extra-large     frame-space-before-extra-large     5em
+
+
+Example Output
+--------------
+
+.. code-block:: html
+
+   <div id="c43" class="frame ... frame-space-before-medium">
+      ...
+   </div>
+
+.. code-block:: html
+
+   <a id="c43"></a>
+   <div class="frame-space-before-medium"></div>
+   ...
+   <div class="frame-space-after-medium"></div>
+
+
+Edit predefined options
+-----------------------
+
+.. code-block:: typoscript
+
+   TCEFORM.tt_content.space_before_class {
+      removeItems = extra-small,small,medium,large,extra-large
+      addItems {
+         superspace = LLL:EXT:extension/Resources/Private/Language/locallang.xlf:superSpace
+      }
+   }
+
+.. code-block:: php
+
+   $GLOBALS['TCA']['tt_content']['columns']['space_before_class']['config']['items'][] = [
+      0 = LLL:EXT:extension/Resources/Private/Language/locallang.xlf:superSpace
+      1 = superspace
+   ];
+
+
+Impact
+======
+
+SpaceBefore and SpaceAfter is now available to all Fluid Styled Content elements.
+
+.. index:: Fluid, Frontend
diff --git a/typo3/sysext/core/Documentation/Changelog/master/Feature-79622-TextmediaSupportForCSSStyledContent.rst b/typo3/sysext/core/Documentation/Changelog/master/Feature-79622-TextmediaSupportForCSSStyledContent.rst
new file mode 100644
index 0000000000000000000000000000000000000000..c2238c0a28c3452bd332959012b36e37f6a388c0
--- /dev/null
+++ b/typo3/sysext/core/Documentation/Changelog/master/Feature-79622-TextmediaSupportForCSSStyledContent.rst
@@ -0,0 +1,28 @@
+.. include:: ../../Includes.txt
+
+==========================================================
+Feature: #79622 - Textmedia support for CSS Styled Content
+==========================================================
+
+See :issue:`79622`
+
+Description
+===========
+
+CSS Styled content now comes with support for the content element "Text and Media"
+that was previously exclusive to Fluid Styled Content, to make the transition from
+CSS Styled Content to Fluid Styled content more easy.
+
+The "Text and Media" implementation uses the fluid rendering for the Gallery from
+the Fluid Styled Content implementation and also the ClickEnlarge ViewHelper.
+This is only a temporary solution until we remove CSS Styled Content from the
+TYPO3 Core with CMS 9.
+
+
+Impact
+======
+
+"Text and Media" content element is now also available for CSS Styled Content.
+
+
+.. index:: Frontend
diff --git a/typo3/sysext/css_styled_content/Classes/Controller/CssStyledContentController.php b/typo3/sysext/css_styled_content/Classes/Controller/CssStyledContentController.php
index 5bb8dfcf91544b87b19e6ea785124adda1f413ee..8ab3fa2c302413ac3c3465b67d3dd3348407380f 100644
--- a/typo3/sysext/css_styled_content/Classes/Controller/CssStyledContentController.php
+++ b/typo3/sysext/css_styled_content/Classes/Controller/CssStyledContentController.php
@@ -74,19 +74,29 @@ class CssStyledContentController extends \TYPO3\CMS\Frontend\Plugin\AbstractPlug
             if ($content === '') {
                 return '';
             }
-            // get flexform values
-            $caption = trim(htmlspecialchars($this->pi_getFFvalue($this->cObj->data['pi_flexform'], 'acctables_caption')));
-            $useTfoot = trim($this->pi_getFFvalue($this->cObj->data['pi_flexform'], 'acctables_tfoot'));
-            $headerPos = $this->pi_getFFvalue($this->cObj->data['pi_flexform'], 'acctables_headerpos');
-            $noStyles = $this->pi_getFFvalue($this->cObj->data['pi_flexform'], 'acctables_nostyles');
-            $tableClass = $this->pi_getFFvalue($this->cObj->data['pi_flexform'], 'acctables_tableclass');
-            $delimiter = trim($this->pi_getFFvalue($this->cObj->data['pi_flexform'], 'tableparsing_delimiter', 's_parsing'));
+            // Get configuration
+            $caption = trim($this->cObj->data['table_caption']);
+            $useTfoot = trim($this->cObj->data['table_tfoot']);
+            $headerPosition = trim($this->cObj->data['table_header_position']);
+            switch ($headerPosition) {
+                case '1':
+                    $headerPos = 'top';
+                    break;
+                case '2':
+                    $headerPos = 'left';
+                    break;
+                default:
+                    $headerPos = '';
+                    break;
+            }
+            $tableClass = trim($this->cObj->data['table_class']);
+            $delimiter = trim($this->cObj->data['table_delimiter']);
             if ($delimiter) {
                 $delimiter = chr((int)$delimiter);
             } else {
                 $delimiter = '|';
             }
-            $quotedInput = trim($this->pi_getFFvalue($this->cObj->data['pi_flexform'], 'tableparsing_quote', 's_parsing'));
+            $quotedInput = trim($this->cObj->data['table_enclosure']);
             if ($quotedInput) {
                 $quotedInput = chr((int)$quotedInput);
             } else {
@@ -114,29 +124,20 @@ class CssStyledContentController extends \TYPO3\CMS\Frontend\Plugin\AbstractPlug
                         $cells[$a] = ' ';
                     }
                     $cells[$a] = preg_replace('|<br */?>|i', LF, $cells[$a]);
-                    $cellAttribs = $noStyles ? '' : ($a > 0 && $cols - 1 == $a ? ' class="td-last td-' . $a . '"' : ' class="td-' . $a . '"');
                     if ($headerPos === 'top' && !$k || $headerPos === 'left' && !$a) {
                         $scope = ' scope="' . $headerScope . '"';
                         $scope .= ' id="' . $headerIdPrefix . ($headerScope === 'col' ? $a : $k) . '"';
-                        $newCells[$a] = '
-							<th' . $cellAttribs . $scope . '>' . $this->cObj->stdWrap($cells[$a], $conf['innerStdWrap.']) . '</th>';
+                        $newCells[$a] = '<th' . $scope . '>' . $this->cObj->stdWrap($cells[$a], $conf['innerStdWrap.']) . '</th>';
                     } else {
                         if (empty($headerPos)) {
                             $accessibleHeader = '';
                         } else {
                             $accessibleHeader = ' headers="' . $headerIdPrefix . ($headerScope === 'col' ? $a : $k) . '"';
                         }
-                        $newCells[$a] = '
-							<td' . $cellAttribs . $accessibleHeader . '>' . $this->cObj->stdWrap($cells[$a], $conf['innerStdWrap.']) . '</td>';
+                        $newCells[$a] = '<td' . $accessibleHeader . '>' . $this->cObj->stdWrap($cells[$a], $conf['innerStdWrap.']) . '</td>';
                     }
                 }
-                if (!$noStyles) {
-                    $oddEven = $k % 2 ? 'tr-odd' : 'tr-even';
-                    $rowAttribs = $k > 0 && $rCount - 1 == $k ? ' class="' . $oddEven . ' tr-last"' : ' class="' . $oddEven . ' tr-' . $k . '"';
-                }
-                $rows[$k] = '
-					<tr' . $rowAttribs . '>' . implode('', $newCells) . '
-					</tr>';
+                $rows[$k] = '<tr' . $rowAttribs . '>' . implode('', $newCells) . '</tr>';
             }
             $addTbody = 0;
             $tableContents = '';
@@ -145,14 +146,12 @@ class CssStyledContentController extends \TYPO3\CMS\Frontend\Plugin\AbstractPlug
 					<caption>' . $caption . '</caption>';
             }
             if ($headerPos === 'top' && $rows[0]) {
-                $tableContents .= '<thead>' . $rows[0] . '
-					</thead>';
+                $tableContents .= '<thead>' . $rows[0] . '</thead>';
                 unset($rows[0]);
                 $addTbody = 1;
             }
             if ($useTfoot) {
-                $tableContents .= '
-					<tfoot>' . $rows[$rCount - 1] . '</tfoot>';
+                $tableContents .= '<tfoot>' . $rows[$rCount - 1] . '</tfoot>';
                 unset($rows[$rCount - 1]);
                 $addTbody = 1;
             }
@@ -164,16 +163,10 @@ class CssStyledContentController extends \TYPO3\CMS\Frontend\Plugin\AbstractPlug
             // Set header type:
             $type = (int)$this->cObj->data['layout'];
             // Table tag params.
-            $tableTagParams = $this->getTableAttributes($conf, $type);
-            if (!$noStyles) {
-                $tableTagParams['class'] = 'contenttable contenttable-' . $type . ($tableClass ? ' ' . $tableClass : '') . $tableTagParams['class'];
-            } elseif ($tableClass) {
-                $tableTagParams['class'] = $tableClass;
-            }
+            $tableTagParams = [];
+            $tableTagParams['class'] = 'contenttable contenttable-' . $type . ($tableClass ? ' contenttable-' . $tableClass : '');
             // Compile table output:
-            $out = '
-				<table ' . GeneralUtility::implodeAttributes($tableTagParams) . '>' . $tableContents . '
-				</table>';
+            $out = '<table ' . GeneralUtility::implodeAttributes($tableTagParams) . '>' . $tableContents . '</table>';
             // Return value
             return $out;
         }
@@ -389,8 +382,6 @@ class CssStyledContentController extends \TYPO3\CMS\Frontend\Plugin\AbstractPlug
         $netW = $maxW - $colspacing * ($colCount - 1) - $colCount * $border * ($borderThickness + $borderSpace) * 2;
         // Specify the maximum width for each column
         $columnWidths = $this->getImgColumnWidths($conf, $colCount, $netW);
-        $image_compression = (int)$this->cObj->stdWrap($conf['image_compression'], $conf['image_compression.']);
-        $image_effects = (int)$this->cObj->stdWrap($conf['image_effects'], $conf['image_effects.']);
         $image_frames = (int)$this->cObj->stdWrap($conf['image_frames.']['key'], $conf['image_frames.']['key.']);
         // EqualHeight
         $equalHeight = (int)$this->cObj->stdWrap($conf['equalH'], $conf['equalH.']);
@@ -526,29 +517,11 @@ class CssStyledContentController extends \TYPO3\CMS\Frontend\Plugin\AbstractPlug
             if (!empty($customRendering)) {
                 $imgsTag[$imgKey] = $customRendering;
             } elseif ($imgConf || $imgConf['file']) {
-                if ($this->cObj->image_effects[$image_effects]) {
-                    $imgConf['file.']['params'] .= ' ' . $this->cObj->image_effects[$image_effects];
-                }
                 if ($image_frames) {
                     if (is_array($conf['image_frames.'][$image_frames . '.'])) {
                         $imgConf['file.']['m.'] = $conf['image_frames.'][$image_frames . '.'];
                     }
                 }
-                if ($image_compression && $imgConf['file'] !== 'GIFBUILDER') {
-                    if ($image_compression == 1) {
-                        $tempImport = $imgConf['file.']['import'];
-                        $tempImport_dot = $imgConf['file.']['import.'];
-                        $tempTreatIdAsReference = $imgConf['file.']['treatIdAsReference'];
-                        unset($imgConf['file.']);
-                        $imgConf['file.']['import'] = $tempImport;
-                        $imgConf['file.']['import.'] = $tempImport_dot;
-                        $imgConf['file.']['treatIdAsReference'] = $tempTreatIdAsReference;
-                    } elseif (isset($this->cObj->image_compression[$image_compression])) {
-                        $imgConf['file.']['params'] .= ' ' . $this->cObj->image_compression[$image_compression]['params'];
-                        $imgConf['file.']['ext'] = $this->cObj->image_compression[$image_compression]['ext'];
-                        unset($imgConf['file.']['ext.']);
-                    }
-                }
                 if ($titleInLink && !$titleInLinkAndImg) {
                     // Check if the image will be linked
                     $link = $this->cObj->imageLinkWrap('', $this->cObj->getCurrentFile() ?: $totalImagePath, $imgConf['imageLinkWrap.']);
@@ -578,33 +551,14 @@ class CssStyledContentController extends \TYPO3\CMS\Frontend\Plugin\AbstractPlug
         $imageBlockWidth = max($imageRowsFinalWidths) + $colspacing * ($colCount - 1) + $colCount * $border * ($borderSpace + $borderThickness) * 2;
         $this->frontendController->register['rowwidth'] = $imageBlockWidth;
         $this->frontendController->register['rowWidthPlusTextMargin'] = $imageBlockWidth + $textMargin;
-        // noRows is in fact just one ROW, with the amount of columns specified, where the images are placed in.
-        // noCols is just one COLUMN, each images placed side by side on each row
-        $noRows = $this->cObj->stdWrap($conf['noRows'], $conf['noRows.']);
-        $noCols = $this->cObj->stdWrap($conf['noCols'], $conf['noCols.']);
-        // noRows overrides noCols. They cannot exist at the same time.
-        if ($noRows) {
-            $noCols = 0;
-            $rowCount = 1;
-        }
-        if ($noCols) {
-            $colCount = 1;
-        }
         // Edit icons:
         if (!is_array($conf['editIcons.'])) {
             $conf['editIcons.'] = [];
         }
         $editIconsHTML = $conf['editIcons'] && $this->frontendController->beUserLogin ? $this->cObj->editIcons('', $conf['editIcons'], $conf['editIcons.']) : '';
-        // If noRows, we need multiple imagecolumn wraps
         $imageWrapCols = 1;
-        if ($noRows) {
-            $imageWrapCols = $colCount;
-        }
         // User wants to separate the rows, but only do that if we do have rows
         $separateRows = $this->cObj->stdWrap($conf['separateRows'], $conf['separateRows.']);
-        if ($noRows) {
-            $separateRows = 0;
-        }
         if ($rowCount == 1) {
             $separateRows = 0;
         }
@@ -624,13 +578,6 @@ class CssStyledContentController extends \TYPO3\CMS\Frontend\Plugin\AbstractPlug
             $addClassesImageConf = $this->frontendController->tmpl->splitConfArray(['addClassesImage' => $addClassesImage], $imagesInColumns);
             $rows = [];
             $currentImage = 0;
-            // Set the class for the caption (split or global)
-            $classCaptionAlign = [
-                'center' => 'csc-textpic-caption-c',
-                'right' => 'csc-textpic-caption-r',
-                'left' => 'csc-textpic-caption-l'
-            ];
-            $captionAlign = $this->cObj->stdWrap($conf['captionAlign'], $conf['captionAlign.']);
             // Iterate over the rows
             for ($rowCounter = 1; $rowCounter <= $rowCount; $rowCounter++) {
                 $rowColumns = [];
@@ -667,9 +614,6 @@ class CssStyledContentController extends \TYPO3\CMS\Frontend\Plugin\AbstractPlug
                             // Get the caption
                             if (!$renderGlobalCaption) {
                                 $imageMarkers['caption'] = $this->cObj->stdWrap($this->cObj->cObjGet($conf['caption.'], 'caption.'), $conf['caption.']);
-                                if ($captionAlign) {
-                                    $captionMarkers['classes'] = ' ' . $classCaptionAlign[$captionAlign];
-                                }
                                 $imageMarkers['caption'] = $this->cObj->substituteMarkerArray($imageMarkers['caption'], $captionMarkers, '###|###', 1, 1);
                             }
                             if ($addClassesImageConf[$imagesCounter - 1]['addClassesImage']) {
@@ -687,9 +631,7 @@ class CssStyledContentController extends \TYPO3\CMS\Frontend\Plugin\AbstractPlug
                     }
                     $rowColumns[] = $this->cObj->substituteMarkerArray($rowColumn, $columnMarkers, '###|###', 1, 1);
                 }
-                if ($noRows) {
-                    $rowConfiguration = $conf['noRowsStdWrap.'];
-                } elseif ($rowCounter == $rowCount) {
+                if ($rowCounter == $rowCount) {
                     $rowConfiguration = $conf['lastRowStdWrap.'];
                 } else {
                     $rowConfiguration = $conf['rowStdWrap.'];
@@ -706,9 +648,6 @@ class CssStyledContentController extends \TYPO3\CMS\Frontend\Plugin\AbstractPlug
             // Add the global caption to the allStdWrap marker array if set
             if ($globalCaption) {
                 $allMarkers['caption'] = $globalCaption;
-                if ($captionAlign) {
-                    $classes[] = $classCaptionAlign[$captionAlign];
-                }
             }
             // Set the margin for image + text, no wrap always to avoid multiple stylesheets
             $noWrapMargin = (int)(($maxWInText ? $maxWInText : $fiftyPercentWidthInText) + (int)$this->cObj->stdWrap($conf['textMargin'], $conf['textMargin.']));
@@ -819,31 +758,14 @@ class CssStyledContentController extends \TYPO3\CMS\Frontend\Plugin\AbstractPlug
                 }
                 if ($separateRows) {
                     $thisImages .= $allRows;
-                } else {
-                    $thisImages .= $this->cObj->stdWrap($allRows, $conf['noRowsStdWrap.']);
-                }
-                if ($noRows) {
-                    // Only needed to make columns, rather than rows:
-                    $images .= $this->cObj->stdWrap($thisImages, $conf['imageColumnStdWrap.']);
-                } else {
-                    $images .= $thisImages;
                 }
+                $images .= $thisImages;
             }
             // Add the global caption, if not split
             if ($globalCaption) {
                 $images .= $globalCaption;
             }
             // CSS-classes
-            $captionClass = '';
-            $classCaptionAlign = [
-                'center' => 'csc-textpic-caption-c',
-                'right' => 'csc-textpic-caption-r',
-                'left' => 'csc-textpic-caption-l'
-            ];
-            $captionAlign = $this->cObj->stdWrap($conf['captionAlign'], $conf['captionAlign.']);
-            if ($captionAlign) {
-                $captionClass = $classCaptionAlign[$captionAlign];
-            }
             $borderClass = '';
             if ($border) {
                 $borderClass = $conf['borderClass'] ?: 'csc-textpic-border';
@@ -851,7 +773,6 @@ class CssStyledContentController extends \TYPO3\CMS\Frontend\Plugin\AbstractPlug
             // Multiple classes with all properties, to be styled in CSS
             $class = '';
             $class .= $borderClass ? ' ' . $borderClass : '';
-            $class .= $captionClass ? ' ' . $captionClass : '';
             $class .= $equalHeight ? ' csc-textpic-equalheight' : '';
             $addClasses = $this->cObj->stdWrap($conf['addClasses'], $conf['addClasses.']);
             $class .= $addClasses ? ' ' . $addClasses : '';
@@ -967,7 +888,7 @@ class CssStyledContentController extends \TYPO3\CMS\Frontend\Plugin\AbstractPlug
      ************************************/
 
     /**
-     * Returns table attributes for uploads / tables.
+     * Returns table attributes for tables. Not used anymore.
      *
      * @param array $conf TypoScript configuration array
      * @param int $type The "layout" type
diff --git a/typo3/sysext/css_styled_content/Classes/Hooks/TcaCacheClearing.php b/typo3/sysext/css_styled_content/Classes/Hooks/TcaCacheClearing.php
deleted file mode 100644
index b7ea4c28da5ca667af031b9211bb64bfb15bfb23..0000000000000000000000000000000000000000
--- a/typo3/sysext/css_styled_content/Classes/Hooks/TcaCacheClearing.php
+++ /dev/null
@@ -1,34 +0,0 @@
-<?php
-namespace TYPO3\CMS\CssStyledContent\Hooks;
-
-/*
- * This file is part of the TYPO3 CMS project.
- *
- * It is free software; you can redistribute it and/or modify it under
- * the terms of the GNU General Public License, either version 2
- * of the License, or any later version.
- *
- * For the full copyright and license information, please read the
- * LICENSE.txt file that was distributed with this source code.
- *
- * The TYPO3 project - inspiring people to share!
- */
-use TYPO3\CMS\Core\Cache\CacheManager;
-use TYPO3\CMS\Core\Utility\GeneralUtility;
-
-/**
- * Utility to clear the TCA cache
- */
-class TcaCacheClearing
-{
-    /**
-     * Flush the cache_core cache to remove cached TCA
-     *
-     * @return void
-     */
-    public static function clearTcaCache()
-    {
-        $cacheManager = GeneralUtility::makeInstance(CacheManager::class);
-        $cacheManager->getCache('cache_core')->flush();
-    }
-}
diff --git a/typo3/sysext/css_styled_content/Classes/ViewHelpers/Link/ClickEnlargeViewHelper.php b/typo3/sysext/css_styled_content/Classes/ViewHelpers/Link/ClickEnlargeViewHelper.php
new file mode 100644
index 0000000000000000000000000000000000000000..6baa6147dc92f4d69f9c80595e3ca45ca41661e7
--- /dev/null
+++ b/typo3/sysext/css_styled_content/Classes/ViewHelpers/Link/ClickEnlargeViewHelper.php
@@ -0,0 +1,113 @@
+<?php
+namespace TYPO3\CMS\CssStyledContent\ViewHelpers\Link;
+
+/*
+ * This file is part of the TYPO3 CMS project.
+ *
+ * It is free software; you can redistribute it and/or modify it under
+ * the terms of the GNU General Public License, either version 2
+ * of the License, or any later version.
+ *
+ * For the full copyright and license information, please read the
+ * LICENSE.txt file that was distributed with this source code.
+ *
+ * The TYPO3 project - inspiring people to share!
+ */
+
+use TYPO3\CMS\Core\Resource\FileInterface;
+use TYPO3\CMS\Core\Resource\FileReference;
+use TYPO3\CMS\Core\Utility\GeneralUtility;
+use TYPO3\CMS\Extbase\Service\TypoScriptService;
+use TYPO3\CMS\Fluid\Core\ViewHelper\AbstractViewHelper;
+use TYPO3\CMS\Frontend\ContentObject\ContentObjectRenderer;
+use TYPO3Fluid\Fluid\Core\Rendering\RenderingContextInterface;
+
+/**
+ * A view helper for creating a link for an image popup.
+ *
+ * = Example =
+ *
+ * <code title="enlarge image on click">
+ * <ce:link.clickEnlarge image="{image}" configuration="{settings.images.popup}"><img src=""></ce:link.clickEnlarge>
+ * </code>
+ *
+ * <output>
+ * <a href="url" onclick="javascript" target="thePicture"><img src=""></a>
+ * </output>
+ */
+class ClickEnlargeViewHelper extends AbstractViewHelper
+{
+    /**
+     * @var bool
+     */
+    protected $escapeOutput = false;
+
+    /**
+     * Initialize ViewHelper arguments
+     *
+     * @return void
+     */
+    public function initializeArguments()
+    {
+        $this->registerArgument('image', FileReference::class, 'The original image file', true);
+        $this->registerArgument(
+            'configuration',
+            'mixed',
+            'String, \TYPO3\CMS\Core\Resource\File or \TYPO3\CMS\Core\Resource\FileReference with link configuration',
+            true
+        );
+    }
+
+    /**
+     * Render the view helper
+     *
+     * @return string
+     */
+    public function render()
+    {
+        return self::renderStatic(
+            $this->arguments,
+            $this->buildRenderChildrenClosure(),
+            $this->renderingContext
+        );
+    }
+
+    /**
+     * @param array $arguments
+     * @param \Closure $renderChildrenClosure
+     * @param RenderingContextInterface $renderingContext
+     * @return string
+     */
+    public static function renderStatic(array $arguments, \Closure $renderChildrenClosure, RenderingContextInterface $renderingContext)
+    {
+        $image = $arguments['image'];
+        if ($image instanceof FileInterface) {
+            self::getContentObjectRenderer()->setCurrentFile($image);
+        }
+        $configuration = self::getTypoScriptService()->convertPlainArrayToTypoScriptArray($arguments['configuration']);
+        $content = $renderChildrenClosure();
+        $configuration['enable'] = true;
+
+        return self::getContentObjectRenderer()->imageLinkWrap($content, $image, $configuration);
+    }
+
+    /**
+     * @return ContentObjectRenderer
+     */
+    protected static function getContentObjectRenderer()
+    {
+        return $GLOBALS['TSFE']->cObj;
+    }
+
+    /**
+     * @return TypoScriptService
+     */
+    protected static function getTypoScriptService()
+    {
+        static $typoScriptService;
+        if ($typoScriptService === null) {
+            $typoScriptService = GeneralUtility::makeInstance(TypoScriptService::class);
+        }
+        return $typoScriptService;
+    }
+}
diff --git a/typo3/sysext/css_styled_content/Configuration/FlexForms/table.xml b/typo3/sysext/css_styled_content/Configuration/FlexForms/table.xml
deleted file mode 100644
index 5b249beca47520662e5c2cb0233a9ad9369c6078..0000000000000000000000000000000000000000
--- a/typo3/sysext/css_styled_content/Configuration/FlexForms/table.xml
+++ /dev/null
@@ -1,162 +0,0 @@
-<T3DataStructure>
-	<sheets>
-		<sDEF>
-			<ROOT>
-				<TCEforms>
-					<sheetTitle>LLL:EXT:css_styled_content/Resources/Private/Language/locallang_db.xlf:tt_content.tx_cssstyledcontent_acctables</sheetTitle>
-				</TCEforms>
-				<type>array</type>
-				<el>
-					<acctables_caption>
-						<TCEforms>
-							<label>LLL:EXT:css_styled_content/Resources/Private/Language/locallang_db.xlf:tt_content.tx_cssstyledcontent_acctables_caption</label>
-							<config>
-								<type>input</type>
-								<size>33</size>
-							</config>
-						</TCEforms>
-					</acctables_caption>
-
-					<acctables_summary>
-						<TCEforms>
-							<label>LLL:EXT:css_styled_content/Resources/Private/Language/locallang_db.xlf:tt_content.tx_cssstyledcontent_acctables_summary</label>
-							<config>
-								<type>input</type>
-								<size>33</size>
-							</config>
-						</TCEforms>
-					</acctables_summary>
-
-					<acctables_tfoot>
-						<TCEforms>
-							<label>LLL:EXT:css_styled_content/Resources/Private/Language/locallang_db.xlf:tt_content.tx_cssstyledcontent_acctables_tfoot</label>
-							<config>
-								<type>check</type>
-								<items type="array">
-									<numIndex index="1" type="array">
-										<numIndex index="0">LLL:EXT:lang/Resources/Private/Language/locallang_core.xlf:labels.enabled</numIndex>
-										<numIndex index="1">1</numIndex>
-									</numIndex>
-								</items>
-							</config>
-						</TCEforms>
-					</acctables_tfoot>
-
-					<acctables_headerpos>
-						<TCEforms>
-							<label>LLL:EXT:css_styled_content/Resources/Private/Language/locallang_db.xlf:tt_content.tx_cssstyledcontent_acctables_headerpos</label>
-							<config>
-								<type>select</type>
-								<items type="array">
-									<numIndex index="0" type="array">
-										<numIndex index="0">LLL:EXT:css_styled_content/Resources/Private/Language/locallang_db.xlf:tt_content.tx_cssstyledcontent_acctables_headerpos.I.0</numIndex>
-										<numIndex index="1"></numIndex>
-									</numIndex>
-									<numIndex index="1" type="array">
-										<numIndex index="0">LLL:EXT:css_styled_content/Resources/Private/Language/locallang_db.xlf:tt_content.tx_cssstyledcontent_acctables_headerpos.I.1</numIndex>
-										<numIndex index="1">top</numIndex>
-									</numIndex>
-									<numIndex index="2" type="array">
-										<numIndex index="0">LLL:EXT:css_styled_content/Resources/Private/Language/locallang_db.xlf:tt_content.tx_cssstyledcontent_acctables_headerpos.I.2</numIndex>
-										<numIndex index="1">left</numIndex>
-									</numIndex>
-								</items>
-								<minitems>0</minitems>
-								<maxitems>1</maxitems>
-								<size>1</size>
-							</config>
-						</TCEforms>
-					</acctables_headerpos>
-					<acctables_nostyles>
-						<TCEforms>
-							<label>LLL:EXT:css_styled_content/Resources/Private/Language/locallang_db.xlf:tt_content.tx_cssstyledcontent_acctables_nostyles</label>
-							<config>
-								<type>check</type>
-							</config>
-						</TCEforms>
-					</acctables_nostyles>
-
-					<acctables_tableclass>
-						<TCEforms>
-							<label>LLL:EXT:css_styled_content/Resources/Private/Language/locallang_db.xlf:tt_content.tx_cssstyledcontent_acctables_tableclass</label>
-							<config>
-								<type>input</type>
-								<size>33</size>
-								<eval>trim</eval>
-							</config>
-						</TCEforms>
-					</acctables_tableclass>
-				</el>
-			</ROOT>
-		</sDEF>
-		<s_parsing>
-			<ROOT>
-				<TCEforms>
-					<sheetTitle>LLL:EXT:css_styled_content/Resources/Private/Language/locallang_db.xlf:tt_content.tx_cssstyledcontent_tableparsing</sheetTitle>
-				</TCEforms>
-				<type>array</type>
-				<el>
-					<tableparsing_quote>
-						<TCEforms>
-							<label>LLL:EXT:css_styled_content/Resources/Private/Language/locallang_db.xlf:tt_content.tx_cssstyledcontent_tableparsing_quote</label>
-							<config>
-								<type>select</type>
-								<items type="array">
-									<numIndex index="0" type="array">
-										<numIndex index="0">LLL:EXT:css_styled_content/Resources/Private/Language/locallang_db.xlf:tt_content.tx_cssstyledcontent_tableparsing_quote_none</numIndex>
-										<numIndex index="1"></numIndex>
-									</numIndex>
-									<numIndex index="1" type="array">
-										<numIndex index="0">LLL:EXT:css_styled_content/Resources/Private/Language/locallang_db.xlf:tt_content.tx_cssstyledcontent_tableparsing_quote_single</numIndex>
-										<numIndex index="1">39</numIndex>
-									</numIndex>
-									<numIndex index="2" type="array">
-										<numIndex index="0">LLL:EXT:css_styled_content/Resources/Private/Language/locallang_db.xlf:tt_content.tx_cssstyledcontent_tableparsing_quote_double</numIndex>
-										<numIndex index="1">34</numIndex>
-									</numIndex>
-								</items>
-								<minitems>0</minitems>
-								<maxitems>1</maxitems>
-								<size>1</size>
-							</config>
-						</TCEforms>
-					</tableparsing_quote>
-
-					<tableparsing_delimiter>
-						<TCEforms>
-							<label>LLL:EXT:css_styled_content/Resources/Private/Language/locallang_db.xlf:tt_content.tx_cssstyledcontent_tableparsing_delimiter</label>
-							<config>
-								<type>select</type>
-								<items type="array">
-									<numIndex index="0" type="array">
-										<numIndex index="0">LLL:EXT:css_styled_content/Resources/Private/Language/locallang_db.xlf:tt_content.tx_cssstyledcontent_tableparsing_delimiter_pipe</numIndex>
-										<numIndex index="1">124</numIndex>
-									</numIndex>
-									<numIndex index="1" type="array">
-										<numIndex index="0">LLL:EXT:css_styled_content/Resources/Private/Language/locallang_db.xlf:tt_content.tx_cssstyledcontent_tableparsing_delimiter_semicolon</numIndex>
-										<numIndex index="1">59</numIndex>
-									</numIndex>
-									<numIndex index="2" type="array">
-										<numIndex index="0">LLL:EXT:css_styled_content/Resources/Private/Language/locallang_db.xlf:tt_content.tx_cssstyledcontent_tableparsing_delimiter_comma</numIndex>
-										<numIndex index="1">44</numIndex>
-									</numIndex>
-									<numIndex index="3" type="array">
-										<numIndex index="0">LLL:EXT:css_styled_content/Resources/Private/Language/locallang_db.xlf:tt_content.tx_cssstyledcontent_tableparsing_delimiter_colon</numIndex>
-										<numIndex index="1">58</numIndex>
-									</numIndex>
-									<numIndex index="4" type="array">
-										<numIndex index="0">LLL:EXT:css_styled_content/Resources/Private/Language/locallang_db.xlf:tt_content.tx_cssstyledcontent_tableparsing_delimiter_tab</numIndex>
-										<numIndex index="1">9</numIndex>
-									</numIndex>
-								</items>
-								<minitems>0</minitems>
-								<maxitems>1</maxitems>
-								<size>1</size>
-							</config>
-						</TCEforms>
-					</tableparsing_delimiter>
-				</el>
-			</ROOT>
-		</s_parsing>
-	</sheets>
-</T3DataStructure>
diff --git a/typo3/sysext/css_styled_content/Configuration/PageTSconfig/NewContentElementWizard.ts b/typo3/sysext/css_styled_content/Configuration/PageTSconfig/NewContentElementWizard.ts
deleted file mode 100644
index 63fafc01ed6d8ec0bbf86fad2913ef08b371dc26..0000000000000000000000000000000000000000
--- a/typo3/sysext/css_styled_content/Configuration/PageTSconfig/NewContentElementWizard.ts
+++ /dev/null
@@ -1,108 +0,0 @@
-mod.wizards.newContentElement.wizardItems {
-	common.elements {
-		header {
-			iconIdentifier = content-header
-			title = LLL:EXT:backend/Resources/Private/Language/locallang_db_new_content_el.xlf:common_headerOnly_title
-			description = LLL:EXT:backend/Resources/Private/Language/locallang_db_new_content_el.xlf:common_headerOnly_description
-			tt_content_defValues {
-				CType = header
-			}
-		}
-
-		text {
-			iconIdentifier = content-text
-			title = LLL:EXT:backend/Resources/Private/Language/locallang_db_new_content_el.xlf:common_regularText_title
-			description = LLL:EXT:backend/Resources/Private/Language/locallang_db_new_content_el.xlf:common_regularText_description
-			tt_content_defValues {
-				CType = text
-			}
-		}
-
-		textpic {
-			iconIdentifier = content-textpic
-			title = LLL:EXT:backend/Resources/Private/Language/locallang_db_new_content_el.xlf:common_textImage_title
-			description = LLL:EXT:backend/Resources/Private/Language/locallang_db_new_content_el.xlf:common_textImage_description
-			tt_content_defValues {
-				CType = textpic
-			}
-		}
-
-		image {
-			iconIdentifier = content-image
-			title = LLL:EXT:backend/Resources/Private/Language/locallang_db_new_content_el.xlf:common_imagesOnly_title
-			description = LLL:EXT:backend/Resources/Private/Language/locallang_db_new_content_el.xlf:common_imagesOnly_description
-			tt_content_defValues {
-				CType = image
-			}
-		}
-
-		bullets {
-			iconIdentifier = content-bullets
-			title = LLL:EXT:backend/Resources/Private/Language/locallang_db_new_content_el.xlf:common_bulletList_title
-			description = LLL:EXT:backend/Resources/Private/Language/locallang_db_new_content_el.xlf:common_bulletList_description
-			tt_content_defValues {
-				CType = bullets
-			}
-		}
-
-		table {
-			iconIdentifier = content-table
-			title = LLL:EXT:backend/Resources/Private/Language/locallang_db_new_content_el.xlf:common_table_title
-			description = LLL:EXT:backend/Resources/Private/Language/locallang_db_new_content_el.xlf:common_table_description
-			tt_content_defValues {
-				CType = table
-			}
-		}
-		uploads {
-			iconIdentifier = content-special-uploads
-			title = LLL:EXT:backend/Resources/Private/Language/locallang_db_new_content_el.xlf:special_filelinks_title
-			description = LLL:EXT:backend/Resources/Private/Language/locallang_db_new_content_el.xlf:special_filelinks_description
-			tt_content_defValues {
-				CType = uploads
-			}
-		}
-	}
-
-	common.show := addToList(header,text,textpic,image,bullets,table,uploads)
-
-	special.elements {
-		menu {
-			iconIdentifier = content-special-menu
-			title = LLL:EXT:backend/Resources/Private/Language/locallang_db_new_content_el.xlf:special_menus_title
-			description = LLL:EXT:backend/Resources/Private/Language/locallang_db_new_content_el.xlf:special_menus_description
-			tt_content_defValues {
-				CType = menu
-				menu_type = 0
-			}
-		}
-
-		html {
-			iconIdentifier = content-special-html
-			title = LLL:EXT:backend/Resources/Private/Language/locallang_db_new_content_el.xlf:special_plainHTML_title
-			description = LLL:EXT:backend/Resources/Private/Language/locallang_db_new_content_el.xlf:special_plainHTML_description
-			tt_content_defValues {
-				CType = html
-			}
-		}
-
-		div {
-			iconIdentifier = content-special-div
-			title = LLL:EXT:backend/Resources/Private/Language/locallang_db_new_content_el.xlf:special_divider_title
-			description = LLL:EXT:backend/Resources/Private/Language/locallang_db_new_content_el.xlf:special_divider_description
-			tt_content_defValues {
-				CType = div
-			}
-		}
-
-		shortcut {
-			iconIdentifier = content-special-shortcut
-			title = LLL:EXT:backend/Resources/Private/Language/locallang_db_new_content_el.xlf:special_shortcut_title
-			description = LLL:EXT:backend/Resources/Private/Language/locallang_db_new_content_el.xlf:special_shortcut_description
-			tt_content_defValues {
-				CType = shortcut
-			}
-		}
-	}
-
-	special.show := addToList(menu,html,div,shortcut)
-}
diff --git a/typo3/sysext/css_styled_content/Configuration/TCA/Overrides/pages.php b/typo3/sysext/css_styled_content/Configuration/TCA/Overrides/pages.php
deleted file mode 100644
index 08bfb6848d5346831794c4b66955af5f700fd7d7..0000000000000000000000000000000000000000
--- a/typo3/sysext/css_styled_content/Configuration/TCA/Overrides/pages.php
+++ /dev/null
@@ -1,14 +0,0 @@
-<?php
-defined('TYPO3_MODE') or die();
-
-call_user_func(function () {
-    $extConf = unserialize($GLOBALS['TYPO3_CONF_VARS']['EXT']['extConf']['css_styled_content'], ['allowed_classes' => false]);
-    if (isset($extConf['loadContentElementWizardTsConfig']) && (int)$extConf['loadContentElementWizardTsConfig'] === 0) {
-        // Add pageTSconfig
-        \TYPO3\CMS\Core\Utility\ExtensionManagementUtility::registerPageTSConfigFile(
-            'css_styled_content',
-            'Configuration/PageTSconfig/NewContentElementWizard.ts',
-            'CSS-based Content Elements'
-        );
-    }
-});
diff --git a/typo3/sysext/css_styled_content/Configuration/TCA/Overrides/sys_template.php b/typo3/sysext/css_styled_content/Configuration/TCA/Overrides/sys_template.php
index c69c94596eed7c8bab1fcceef14152f0393b635a..36cc3bab22a7ecc0e4205c172ea832782a4c979e 100644
--- a/typo3/sysext/css_styled_content/Configuration/TCA/Overrides/sys_template.php
+++ b/typo3/sysext/css_styled_content/Configuration/TCA/Overrides/sys_template.php
@@ -1,5 +1,13 @@
 <?php
 defined('TYPO3_MODE') or die();
 
-\TYPO3\CMS\Core\Utility\ExtensionManagementUtility::addStaticFile('css_styled_content', 'static/', 'CSS Styled Content');
-\TYPO3\CMS\Core\Utility\ExtensionManagementUtility::addStaticFile('css_styled_content', 'Configuration/TypoScript/v7/', 'CSS Styled Content TYPO3 v7');
+\TYPO3\CMS\Core\Utility\ExtensionManagementUtility::addStaticFile(
+    'css_styled_content',
+    'Configuration/TypoScript/',
+    'TypoScript Content Elements'
+);
+\TYPO3\CMS\Core\Utility\ExtensionManagementUtility::addStaticFile(
+    'css_styled_content',
+    'Configuration/TypoScript/Styling/',
+    'TypoScript Content Elements CSS (optional)'
+);
diff --git a/typo3/sysext/css_styled_content/Configuration/TCA/Overrides/tt_content.php b/typo3/sysext/css_styled_content/Configuration/TCA/Overrides/tt_content.php
deleted file mode 100644
index 6f15b7bcfc9fd99f7f882cc5c2f4922418ccff17..0000000000000000000000000000000000000000
--- a/typo3/sysext/css_styled_content/Configuration/TCA/Overrides/tt_content.php
+++ /dev/null
@@ -1,774 +0,0 @@
-<?php
-defined('TYPO3_MODE') or die();
-
-//Extra fields for the tt_content table
-$extraContentColumns = [
-    'header_position' => [
-        'label' => 'LLL:EXT:frontend/Resources/Private/Language/locallang_ttc.xlf:header_position',
-        'exclude' => true,
-        'config' => [
-            'type' => 'select',
-            'renderType' => 'selectSingle',
-            'items' => [
-                [
-                    'LLL:EXT:lang/Resources/Private/Language/locallang_general.xlf:LGL.default_value',
-                    ''
-                ],
-                [
-                    'LLL:EXT:frontend/Resources/Private/Language/locallang_ttc.xlf:header_position.I.1',
-                    'center'
-                ],
-                [
-                    'LLL:EXT:frontend/Resources/Private/Language/locallang_ttc.xlf:header_position.I.2',
-                    'right'
-                ],
-                [
-                    'LLL:EXT:frontend/Resources/Private/Language/locallang_ttc.xlf:header_position.I.3',
-                    'left'
-                ]
-            ],
-            'default' => ''
-        ]
-    ],
-    'image_compression' => [
-        'exclude' => true,
-        'label' => 'LLL:EXT:frontend/Resources/Private/Language/locallang_ttc.xlf:image_compression',
-        'config' => [
-            'type' => 'select',
-            'renderType' => 'selectSingle',
-            'items' => [
-                [
-                    'LLL:EXT:lang/Resources/Private/Language/locallang_general.xlf:LGL.default_value',
-                    0
-                ],
-                [
-                    'LLL:EXT:frontend/Resources/Private/Language/locallang_ttc.xlf:image_compression.I.1',
-                    1
-                ],
-                [
-                    'GIF/256',
-                    10
-                ],
-                [
-                    'GIF/128',
-                    11
-                ],
-                [
-                    'GIF/64',
-                    12
-                ],
-                [
-                    'GIF/32',
-                    13
-                ],
-                [
-                    'GIF/16',
-                    14
-                ],
-                [
-                    'GIF/8',
-                    15
-                ],
-                [
-                    'PNG',
-                    39
-                ],
-                [
-                    'PNG/256',
-                    30
-                ],
-                [
-                    'PNG/128',
-                    31
-                ],
-                [
-                    'PNG/64',
-                    32
-                ],
-                [
-                    'PNG/32',
-                    33
-                ],
-                [
-                    'PNG/16',
-                    34
-                ],
-                [
-                    'PNG/8',
-                    35
-                ],
-                [
-                    'LLL:EXT:frontend/Resources/Private/Language/locallang_ttc.xlf:image_compression.I.15',
-                    21
-                ],
-                [
-                    'LLL:EXT:frontend/Resources/Private/Language/locallang_ttc.xlf:image_compression.I.16',
-                    22
-                ],
-                [
-                    'LLL:EXT:frontend/Resources/Private/Language/locallang_ttc.xlf:image_compression.I.17',
-                    24
-                ],
-                [
-                    'LLL:EXT:frontend/Resources/Private/Language/locallang_ttc.xlf:image_compression.I.18',
-                    26
-                ],
-                [
-                    'LLL:EXT:frontend/Resources/Private/Language/locallang_ttc.xlf:image_compression.I.19',
-                    28
-                ]
-            ]
-        ]
-    ],
-    'image_effects' => [
-        'exclude' => true,
-        'label' => 'LLL:EXT:frontend/Resources/Private/Language/locallang_ttc.xlf:image_effects',
-        'config' => [
-            'type' => 'select',
-            'renderType' => 'selectSingle',
-            'items' => [
-                [
-                    'LLL:EXT:frontend/Resources/Private/Language/locallang_ttc.xlf:image_effects.I.0',
-                    0
-                ],
-                [
-                    'LLL:EXT:frontend/Resources/Private/Language/locallang_ttc.xlf:image_effects.I.1',
-                    1
-                ],
-                [
-                    'LLL:EXT:frontend/Resources/Private/Language/locallang_ttc.xlf:image_effects.I.2',
-                    2
-                ],
-                [
-                    'LLL:EXT:frontend/Resources/Private/Language/locallang_ttc.xlf:image_effects.I.3',
-                    3
-                ],
-                [
-                    'LLL:EXT:frontend/Resources/Private/Language/locallang_ttc.xlf:image_effects.I.4',
-                    10
-                ],
-                [
-                    'LLL:EXT:frontend/Resources/Private/Language/locallang_ttc.xlf:image_effects.I.5',
-                    11
-                ],
-                [
-                    'LLL:EXT:frontend/Resources/Private/Language/locallang_ttc.xlf:image_effects.I.6',
-                    20
-                ],
-                [
-                    'LLL:EXT:frontend/Resources/Private/Language/locallang_ttc.xlf:image_effects.I.7',
-                    23
-                ],
-                [
-                    'LLL:EXT:frontend/Resources/Private/Language/locallang_ttc.xlf:image_effects.I.8',
-                    25
-                ],
-                [
-                    'LLL:EXT:frontend/Resources/Private/Language/locallang_ttc.xlf:image_effects.I.9',
-                    26
-                ]
-            ]
-        ]
-    ],
-    'image_noRows' => [
-        'exclude' => true,
-        'label' => 'LLL:EXT:frontend/Resources/Private/Language/locallang_ttc.xlf:image_noRows',
-        'config' => [
-            'type' => 'check',
-            'items' => [
-                '1' => [
-                    '0' => 'LLL:EXT:frontend/Resources/Private/Language/locallang_ttc.xlf:image_noRows.I.0'
-                ]
-            ]
-        ]
-    ],
-    'section_frame' => [
-        'exclude' => true,
-        'label' => 'LLL:EXT:frontend/Resources/Private/Language/locallang_ttc.xlf:section_frame',
-        'config' => [
-            'type' => 'select',
-            'renderType' => 'selectSingle',
-            'items' => [
-                [
-                    '',
-                    '0'
-                ],
-                [
-                    'LLL:EXT:frontend/Resources/Private/Language/locallang_ttc.xlf:section_frame.I.1',
-                    '1'
-                ],
-                [
-                    'LLL:EXT:frontend/Resources/Private/Language/locallang_ttc.xlf:section_frame.I.2',
-                    '5'
-                ],
-                [
-                    'LLL:EXT:frontend/Resources/Private/Language/locallang_ttc.xlf:section_frame.I.3',
-                    '6'
-                ],
-                [
-                    'LLL:EXT:frontend/Resources/Private/Language/locallang_ttc.xlf:section_frame.I.4',
-                    '10'
-                ],
-                [
-                    'LLL:EXT:frontend/Resources/Private/Language/locallang_ttc.xlf:section_frame.I.5',
-                    '11'
-                ],
-                [
-                    'LLL:EXT:frontend/Resources/Private/Language/locallang_ttc.xlf:section_frame.I.6',
-                    '12'
-                ],
-                [
-                    'LLL:EXT:frontend/Resources/Private/Language/locallang_ttc.xlf:section_frame.I.7',
-                    '20'
-                ],
-                [
-                    'LLL:EXT:frontend/Resources/Private/Language/locallang_ttc.xlf:section_frame.I.8',
-                    '21'
-                ]
-            ],
-            'default' => 0
-        ]
-    ],
-    'spaceAfter' => [
-        'exclude' => true,
-        'label' => 'LLL:EXT:frontend/Resources/Private/Language/locallang_ttc.xlf:spaceAfter',
-        'config' => [
-            'type' => 'input',
-            'size' => 5,
-            'max' => 5,
-            'eval' => 'int',
-            'range' => [
-                'lower' => 0
-            ],
-            'default' => 0
-        ]
-    ],
-    'spaceBefore' => [
-        'exclude' => true,
-        'label' => 'LLL:EXT:frontend/Resources/Private/Language/locallang_ttc.xlf:spaceBefore',
-        'config' => [
-            'type' => 'input',
-            'size' => 5,
-            'max' => 5,
-            'eval' => 'int',
-            'range' => [
-                'lower' => 0
-            ],
-            'default' => 0
-        ]
-    ],
-    'table_bgColor' => [
-        'exclude' => true,
-        'label' => 'LLL:EXT:frontend/Resources/Private/Language/locallang_ttc.xlf:table_bgColor',
-        'config' => [
-            'type' => 'select',
-            'renderType' => 'selectSingle',
-            'items' => [
-                [
-                    'LLL:EXT:lang/Resources/Private/Language/locallang_general.xlf:LGL.default_value',
-                    '0'
-                ],
-                [
-                    'LLL:EXT:frontend/Resources/Private/Language/locallang_ttc.xlf:table_bgColor.I.1',
-                    '1'
-                ],
-                [
-                    'LLL:EXT:frontend/Resources/Private/Language/locallang_ttc.xlf:table_bgColor.I.2',
-                    '2'
-                ],
-                [
-                    'LLL:EXT:frontend/Resources/Private/Language/locallang_ttc.xlf:table_bgColor.I.3',
-                    '200'
-                ],
-                [
-                    '-----',
-                    '--div--'
-                ],
-                [
-                    'LLL:EXT:frontend/Resources/Private/Language/locallang_ttc.xlf:table_bgColor.I.5',
-                    '240'
-                ],
-                [
-                    'LLL:EXT:frontend/Resources/Private/Language/locallang_ttc.xlf:table_bgColor.I.6',
-                    '241'
-                ],
-                [
-                    'LLL:EXT:frontend/Resources/Private/Language/locallang_ttc.xlf:table_bgColor.I.7',
-                    '242'
-                ],
-                [
-                    'LLL:EXT:frontend/Resources/Private/Language/locallang_ttc.xlf:table_bgColor.I.8',
-                    '243'
-                ],
-                [
-                    'LLL:EXT:frontend/Resources/Private/Language/locallang_ttc.xlf:table_bgColor.I.9',
-                    '244'
-                ]
-            ],
-            'default' => 0
-        ]
-    ],
-    'table_border' => [
-        'exclude' => true,
-        'label' => 'LLL:EXT:frontend/Resources/Private/Language/locallang_ttc.xlf:table_border',
-        'config' => [
-            'type' => 'input',
-            'size' => 3,
-            'max' => 3,
-            'eval' => 'int',
-            'range' => [
-                'upper' => 20,
-                'lower' => 0
-            ],
-            'default' => 0
-        ]
-    ],
-    'table_cellpadding' => [
-        'exclude' => true,
-        'label' => 'LLL:EXT:frontend/Resources/Private/Language/locallang_ttc.xlf:table_cellpadding',
-        'config' => [
-            'type' => 'input',
-            'size' => 3,
-            'max' => 3,
-            'eval' => 'int',
-            'range' => [
-                'upper' => '200',
-                'lower' => 0
-            ],
-            'default' => 0
-        ]
-    ],
-    'table_cellspacing' => [
-        'exclude' => true,
-        'label' => 'LLL:EXT:frontend/Resources/Private/Language/locallang_ttc.xlf:table_cellspacing',
-        'config' => [
-            'type' => 'input',
-            'size' => 3,
-            'max' => 3,
-            'eval' => 'int',
-            'range' => [
-                'upper' => '200',
-                'lower' => 0
-            ],
-            'default' => 0
-        ]
-    ]
-];
-
-// Adding fields to the tt_content table definition in TCA
-\TYPO3\CMS\Core\Utility\ExtensionManagementUtility::addTCAcolumns('tt_content', $extraContentColumns);
-
-// Add flexform
-\TYPO3\CMS\Core\Utility\ExtensionManagementUtility::addPiFlexFormValue('*', 'FILE:EXT:css_styled_content/Configuration/FlexForms/table.xml', 'table');
-
-// Add content elements
-$GLOBALS['TCA']['tt_content']['ctrl']['typeicon_classes'] = array_merge(
-    $GLOBALS['TCA']['tt_content']['ctrl']['typeicon_classes'],
-    [
-        'textpic' => 'mimetypes-x-content-text-picture',
-        'image' => 'mimetypes-x-content-image',
-        'text' => 'mimetypes-x-content-text'
-    ]
-);
-array_splice(
-    $GLOBALS['TCA']['tt_content']['columns']['CType']['config']['items'],
-    2,
-    0,
-    [
-        [
-            'LLL:EXT:frontend/Resources/Private/Language/locallang_ttc.xlf:CType.I.1',
-            'text',
-            'content-text'
-        ],
-        [
-            'LLL:EXT:frontend/Resources/Private/Language/locallang_ttc.xlf:CType.I.2',
-            'textpic',
-            'content-textpic'
-        ],
-        [
-            'LLL:EXT:frontend/Resources/Private/Language/locallang_ttc.xlf:CType.I.3',
-            'image',
-            'content-image'
-        ]
-    ]
-);
-$GLOBALS['TCA']['tt_content']['columns']['CType']['config']['default'] = 'text';
-
-// Add palettes
-$GLOBALS['TCA']['tt_content']['palettes'] = array_replace(
-    $GLOBALS['TCA']['tt_content']['palettes'],
-    [
-        'header' => [
-            'showitem' => '
-                header;LLL:EXT:frontend/Resources/Private/Language/locallang_ttc.xlf:header_formlabel,
-                --linebreak--,
-                header_layout;LLL:EXT:frontend/Resources/Private/Language/locallang_ttc.xlf:header_layout_formlabel,
-                header_position;LLL:EXT:frontend/Resources/Private/Language/locallang_ttc.xlf:header_position_formlabel,
-                date;LLL:EXT:frontend/Resources/Private/Language/locallang_ttc.xlf:date_formlabel,
-                --linebreak--,
-                header_link;LLL:EXT:frontend/Resources/Private/Language/locallang_ttc.xlf:header_link_formlabel
-            ',
-        ],
-        'headers' => [
-            'showitem' => '
-                header;LLL:EXT:frontend/Resources/Private/Language/locallang_ttc.xlf:header_formlabel,
-                --linebreak--,
-                header_layout;LLL:EXT:frontend/Resources/Private/Language/locallang_ttc.xlf:header_layout_formlabel,
-                header_position;LLL:EXT:frontend/Resources/Private/Language/locallang_ttc.xlf:header_position_formlabel,
-                date;LLL:EXT:frontend/Resources/Private/Language/locallang_ttc.xlf:date_formlabel,
-                --linebreak--,
-                header_link;LLL:EXT:frontend/Resources/Private/Language/locallang_ttc.xlf:header_link_formlabel,
-                --linebreak--,
-                subheader;LLL:EXT:frontend/Resources/Private/Language/locallang_ttc.xlf:subheader_formlabel
-            ',
-        ],
-        'imageblock' => [
-            'showitem' => '
-                imageorient;LLL:EXT:frontend/Resources/Private/Language/locallang_ttc.xlf:imageorient_formlabel,
-                imagecols;LLL:EXT:frontend/Resources/Private/Language/locallang_ttc.xlf:imagecols_formlabel,
-                --linebreak--,
-                image_noRows;LLL:EXT:frontend/Resources/Private/Language/locallang_ttc.xlf:image_noRows_formlabel,
-                imagecaption_position;LLL:EXT:frontend/Resources/Private/Language/locallang_ttc.xlf:imagecaption_position_formlabel
-            ',
-        ],
-        'tablelayout' => [
-            'showitem' => '
-                table_bgColor;LLL:EXT:frontend/Resources/Private/Language/locallang_ttc.xlf:table_bgColor_formlabel,
-                table_border;LLL:EXT:frontend/Resources/Private/Language/locallang_ttc.xlf:table_border_formlabel,
-                table_cellspacing;LLL:EXT:frontend/Resources/Private/Language/locallang_ttc.xlf:table_cellspacing_formlabel,
-                table_cellpadding;LLL:EXT:frontend/Resources/Private/Language/locallang_ttc.xlf:table_cellpadding_formlabel
-            ',
-        ],
-        'visibility' => [
-            'showitem' => '
-                hidden;LLL:EXT:frontend/Resources/Private/Language/locallang_ttc.xlf:hidden_formlabel,
-                sectionIndex;LLL:EXT:frontend/Resources/Private/Language/locallang_ttc.xlf:sectionIndex_formlabel,
-                linkToTop;LLL:EXT:frontend/Resources/Private/Language/locallang_ttc.xlf:linkToTop_formlabel
-            ',
-        ],
-        'frames' => [
-            'showitem' => '
-                layout;LLL:EXT:frontend/Resources/Private/Language/locallang_ttc.xlf:layout_formlabel,
-                spaceBefore;LLL:EXT:frontend/Resources/Private/Language/locallang_ttc.xlf:spaceBefore_formlabel,
-                spaceAfter;LLL:EXT:frontend/Resources/Private/Language/locallang_ttc.xlf:spaceAfter_formlabel,
-                section_frame;LLL:EXT:frontend/Resources/Private/Language/locallang_ttc.xlf:section_frame_formlabel
-            ',
-        ]
-    ]
-);
-
-\TYPO3\CMS\Core\Utility\ExtensionManagementUtility::addFieldsToPalette(
-    'tt_content',
-    'image_settings',
-    'imagewidth;LLL:EXT:frontend/Resources/Private/Language/locallang_ttc.xlf:imagewidth_formlabel,
-        imageheight;LLL:EXT:frontend/Resources/Private/Language/locallang_ttc.xlf:imageheight_formlabel,
-        imageborder;LLL:EXT:frontend/Resources/Private/Language/locallang_ttc.xlf:imageborder_formlabel,
-        --linebreak--,
-        image_compression;LLL:EXT:frontend/Resources/Private/Language/locallang_ttc.xlf:image_compression_formlabel,
-        image_effects;LLL:EXT:frontend/Resources/Private/Language/locallang_ttc.xlf:image_effects_formlabel,'
-);
-
-// Field arrangement for CE "header"
-$GLOBALS['TCA']['tt_content']['types']['header']['showitem'] = '
-    --div--;LLL:EXT:core/Resources/Private/Language/Form/locallang_tabs.xlf:general,
-        --palette--;LLL:EXT:frontend/Resources/Private/Language/locallang_ttc.xlf:palette.general;general,
-        --palette--;LLL:EXT:frontend/Resources/Private/Language/locallang_ttc.xlf:palette.headers;headers,
-    --div--;LLL:EXT:frontend/Resources/Private/Language/locallang_ttc.xlf:tabs.appearance,
-        --palette--;LLL:EXT:frontend/Resources/Private/Language/locallang_ttc.xlf:palette.frames;frames,
-        --palette--;LLL:EXT:frontend/Resources/Private/Language/locallang_ttc.xlf:palette.appearanceLinks;appearanceLinks,
-    --div--;LLL:EXT:core/Resources/Private/Language/Form/locallang_tabs.xlf:language,
-        --palette--;;language,
-    --div--;LLL:EXT:core/Resources/Private/Language/Form/locallang_tabs.xlf:access,
-        --palette--;;hidden,
-        --palette--;LLL:EXT:frontend/Resources/Private/Language/locallang_ttc.xlf:palette.access;access,
-    --div--;LLL:EXT:core/Resources/Private/Language/Form/locallang_tabs.xlf:categories,
-        categories,
-    --div--;LLL:EXT:core/Resources/Private/Language/Form/locallang_tabs.xlf:notes,
-        rowDescription,
-    --div--;LLL:EXT:core/Resources/Private/Language/Form/locallang_tabs.xlf:extended,
-';
-
-// Field arrangement for CE "text"
-$GLOBALS['TCA']['tt_content']['types']['text']['showitem'] = '
-    --div--;LLL:EXT:core/Resources/Private/Language/Form/locallang_tabs.xlf:general,
-        --palette--;LLL:EXT:frontend/Resources/Private/Language/locallang_ttc.xlf:palette.general;general,
-        --palette--;LLL:EXT:frontend/Resources/Private/Language/locallang_ttc.xlf:palette.header;header,
-        bodytext;LLL:EXT:frontend/Resources/Private/Language/locallang_ttc.xlf:bodytext_formlabel,
-    --div--;LLL:EXT:frontend/Resources/Private/Language/locallang_ttc.xlf:tabs.appearance,
-        --palette--;LLL:EXT:frontend/Resources/Private/Language/locallang_ttc.xlf:palette.frames;frames,
-        --palette--;LLL:EXT:frontend/Resources/Private/Language/locallang_ttc.xlf:palette.appearanceLinks;appearanceLinks,
-    --div--;LLL:EXT:core/Resources/Private/Language/Form/locallang_tabs.xlf:language,
-        --palette--;;language,
-    --div--;LLL:EXT:core/Resources/Private/Language/Form/locallang_tabs.xlf:access,
-        --palette--;;hidden,
-        --palette--;LLL:EXT:frontend/Resources/Private/Language/locallang_ttc.xlf:palette.access;access,
-    --div--;LLL:EXT:core/Resources/Private/Language/Form/locallang_tabs.xlf:categories,
-        categories,
-    --div--;LLL:EXT:core/Resources/Private/Language/Form/locallang_tabs.xlf:notes,
-        rowDescription,
-    --div--;LLL:EXT:core/Resources/Private/Language/Form/locallang_tabs.xlf:extended,
-';
-
-if (!isset($GLOBALS['TCA']['tt_content']['types']['text']['columnsOverrides']['bodytext']['config'])
-    || !is_array($GLOBALS['TCA']['tt_content']['types']['text']['columnsOverrides']['bodytext']['config'])
-) {
-    $GLOBALS['TCA']['tt_content']['types']['text']['columnsOverrides']['bodytext']['config'] = [];
-}
-$GLOBALS['TCA']['tt_content']['types']['text']['columnsOverrides']['bodytext']['config']['enableRichtext'] = true;
-$GLOBALS['TCA']['tt_content']['types']['text']['columnsOverrides']['bodytext']['config']['richtextConfiguration'] = 'default';
-
-// Field arrangement for CE "textpic"
-$GLOBALS['TCA']['tt_content']['types']['textpic']['showitem'] = '
-    --div--;LLL:EXT:core/Resources/Private/Language/Form/locallang_tabs.xlf:general,
-        --palette--;LLL:EXT:frontend/Resources/Private/Language/locallang_ttc.xlf:palette.general;general,
-        --palette--;LLL:EXT:frontend/Resources/Private/Language/locallang_ttc.xlf:palette.header;header,
-        bodytext;Text,
-    --div--;LLL:EXT:frontend/Resources/Private/Language/locallang_ttc.xlf:tabs.images,
-        image,
-        --palette--;LLL:EXT:frontend/Resources/Private/Language/locallang_ttc.xlf:palette.imagelinks;imagelinks,
-    --div--;LLL:EXT:frontend/Resources/Private/Language/locallang_ttc.xlf:tabs.appearance,
-        --palette--;LLL:EXT:frontend/Resources/Private/Language/locallang_ttc.xlf:palette.frames;frames,
-        --palette--;LLL:EXT:frontend/Resources/Private/Language/locallang_ttc.xlf:palette.image_settings;image_settings,
-        --palette--;LLL:EXT:frontend/Resources/Private/Language/locallang_ttc.xlf:palette.imageblock;imageblock,
-        --palette--;LLL:EXT:frontend/Resources/Private/Language/locallang_ttc.xlf:palette.appearanceLinks;appearanceLinks,
-    --div--;LLL:EXT:core/Resources/Private/Language/Form/locallang_tabs.xlf:language,
-        --palette--;;language,
-    --div--;LLL:EXT:core/Resources/Private/Language/Form/locallang_tabs.xlf:access,
-        --palette--;;hidden,
-        --palette--;LLL:EXT:frontend/Resources/Private/Language/locallang_ttc.xlf:palette.access;access,
-    --div--;LLL:EXT:core/Resources/Private/Language/Form/locallang_tabs.xlf:categories,
-        categories,
-    --div--;LLL:EXT:core/Resources/Private/Language/Form/locallang_tabs.xlf:notes,
-        rowDescription,
-    --div--;LLL:EXT:core/Resources/Private/Language/Form/locallang_tabs.xlf:extended,
-';
-
-if (!isset($GLOBALS['TCA']['tt_content']['types']['textpic']['columnsOverrides']['bodytext']['config'])
-    || !is_array($GLOBALS['TCA']['tt_content']['types']['textpic']['columnsOverrides']['bodytext']['config'])
-) {
-    $GLOBALS['TCA']['tt_content']['types']['textpic']['columnsOverrides']['bodytext']['config'] = [];
-}
-$GLOBALS['TCA']['tt_content']['types']['textpic']['columnsOverrides']['bodytext']['config']['enableRichtext'] = true;
-$GLOBALS['TCA']['tt_content']['types']['textpic']['columnsOverrides']['bodytext']['config']['richtextConfiguration'] = 'default';
-
-// Field arrangement for CE "image"
-$GLOBALS['TCA']['tt_content']['types']['image']['showitem'] = '
-    --div--;LLL:EXT:core/Resources/Private/Language/Form/locallang_tabs.xlf:general,
-        --palette--;LLL:EXT:frontend/Resources/Private/Language/locallang_ttc.xlf:palette.general;general,
-        --palette--;LLL:EXT:frontend/Resources/Private/Language/locallang_ttc.xlf:palette.header;header,
-    --div--;LLL:EXT:frontend/Resources/Private/Language/locallang_ttc.xlf:tabs.images,
-        image,
-        --palette--;LLL:EXT:frontend/Resources/Private/Language/locallang_ttc.xlf:palette.imagelinks;imagelinks,
-    --div--;LLL:EXT:frontend/Resources/Private/Language/locallang_ttc.xlf:tabs.appearance,
-        --palette--;LLL:EXT:frontend/Resources/Private/Language/locallang_ttc.xlf:palette.frames;frames,
-        --palette--;LLL:EXT:frontend/Resources/Private/Language/locallang_ttc.xlf:palette.image_settings;image_settings,
-        --palette--;LLL:EXT:frontend/Resources/Private/Language/locallang_ttc.xlf:palette.imageblock;imageblock,
-        --palette--;LLL:EXT:frontend/Resources/Private/Language/locallang_ttc.xlf:palette.appearanceLinks;appearanceLinks,
-    --div--;LLL:EXT:core/Resources/Private/Language/Form/locallang_tabs.xlf:language,
-        --palette--;;language,
-    --div--;LLL:EXT:core/Resources/Private/Language/Form/locallang_tabs.xlf:access,
-        --palette--;;hidden,
-        --palette--;LLL:EXT:frontend/Resources/Private/Language/locallang_ttc.xlf:palette.access;access,
-    --div--;LLL:EXT:core/Resources/Private/Language/Form/locallang_tabs.xlf:categories,
-        categories,
-    --div--;LLL:EXT:core/Resources/Private/Language/Form/locallang_tabs.xlf:notes,
-        rowDescription,
-    --div--;LLL:EXT:core/Resources/Private/Language/Form/locallang_tabs.xlf:extended,
-';
-
-// Field arrangement for CE "bullets"
-$GLOBALS['TCA']['tt_content']['types']['bullets']['showitem'] = '
-    --div--;LLL:EXT:core/Resources/Private/Language/Form/locallang_tabs.xlf:general,
-        --palette--;LLL:EXT:frontend/Resources/Private/Language/locallang_ttc.xlf:palette.general;general,
-        --palette--;LLL:EXT:frontend/Resources/Private/Language/locallang_ttc.xlf:palette.header;header,
-        bodytext;LLL:EXT:frontend/Resources/Private/Language/locallang_ttc.xlf:bodytext.ALT.bulletlist_formlabel,
-    --div--;LLL:EXT:frontend/Resources/Private/Language/locallang_ttc.xlf:tabs.appearance,
-        --palette--;LLL:EXT:frontend/Resources/Private/Language/locallang_ttc.xlf:palette.frames;frames,
-        --palette--;LLL:EXT:frontend/Resources/Private/Language/locallang_ttc.xlf:palette.appearanceLinks;appearanceLinks,
-    --div--;LLL:EXT:core/Resources/Private/Language/Form/locallang_tabs.xlf:language,
-        --palette--;;language,
-    --div--;LLL:EXT:core/Resources/Private/Language/Form/locallang_tabs.xlf:access,
-        --palette--;;hidden,
-        --palette--;LLL:EXT:frontend/Resources/Private/Language/locallang_ttc.xlf:palette.access;access,
-    --div--;LLL:EXT:core/Resources/Private/Language/Form/locallang_tabs.xlf:categories,
-        categories,
-    --div--;LLL:EXT:core/Resources/Private/Language/Form/locallang_tabs.xlf:notes,
-        rowDescription,
-    --div--;LLL:EXT:core/Resources/Private/Language/Form/locallang_tabs.xlf:extended,
-';
-if (!is_array($GLOBALS['TCA']['tt_content']['types']['bullets']['columnsOverrides'])) {
-    $GLOBALS['TCA']['tt_content']['types']['bullets']['columnsOverrides'] = [];
-}
-if (!is_array($GLOBALS['TCA']['tt_content']['types']['bullets']['columnsOverrides']['bodytext'])) {
-    $GLOBALS['TCA']['tt_content']['types']['bullets']['columnsOverrides']['bodytext'] = [];
-}
-$GLOBALS['TCA']['tt_content']['types']['bullets']['columnsOverrides']['bodytext']['config']['wrap'] = 'off';
-
-// Field arrangement for CE "table"
-$GLOBALS['TCA']['tt_content']['types']['table']['showitem'] = '
-    --div--;LLL:EXT:core/Resources/Private/Language/Form/locallang_tabs.xlf:general,
-        --palette--;LLL:EXT:frontend/Resources/Private/Language/locallang_ttc.xlf:palette.general;general,
-        --palette--;LLL:EXT:frontend/Resources/Private/Language/locallang_ttc.xlf:palette.header;header,
-    --div--;LLL:EXT:frontend/Resources/Private/Language/locallang_ttc.xlf:CType.I.5,
-        cols,bodytext,pi_flexform,
-    --div--;LLL:EXT:frontend/Resources/Private/Language/locallang_ttc.xlf:tabs.appearance,
-        --palette--;LLL:EXT:frontend/Resources/Private/Language/locallang_ttc.xlf:palette.frames;frames,
-        --palette--;LLL:EXT:frontend/Resources/Private/Language/locallang_ttc.xlf:palette.table_layout;tablelayout,
-        --palette--;LLL:EXT:frontend/Resources/Private/Language/locallang_ttc.xlf:palette.appearanceLinks;appearanceLinks,
-    --div--;LLL:EXT:core/Resources/Private/Language/Form/locallang_tabs.xlf:language,
-        --palette--;;language,
-    --div--;LLL:EXT:core/Resources/Private/Language/Form/locallang_tabs.xlf:access,
-        --palette--;;hidden,
-        --palette--;LLL:EXT:frontend/Resources/Private/Language/locallang_ttc.xlf:palette.access;access,
-    --div--;LLL:EXT:core/Resources/Private/Language/Form/locallang_tabs.xlf:categories,
-        categories,
-    --div--;LLL:EXT:core/Resources/Private/Language/Form/locallang_tabs.xlf:notes,
-        rowDescription,
-    --div--;LLL:EXT:core/Resources/Private/Language/Form/locallang_tabs.xlf:extended,
-';
-if (!is_array($GLOBALS['TCA']['tt_content']['types']['table']['columnsOverrides'])) {
-    $GLOBALS['TCA']['tt_content']['types']['table']['columnsOverrides'] = [];
-}
-if (!is_array($GLOBALS['TCA']['tt_content']['types']['table']['columnsOverrides']['bodytext'])) {
-    $GLOBALS['TCA']['tt_content']['types']['table']['columnsOverrides']['bodytext'] = [];
-}
-$GLOBALS['TCA']['tt_content']['types']['table']['columnsOverrides']['bodytext']['config']['renderType'] = 'textTable';
-$GLOBALS['TCA']['tt_content']['types']['table']['columnsOverrides']['bodytext']['config']['wrap'] = 'off';
-
-// Field arrangement for CE "uploads"
-$GLOBALS['TCA']['tt_content']['types']['uploads']['showitem'] = '
-    --div--;LLL:EXT:core/Resources/Private/Language/Form/locallang_tabs.xlf:general,
-        --palette--;LLL:EXT:frontend/Resources/Private/Language/locallang_ttc.xlf:palette.general;general,
-        --palette--;LLL:EXT:frontend/Resources/Private/Language/locallang_ttc.xlf:palette.header;header,
-        --palette--;LLL:EXT:frontend/Resources/Private/Language/locallang_ttc.xlf:media;uploads,
-    --div--;LLL:EXT:frontend/Resources/Private/Language/locallang_ttc.xlf:tabs.appearance,
-        --palette--;LLL:EXT:frontend/Resources/Private/Language/locallang_ttc.xlf:palette.frames;frames,
-        --palette--;LLL:EXT:frontend/Resources/Private/Language/locallang_ttc.xlf:palette.uploads_layout;uploadslayout,
-        --palette--;LLL:EXT:frontend/Resources/Private/Language/locallang_ttc.xlf:palette.appearanceLinks;appearanceLinks,
-    --div--;LLL:EXT:core/Resources/Private/Language/Form/locallang_tabs.xlf:language,
-        --palette--;;language,
-    --div--;LLL:EXT:core/Resources/Private/Language/Form/locallang_tabs.xlf:access,
-        --palette--;;hidden,
-        --palette--;LLL:EXT:frontend/Resources/Private/Language/locallang_ttc.xlf:palette.access;access,
-    --div--;LLL:EXT:core/Resources/Private/Language/Form/locallang_tabs.xlf:categories,
-        categories,
-    --div--;LLL:EXT:core/Resources/Private/Language/Form/locallang_tabs.xlf:notes,
-        rowDescription,
-    --div--;LLL:EXT:core/Resources/Private/Language/Form/locallang_tabs.xlf:extended,
-';
-
-// Field arrangement for CE "menu"
-$GLOBALS['TCA']['tt_content']['types']['menu']['showitem'] = '
-    --div--;LLL:EXT:core/Resources/Private/Language/Form/locallang_tabs.xlf:general,
-        --palette--;LLL:EXT:frontend/Resources/Private/Language/locallang_ttc.xlf:palette.general;general,
-        --palette--;LLL:EXT:frontend/Resources/Private/Language/locallang_ttc.xlf:palette.header;header,
-        --palette--;LLL:EXT:frontend/Resources/Private/Language/locallang_ttc.xlf:palette.menu;menu,
-        --palette--;LLL:EXT:frontend/Resources/Private/Language/locallang_ttc.xlf:palette.menu_accessibility;menu_accessibility,
-    --div--;LLL:EXT:frontend/Resources/Private/Language/locallang_ttc.xlf:tabs.appearance,
-        --palette--;LLL:EXT:frontend/Resources/Private/Language/locallang_ttc.xlf:palette.frames;frames,
-        --palette--;LLL:EXT:frontend/Resources/Private/Language/locallang_ttc.xlf:palette.appearanceLinks;appearanceLinks,
-    --div--;LLL:EXT:core/Resources/Private/Language/Form/locallang_tabs.xlf:language,
-        --palette--;;language,
-    --div--;LLL:EXT:core/Resources/Private/Language/Form/locallang_tabs.xlf:access,
-        --palette--;;hidden,
-        --palette--;LLL:EXT:frontend/Resources/Private/Language/locallang_ttc.xlf:palette.access;access,
-    --div--;LLL:EXT:core/Resources/Private/Language/Form/locallang_tabs.xlf:categories,
-        categories,
-    --div--;LLL:EXT:core/Resources/Private/Language/Form/locallang_tabs.xlf:notes,
-        rowDescription,
-    --div--;LLL:EXT:core/Resources/Private/Language/Form/locallang_tabs.xlf:extended,
-';
-
-// Field arrangement for CE "shortcut"
-$GLOBALS['TCA']['tt_content']['types']['shortcut']['showitem'] = '
-    --div--;LLL:EXT:core/Resources/Private/Language/Form/locallang_tabs.xlf:general,
-        --palette--;LLL:EXT:frontend/Resources/Private/Language/locallang_ttc.xlf:palette.general;general,
-        header;LLL:EXT:frontend/Resources/Private/Language/locallang_ttc.xlf:header.ALT.shortcut_formlabel,
-        records;LLL:EXT:frontend/Resources/Private/Language/locallang_ttc.xlf:records_formlabel,
-    --div--;LLL:EXT:frontend/Resources/Private/Language/locallang_ttc.xlf:tabs.appearance,
-        --palette--;LLL:EXT:frontend/Resources/Private/Language/locallang_ttc.xlf:palette.frames;frames,
-        --palette--;LLL:EXT:frontend/Resources/Private/Language/locallang_ttc.xlf:palette.appearanceLinks;appearanceLinks,
-    --div--;LLL:EXT:core/Resources/Private/Language/Form/locallang_tabs.xlf:language,
-        --palette--;;language,
-    --div--;LLL:EXT:core/Resources/Private/Language/Form/locallang_tabs.xlf:access,
-        --palette--;;hidden,
-        --palette--;LLL:EXT:frontend/Resources/Private/Language/locallang_ttc.xlf:palette.access;access,
-    --div--;LLL:EXT:core/Resources/Private/Language/Form/locallang_tabs.xlf:categories,
-        categories,
-    --div--;LLL:EXT:core/Resources/Private/Language/Form/locallang_tabs.xlf:notes,
-        rowDescription,
-    --div--;LLL:EXT:core/Resources/Private/Language/Form/locallang_tabs.xlf:extended,
-';
-
-// Field arrangement for CE "list"
-$GLOBALS['TCA']['tt_content']['types']['list']['showitem'] = '
-    --div--;LLL:EXT:core/Resources/Private/Language/Form/locallang_tabs.xlf:general,
-        --palette--;LLL:EXT:frontend/Resources/Private/Language/locallang_ttc.xlf:palette.general;general,
-        --palette--;LLL:EXT:frontend/Resources/Private/Language/locallang_ttc.xlf:palette.header;header,
-    --div--;LLL:EXT:frontend/Resources/Private/Language/locallang_ttc.xlf:tabs.plugin,
-        list_type;LLL:EXT:frontend/Resources/Private/Language/locallang_ttc.xlf:list_type_formlabel,
-        pages;LLL:EXT:frontend/Resources/Private/Language/locallang_ttc.xlf:pages.ALT.list_formlabel,
-        recursive,
-    --div--;LLL:EXT:frontend/Resources/Private/Language/locallang_ttc.xlf:tabs.appearance,
-        --palette--;LLL:EXT:frontend/Resources/Private/Language/locallang_ttc.xlf:palette.frames;frames,
-        --palette--;LLL:EXT:frontend/Resources/Private/Language/locallang_ttc.xlf:palette.appearanceLinks;appearanceLinks,
-    --div--;LLL:EXT:core/Resources/Private/Language/Form/locallang_tabs.xlf:language,
-        --palette--;;language,
-    --div--;LLL:EXT:core/Resources/Private/Language/Form/locallang_tabs.xlf:access,
-        --palette--;;hidden,
-        --palette--;LLL:EXT:frontend/Resources/Private/Language/locallang_ttc.xlf:palette.access;access,
-    --div--;LLL:EXT:core/Resources/Private/Language/Form/locallang_tabs.xlf:categories,
-        categories,
-    --div--;LLL:EXT:core/Resources/Private/Language/Form/locallang_tabs.xlf:notes,
-        rowDescription,
-    --div--;LLL:EXT:core/Resources/Private/Language/Form/locallang_tabs.xlf:extended,
-';
-
-// Field arrangement for CE "div"
-$GLOBALS['TCA']['tt_content']['types']['div']['showitem'] = '
-    --div--;LLL:EXT:core/Resources/Private/Language/Form/locallang_tabs.xlf:general,
-        --palette--;LLL:EXT:frontend/Resources/Private/Language/locallang_ttc.xlf:palette.general;general,
-        header;LLL:EXT:frontend/Resources/Private/Language/locallang_ttc.xlf:header.ALT.div_formlabel,
-    --div--;LLL:EXT:frontend/Resources/Private/Language/locallang_ttc.xlf:tabs.appearance,
-        --palette--;LLL:EXT:frontend/Resources/Private/Language/locallang_ttc.xlf:palette.frames;frames,
-        --palette--;LLL:EXT:frontend/Resources/Private/Language/locallang_ttc.xlf:palette.appearanceLinks;appearanceLinks,
-    --div--;LLL:EXT:core/Resources/Private/Language/Form/locallang_tabs.xlf:language,
-        --palette--;;language,
-    --div--;LLL:EXT:core/Resources/Private/Language/Form/locallang_tabs.xlf:access,
-        --palette--;;hidden,
-        --palette--;LLL:EXT:frontend/Resources/Private/Language/locallang_ttc.xlf:palette.access;access,
-    --div--;LLL:EXT:core/Resources/Private/Language/Form/locallang_tabs.xlf:categories,
-        categories,
-    --div--;LLL:EXT:core/Resources/Private/Language/Form/locallang_tabs.xlf:notes,
-        rowDescription,
-    --div--;LLL:EXT:core/Resources/Private/Language/Form/locallang_tabs.xlf:extended,
-';
-
-// Field arrangement for CE "html"
-$GLOBALS['TCA']['tt_content']['types']['html']['showitem'] = '
-    --div--;LLL:EXT:core/Resources/Private/Language/Form/locallang_tabs.xlf:general,
-        --palette--;LLL:EXT:frontend/Resources/Private/Language/locallang_ttc.xlf:palette.general;general,
-        header;LLL:EXT:frontend/Resources/Private/Language/locallang_ttc.xlf:header.ALT.html_formlabel,
-        bodytext;LLL:EXT:frontend/Resources/Private/Language/locallang_ttc.xlf:bodytext.ALT.html_formlabel,
-    --div--;LLL:EXT:frontend/Resources/Private/Language/locallang_ttc.xlf:tabs.appearance,
-        --palette--;LLL:EXT:frontend/Resources/Private/Language/locallang_ttc.xlf:palette.frames;frames,
-        --palette--;LLL:EXT:frontend/Resources/Private/Language/locallang_ttc.xlf:palette.appearanceLinks;appearanceLinks,
-    --div--;LLL:EXT:core/Resources/Private/Language/Form/locallang_tabs.xlf:language,
-        --palette--;;language,
-    --div--;LLL:EXT:core/Resources/Private/Language/Form/locallang_tabs.xlf:access,
-        --palette--;;hidden,
-        --palette--;LLL:EXT:frontend/Resources/Private/Language/locallang_ttc.xlf:palette.access;access,
-    --div--;LLL:EXT:core/Resources/Private/Language/Form/locallang_tabs.xlf:categories,
-        categories,
-    --div--;LLL:EXT:core/Resources/Private/Language/Form/locallang_tabs.xlf:notes,
-        rowDescription,
-    --div--;LLL:EXT:core/Resources/Private/Language/Form/locallang_tabs.xlf:extended,
-';
-
-$GLOBALS['TCA']['tt_content']['columns']['section_frame']['config']['items'][0] = [
-    'LLL:EXT:css_styled_content/Resources/Private/Language/locallang_db.xlf:tt_content.tx_cssstyledcontent_section_frame.I.0', '0'
-];
-
-$GLOBALS['TCA']['tt_content']['columns']['section_frame']['config']['items'][9] = [
-    'LLL:EXT:css_styled_content/Resources/Private/Language/locallang_db.xlf:tt_content.tx_cssstyledcontent_section_frame.I.9', '66'
-];
diff --git a/typo3/sysext/css_styled_content/Configuration/TypoScript/ContentElement/Bullets.txt b/typo3/sysext/css_styled_content/Configuration/TypoScript/ContentElement/Bullets.txt
new file mode 100644
index 0000000000000000000000000000000000000000..eec2e0f33cf6507a6e44e8020099be976da63adf
--- /dev/null
+++ b/typo3/sysext/css_styled_content/Configuration/TypoScript/ContentElement/Bullets.txt
@@ -0,0 +1,59 @@
+# Bullet List:
+# A single bullet list.
+#
+# CType: bullets
+
+tt_content.bullets = COA
+tt_content.bullets {
+    10 = < lib.stdheader
+    20 = CASE
+    20 {
+        key.field = bullets_type
+        # Unordered List
+        default = TEXT
+        default {
+            field = bodytext
+            trim = 1
+            split {
+                token.char = 10
+                cObjNum = 1
+                1.current = 1
+                1.htmlSpecialChars = 1
+                1.wrap = <li>|</li>
+            }
+            dataWrap = <ul class="ce-bullets ce-bullets-{field:bullets_type}">|</ul>
+        }
+        # Ordered List
+        1 < .default
+        1 {
+            dataWrap = <ol class="ce-bullets ce-bullets-{field:bullets_type}">|</ol>
+        }
+        # Definition List
+        2 < .default
+        2 {
+            split {
+                1 >
+                1 {
+                    10 = TEXT
+                    10 {
+                        current = 1
+                        split {
+                            token = |
+                            cObjNum = |*|1|| 2|*|
+                            1.current = 1
+                            1.htmlSpecialChars = 1
+                            1.wrap = <dt>|</dt>
+                            2 < .1
+                            2.wrap = <dd>|</dd>
+                        }
+                    }
+                }
+            }
+            dataWrap = <dl class="ce-bullets ce-bullets-{field:bullets_type}">|</dl>
+        }
+        editIcons = tt_content: bodytext, [bullets_type]
+        editIcons.beforeLastTag = 1
+        editIcons.iconTitle.data = LLL:EXT:css_styled_content/pi1/locallang.xlf:eIcon.bullets
+        prefixComment = 2 | Bullet list:
+    }
+}
diff --git a/typo3/sysext/css_styled_content/Configuration/TypoScript/ContentElement/Div.txt b/typo3/sysext/css_styled_content/Configuration/TypoScript/ContentElement/Div.txt
new file mode 100644
index 0000000000000000000000000000000000000000..465b36ca8ef8ffc9648e8ec3c2e9e065054c5232
--- /dev/null
+++ b/typo3/sysext/css_styled_content/Configuration/TypoScript/ContentElement/Div.txt
@@ -0,0 +1,15 @@
+# Divider:
+# This element inserts a visual divider, which is by default a horizontal line.
+#
+# CType: div
+
+tt_content.div = TEXT
+tt_content.div {
+    value = <hr>
+    override = <hr />
+    override.if {
+        isTrue.data = TSFE:xhtmlDoctype
+    }
+    wrap = <div class="divider">|</div>
+    prefixComment = 2 | Div element
+}
diff --git a/typo3/sysext/css_styled_content/Configuration/TypoScript/ContentElement/Header.txt b/typo3/sysext/css_styled_content/Configuration/TypoScript/ContentElement/Header.txt
new file mode 100644
index 0000000000000000000000000000000000000000..f574e2d082c159b80b74db48f302619ef0d20e2d
--- /dev/null
+++ b/typo3/sysext/css_styled_content/Configuration/TypoScript/ContentElement/Header.txt
@@ -0,0 +1,25 @@
+# Header Only:
+# Adds a header only.
+#
+# CType: header
+
+tt_content.header = COA
+tt_content.header {
+    10 = < lib.stdheader
+    20 = TEXT
+    20 {
+        field = subheader
+        required = 1
+        dataWrap = <p class="csc-subheader csc-subheader-{field:layout}">|</p>
+        htmlSpecialChars = 1
+        if {
+            value = html5
+            equals.data = TSFE:config|config|doctype
+            negate = 1
+        }
+        editIcons = tt_content:subheader,layout
+        editIcons.beforeLastTag = 1
+        editIcons.iconTitle.data = LLL:EXT:css_styled_content/Resources/Private/Language/locallang.xlf:eIcon.subheader
+        prefixComment = 2 | Subheader:
+    }
+}
diff --git a/typo3/sysext/css_styled_content/Configuration/TypoScript/ContentElement/Html.txt b/typo3/sysext/css_styled_content/Configuration/TypoScript/ContentElement/Html.txt
new file mode 100644
index 0000000000000000000000000000000000000000..26d096d8c90e616717b4c6cd78a32c573344c2e8
--- /dev/null
+++ b/typo3/sysext/css_styled_content/Configuration/TypoScript/ContentElement/Html.txt
@@ -0,0 +1,13 @@
+# Plain HTML:
+# With this element you can output raw HTML code on the page.
+#
+# CType: html
+
+tt_content.html = TEXT
+tt_content.html {
+    field = bodytext
+    editIcons = tt_content:bodytext
+    editIcons.beforeLastTag = 1
+    editIcons.iconTitle.data = LLL:EXT:css_styled_content/Resources/Private/Language/locallang.xlf:eIcon.html
+    prefixComment = 2 | Raw HTML content:
+}
diff --git a/typo3/sysext/css_styled_content/Configuration/TypoScript/ContentElement/Image.txt b/typo3/sysext/css_styled_content/Configuration/TypoScript/ContentElement/Image.txt
new file mode 100644
index 0000000000000000000000000000000000000000..38dc4dde75889d515cc8cce5dbbbe6964b063ecb
--- /dev/null
+++ b/typo3/sysext/css_styled_content/Configuration/TypoScript/ContentElement/Image.txt
@@ -0,0 +1,475 @@
+# Image:
+# also used for rendering 'textpic' type
+#
+# CType: image
+
+tt_content.image = COA
+tt_content.image.10 = < lib.stdheader
+tt_content.image.20 = USER
+tt_content.image.20 {
+    userFunc = TYPO3\CMS\CssStyledContent\Controller\CssStyledContentController->render_textpic
+    preRenderRegisters {
+        // To optimize performance we load all image captions into a register
+        // because we need to know if at least one image has a caption at
+        // multiple places to determine the render method.
+        allImageCaptions.cObject = FILES
+        allImageCaptions.cObject {
+            references {
+                table = tt_content
+                fieldName = image
+            }
+            renderObj = TEXT
+            renderObj.data = file:current:description
+        }
+    }
+    # Image source
+    imgList.cObject = FILES
+    imgList.cObject {
+        references < tt_content.image.20.preRenderRegisters.allImageCaptions.cObject.references
+        renderObj = TEXT
+        renderObj.data = file:current:uid
+        renderObj.wrap = |,
+    }
+    imgPath = uploads/pics/
+    // This needs to be set because the UID list generated in the imgList
+    // setting contains UIDs of file references (not files).
+    imgListContainsReferenceUids = 1
+    # Single image rendering
+    imgObjNum = 1
+    1 {
+        file.import.data = file:current:uid
+        file.treatIdAsReference = 1
+        file.width.field = imagewidth
+        layoutKey = {$styles.content.imgtext.layoutKey}
+        layout {
+            default {
+                element = <img src="###SRC###" width="###WIDTH###" height="###HEIGHT###"###PARAMS######ALTPARAMS######BORDER######SELFCLOSINGTAGSLASH###>
+            }
+            srcset {
+                element = <img src="###SRC###" srcset="###SOURCECOLLECTION###"###PARAMS######ALTPARAMS######SELFCLOSINGTAGSLASH###>
+                source = |*|###SRC### ###SRCSETCANDIDATE###,|*|###SRC### ###SRCSETCANDIDATE###
+            }
+            picture {
+                element = <picture>###SOURCECOLLECTION###<img src="###SRC###"###PARAMS######ALTPARAMS######SELFCLOSINGTAGSLASH###></picture>
+                source = <source srcset="###SRC###" media="###MEDIAQUERY###"###SELFCLOSINGTAGSLASH###>
+            }
+            data {
+                element = <img src="###SRC###"###SOURCECOLLECTION######PARAMS######ALTPARAMS######SELFCLOSINGTAGSLASH###>
+                source = data-###DATAKEY###="###SRC###"
+                source.noTrimWrap = ; ;;
+                source.noTrimWrap.splitChar = ;
+            }
+        }
+        # Default sourceCollection as an example
+        # Please write your own sourceCollection (highly recommended)
+        sourceCollection {
+            small {
+                width = 200
+                srcsetCandidate = 600w
+                mediaQuery = (max-device-width: 600px)
+                dataKey = small
+            }
+            smallRetina {
+                if {
+                    value = {$styles.content.imgtext.layoutKey}
+                    equals = default
+                    negate = 1
+                }
+                width = 200
+                pixelDensity = 2
+                srcsetCandidate = 600w 2x
+                mediaQuery = (max-device-width: 600px) AND (min-resolution: 192dpi)
+                dataKey = smallRetina
+            }
+        }
+        imageLinkWrap = 1
+        imageLinkWrap {
+            bodyTag = <body style="margin:0; background:#fff;">
+            wrap = <a href="javascript:close();"> | </a>
+            width = {$styles.content.imgtext.linkWrap.width}
+            height = {$styles.content.imgtext.linkWrap.height}
+            effects = {$styles.content.imgtext.linkWrap.effects}
+            crop.data = file:current:crop
+            JSwindow = 1
+            JSwindow.newWindow = {$styles.content.imgtext.linkWrap.newWindow}
+            JSwindow.if.isFalse = {$styles.content.imgtext.linkWrap.lightboxEnabled}
+            directImageLink = {$styles.content.imgtext.linkWrap.lightboxEnabled}
+            enable.field = image_zoom
+            enable.ifEmpty.typolink.parameter.data = file:current:link
+            enable.ifEmpty.typolink.returnLast = url
+            typolink.parameter.data = file:current:link
+            typolink.target < lib.parseTarget
+            typolink.target =
+            typolink.target.override = {$styles.content.links.target}
+            typolink.extTarget < lib.parseTarget
+            typolink.extTarget =
+            typolink.extTarget.override = {$styles.content.links.extTarget}
+            linkParams.ATagParams.dataWrap =  class="{$styles.content.imgtext.linkWrap.lightboxCssClass}" rel="{$styles.content.imgtext.linkWrap.lightboxRelAttribute}"
+        }
+        altText = TEXT
+        altText {
+            data = file:current:alternative
+            stripHtml = 1
+        }
+        titleText < .altText
+        titleText.data = file:current:title
+        longdescURL {
+            parameter {
+                field = longdescURL
+                split {
+                    token {
+                        char = 10
+                    }
+                    returnKey.data = register : IMAGE_NUM_CURRENT
+                }
+            }
+        }
+        emptyTitleHandling = {$styles.content.imgtext.emptyTitleHandling}
+        titleInLink = {$styles.content.imgtext.titleInLink}
+        titleInLinkAndImg = {$styles.content.imgtext.titleInLinkAndImg}
+    }
+    textPos.field = imageorient
+    maxW = {$styles.content.imgtext.maxW}
+    maxW.override.data = register:maxImageWidth
+    maxWInText = {$styles.content.imgtext.maxWInText}
+    maxWInText.override.data = register:maxImageWidthInText
+    equalH.field = imageheight
+    cols.field = imagecols
+    border.field = imageborder
+    caption {
+        1 = COA
+        1 {
+            1 = TEXT
+            1 {
+                data = file:current:description
+                required = 1
+                htmlSpecialChars = 1
+                br = 1
+            }
+        }
+    }
+    // This needs to be set to TRUE because otherwise render_textpic will
+    // render a global caption which we do not have.
+    imageTextSplit = 1
+    borderThick = {$styles.content.imgtext.borderThick}
+    borderClass = {$styles.content.imgtext.borderClass}
+    colSpace = {$styles.content.imgtext.colSpace}
+    textMargin = {$styles.content.imgtext.textMargin}
+    borderSpace = {$styles.content.imgtext.borderSpace}
+    separateRows = {$styles.content.imgtext.separateRows}
+    addClasses =
+    addClassesCol =
+    addClassesCol.ifEmpty = csc-textpic-firstcol csc-textpic-lastcol
+    addClassesCol.override = csc-textpic-firstcol |*| |*| csc-textpic-lastcol
+    addClassesCol.override.if {
+        isGreaterThan.field = imagecols
+        value = 1
+    }
+    addClassesImage = csc-textpic-first |*| |*| csc-textpic-last
+    #
+    imageStdWrap.dataWrap = <div class="csc-textpic-imagewrap" style="width:{register:totalwidth}px;"> | </div>
+    imageStdWrapNoWidth.wrap = <div class="csc-textpic-imagewrap"> | </div>
+
+    layout = CASE
+    layout {
+        key.field = imageorient
+        # above-center
+        default = TEXT
+        default {
+            value = <div class="csc-textpic csc-textpic-center csc-textpic-above###CLASSES###">###IMAGES######TEXT###</div>
+            override = <div class="csc-textpic csc-textpic-responsive csc-textpic-center csc-textpic-above###CLASSES###">###IMAGES######TEXT###</div>
+            override {
+                if {
+                    value = default
+                    equals = {$styles.content.imgtext.layoutKey}
+                    negate = 1
+                }
+            }
+        }
+        # above-right
+        1 = TEXT
+        1 {
+            value = <div class="csc-textpic csc-textpic-right csc-textpic-above###CLASSES###">###IMAGES######TEXT###</div>
+            override = <div class="csc-textpic csc-textpic-responsive csc-textpic-right csc-textpic-above###CLASSES###">###IMAGES######TEXT###</div>
+            override {
+                if {
+                    value = default
+                    equals = {$styles.content.imgtext.layoutKey}
+                    negate = 1
+                }
+            }
+        }
+        # above-left
+        2 = TEXT
+        2 {
+            value = <div class="csc-textpic csc-textpic-left csc-textpic-above###CLASSES###">###IMAGES######TEXT###</div>
+            override = <div class="csc-textpic csc-textpic-responsive csc-textpic-left csc-textpic-above###CLASSES###">###IMAGES######TEXT###</div>
+            override {
+                if {
+                    value = default
+                    equals = {$styles.content.imgtext.layoutKey}
+                    negate = 1
+                }
+            }
+        }
+        # below-center
+        8 = TEXT
+        8 {
+            value = <div class="csc-textpic csc-textpic-center csc-textpic-below###CLASSES###">###TEXT######IMAGES###</div>
+            override = <div class="csc-textpic csc-textpic-responsive csc-textpic-center csc-textpic-below###CLASSES###">###TEXT######IMAGES###</div>
+            override {
+                if {
+                    value = default
+                    equals = {$styles.content.imgtext.layoutKey}
+                    negate = 1
+                }
+            }
+        }
+        # below-right
+        9 = TEXT
+        9 {
+            value = <div class="csc-textpic csc-textpic-right csc-textpic-below###CLASSES###">###TEXT######IMAGES###</div>
+            override = <div class="csc-textpic csc-textpic-responsive csc-textpic-right csc-textpic-below###CLASSES###">###TEXT######IMAGES###</div>
+            override {
+                if {
+                    value = default
+                    equals = {$styles.content.imgtext.layoutKey}
+                    negate = 1
+                }
+            }
+        }
+        # below-left
+        10 = TEXT
+        10 {
+            value = <div class="csc-textpic csc-textpic-left csc-textpic-below###CLASSES###">###TEXT######IMAGES###</div>
+            override = <div class="csc-textpic csc-textpic-responsive csc-textpic-left csc-textpic-below###CLASSES###">###TEXT######IMAGES###</div>
+            override {
+                if {
+                    value = default
+                    equals = {$styles.content.imgtext.layoutKey}
+                    negate = 1
+                }
+            }
+        }
+        # intext-right
+        17 = TEXT
+        17 {
+            value = <div class="csc-textpic csc-textpic-intext-right###CLASSES###">###IMAGES######TEXT###</div>
+            override = <div class="csc-textpic csc-textpic-responsive csc-textpic-intext-right###CLASSES###">###IMAGES######TEXT###</div>
+            override {
+                if {
+                    value = default
+                    equals = {$styles.content.imgtext.layoutKey}
+                    negate = 1
+                }
+            }
+        }
+        # intext-left
+        18 = TEXT
+        18 {
+            value = <div class="csc-textpic csc-textpic-intext-left###CLASSES###">###IMAGES######TEXT###</div>
+            override = <div class="csc-textpic csc-textpic-responsive csc-textpic-intext-left###CLASSES###">###IMAGES######TEXT###</div>
+            override {
+                if {
+                    value = default
+                    equals = {$styles.content.imgtext.layoutKey}
+                    negate = 1
+                }
+            }
+        }
+        # intext-right-nowrap
+        25 = TEXT
+        25 {
+            value = <div class="csc-textpic csc-textpic-intext-right-nowrap###CLASSES###">###IMAGES######TEXT###</div>
+            override = <div class="csc-textpic csc-textpic-responsive csc-textpic-intext-right-nowrap###CLASSES###">###IMAGES######TEXT###</div>
+            override {
+                if {
+                    value = default
+                    equals = {$styles.content.imgtext.layoutKey}
+                    negate = 1
+                }
+            }
+        }
+        # intext-left-nowrap
+        26 = TEXT
+        26 {
+            value = <div class="csc-textpic csc-textpic-intext-left-nowrap###CLASSES###">###IMAGES######TEXT###</div>
+            override = <div class="csc-textpic csc-textpic-responsive csc-textpic-intext-left-nowrap###CLASSES###">###IMAGES######TEXT###</div>
+            override {
+                if {
+                    value = default
+                    equals = {$styles.content.imgtext.layoutKey}
+                    negate = 1
+                }
+            }
+        }
+    }
+    rendering {
+        # Single image - No caption
+        singleNoCaption {
+            # Choose another rendering for special edge cases
+            fallbackRendering = COA
+            fallbackRendering {
+                # Single image - Caption
+                10 = TEXT
+                10 {
+                    if {
+                        isTrue.data = file:current:description
+                        value = 1
+                        equals.data = register:imageCount
+                    }
+                    value = singleCaption
+                }
+                # Multiple images and split caption
+                20 = TEXT
+                20 {
+                    if {
+                        value = 1
+                        isGreaterThan.data = register:imageCount
+                        isTrue.if.isFalse.data = register:renderGlobalCaption
+                        isTrue.data = register:allImageCaptions
+                    }
+                    value = splitCaption
+                }
+                # Multiple images and no caption at all
+                40 = TEXT
+                40 {
+                    if {
+                        value = 1
+                        isGreaterThan.data = register:imageCount
+                        isFalse.data = register:allImageCaptions
+                    }
+                    value = noCaption
+                }
+            }
+            allStdWrap {
+                dataWrap = <div class="csc-textpic-imagewrap"> | </div>
+                dataWrap {
+                    override = <div class="csc-textpic-imagewrap" data-csc-images="{register:imageCount}" data-csc-cols="{field:imagecols}"> | </div>
+                    override {
+                        if {
+                            value = html5
+                            equals.data = TSFE:config|config|doctype
+                        }
+                    }
+                }
+                innerWrap.cObject = CASE
+                innerWrap.cObject {
+                    key.field = imageorient
+                    # above-center
+                    0 = TEXT
+                    0.value = <div class="csc-textpic-center-outer"><div class="csc-textpic-center-inner"> | </div></div>
+                    # below-center
+                    8 < .0
+                }
+            }
+            singleStdWrap {
+                wrap = <div class="csc-textpic-image###CLASSES###"> | </div>
+                wrap {
+                    override = <figure class="csc-textpic-image###CLASSES###"> | </figure>
+                    override {
+                        if {
+                            value = html5
+                            equals.data = TSFE:config|config|doctype
+                        }
+                    }
+                }
+            }
+            rowStdWrap.wrap = |
+            lastRowStdWrap.wrap = |
+            columnStdWrap.wrap = |
+            imgTagStdWrap.wrap = |
+            editIconsStdWrap.wrap = <div> | </div>
+            caption.wrap = |
+        }
+        noCaption {
+            # Multiple images and no caption at all
+            fallbackRendering < tt_content.image.20.rendering.singleNoCaption.fallbackRendering.10
+            allStdWrap {
+                dataWrap = <div class="csc-textpic-imagewrap"> | </div>
+                dataWrap {
+                    override = <div class="csc-textpic-imagewrap" data-csc-images="{register:imageCount}" data-csc-cols="{field:imagecols}"> | </div>
+                    override {
+                        if {
+                            value = html5
+                            equals.data = TSFE:config|config|doctype
+                        }
+                    }
+                }
+            }
+            singleStdWrap {
+                wrap = <div class="csc-textpic-image###CLASSES###"> | </div>
+                wrap {
+                    override = <figure class="csc-textpic-image###CLASSES###"> | </figure>
+                }
+            }
+            rowStdWrap.wrap = <div class="csc-textpic-imagerow"> | </div>
+            lastRowStdWrap.wrap = <div class="csc-textpic-imagerow csc-textpic-imagerow-last"> | </div>
+            columnStdWrap.wrap = <div class="csc-textpic-imagecolumn###CLASSES###"> | </div>
+        }
+        singleCaption {
+            # Just one image with a caption
+            fallbackRendering < tt_content.image.20.rendering.singleNoCaption.fallbackRendering.10
+            singleStdWrap {
+                wrap = <div class="csc-textpic-image###CLASSES###"><table>###CAPTION###<tbody><tr><td> | </td></tr></tbody></table></div>
+                wrap {
+                    override = <figure class="csc-textpic-image###CLASSES###">|###CAPTION###</figure>
+                    override {
+                        if {
+                            value = html5
+                            equals.data = TSFE:config|config|doctype
+                        }
+                    }
+                }
+            }
+            caption {
+                required = 1
+                wrap = <caption class="csc-textpic-caption###CLASSES###"> | </caption>
+                wrap {
+                    override = <figcaption class="csc-textpic-caption###CLASSES###"> | </figcaption>
+                    override {
+                        if {
+                            value = html5
+                            equals.data = TSFE:config|config|doctype
+                        }
+                    }
+                }
+            }
+        }
+        splitCaption {
+            fallbackRendering < tt_content.image.20.rendering.singleNoCaption.fallbackRendering.10
+            singleStdWrap {
+                wrap = <div class="csc-textpic-image###CLASSES###"><table>###CAPTION###<tbody><tr><td> | </td></tr></tbody></table></div>
+                wrap {
+                    override = <figure class="csc-textpic-image###CLASSES###">|###CAPTION###</figure>
+                    override {
+                        if {
+                            value = html5
+                            equals.data = TSFE:config|config|doctype
+                        }
+                    }
+                }
+            }
+            rowStdWrap.wrap = <div class="csc-textpic-imagerow"> | </div>
+            lastRowStdWrap.wrap = <div class="csc-textpic-imagerow csc-textpic-imagerow-last"> | </div>
+            columnStdWrap.wrap = <div class="csc-textpic-imagecolumn###CLASSES###"> | </div>
+            caption {
+                required = 1
+                wrap = <caption class="csc-textpic-caption###CLASSES###"> | </caption>
+                wrap {
+                    override = <figcaption class="csc-textpic-caption###CLASSES###"> | </figcaption>
+                    override {
+                        if {
+                            value = html5
+                            equals.data = TSFE:config|config|doctype
+                        }
+                    }
+                }
+            }
+        }
+    }
+    renderMethod = singleNoCaption
+    editIcons = tt_content : image [imageorient|imagewidth|imageheight],[imagecols|imageborder],[image_zoom],[image_frames]
+    editIcons.iconTitle.data = LLL:EXT:css_styled_content/Resources/Private/Language/locallang.xlf:eIcon.images
+    stdWrap.prefixComment = 2 | Image block:
+}
diff --git a/typo3/sysext/css_styled_content/Configuration/TypoScript/ContentElement/List.txt b/typo3/sysext/css_styled_content/Configuration/TypoScript/ContentElement/List.txt
new file mode 100644
index 0000000000000000000000000000000000000000..ee2fb04f56cfde966ccf5c14b35001ce15138bb2
--- /dev/null
+++ b/typo3/sysext/css_styled_content/Configuration/TypoScript/ContentElement/List.txt
@@ -0,0 +1,16 @@
+# General Plugin:
+# This is the default rendering definition for plugins.
+#
+# CType: list
+
+tt_content.list = COA
+tt_content.list {
+    10 = < lib.stdheader
+    20 = CASE
+    20.key.field = list_type
+    20.stdWrap {
+        editIcons = tt_content: list_type, layout, select_key, pages [recursive]
+        editIcons.iconTitle.data = LLL:EXT:css_styled_content/Resources/Private/Language/locallang.xlf:eIcon.plugin
+        prefixComment = 2 | Plugin inserted:
+    }
+}
diff --git a/typo3/sysext/css_styled_content/Configuration/TypoScript/ContentElement/MenuAbstract.txt b/typo3/sysext/css_styled_content/Configuration/TypoScript/ContentElement/MenuAbstract.txt
new file mode 100644
index 0000000000000000000000000000000000000000..a2187f26a24b40165e30a9b929a5121d33a02911
--- /dev/null
+++ b/typo3/sysext/css_styled_content/Configuration/TypoScript/ContentElement/MenuAbstract.txt
@@ -0,0 +1,38 @@
+# Menu of subpages of selected pages including abstracts:
+# ...
+#
+# CType: menu_abstract
+
+tt_content.menu_abstract = COA
+tt_content.menu_abstract {
+    10 = < lib.stdheader
+    20 < lib.defaultMenu
+    20 {
+        stdWrap {
+            prepend.20.renderObj.wrap = <dt class="csc-nav-bypass">|</dt><dd>&nbsp;</dd>
+            outerWrap = <dl class="csc-menu csc-menu-4">|</dl>
+        }
+        1.NO {
+            wrapItemAndSub >
+            linkWrap = <dt>|</dt>
+            after {
+                cObject = TEXT
+                cObject {
+                    data = field : abstract // field : description // field : subtitle
+                    htmlSpecialChars = 1
+                    required = 1
+                }
+                ifBlank = &nbsp;
+                wrap = <dd>|</dd>
+            }
+            ATagTitle.field = description // title
+        }
+    }
+}
+
+tt_content.stdWrap.innerWrap.cObject.default {
+    10.cObject.menu_abstract = TEXT
+    10.cObject.menu_abstract.value = <nav id="c{field:uid}"
+    30.cObject.menu_abstract = TEXT
+    30.cObject.menu_abstract.value = >|</nav>
+}
diff --git a/typo3/sysext/css_styled_content/Configuration/TypoScript/ContentElement/MenuCategorizedContent.txt b/typo3/sysext/css_styled_content/Configuration/TypoScript/ContentElement/MenuCategorizedContent.txt
new file mode 100644
index 0000000000000000000000000000000000000000..3b2dbbb3fbd83aed30304c3f6a31fc4bd6304dd0
--- /dev/null
+++ b/typo3/sysext/css_styled_content/Configuration/TypoScript/ContentElement/MenuCategorizedContent.txt
@@ -0,0 +1,23 @@
+# Content elements for selected categories:
+# ...
+#
+# CType: menu_categorized_content
+
+tt_content.menu_categorized_content = COA
+tt_content.menu_categorized_content {
+    10 = < lib.stdheader
+    20 = RECORDS
+    20 {
+        categories.field = selected_categories
+        categories.relation.field = category_field
+        tables = tt_content
+        conf.tt_content = TEXT
+        conf.tt_content {
+            field = header
+            typolink.parameter = {field:pid}#{field:uid}
+            typolink.parameter.insertData = 1
+            wrap = <li>|</li>
+        }
+        wrap = <ul>|</ul>
+    }
+}
diff --git a/typo3/sysext/css_styled_content/Configuration/TypoScript/ContentElement/MenuCategorizedPages.txt b/typo3/sysext/css_styled_content/Configuration/TypoScript/ContentElement/MenuCategorizedPages.txt
new file mode 100644
index 0000000000000000000000000000000000000000..5ffb2f1dfe1b422e95a460d462be5fbb7e5261c9
--- /dev/null
+++ b/typo3/sysext/css_styled_content/Configuration/TypoScript/ContentElement/MenuCategorizedPages.txt
@@ -0,0 +1,22 @@
+# Pages for selected categories:
+# ...
+#
+# CType: menu_categorized_pages
+
+tt_content.menu_categorized_pages = COA
+tt_content.menu_categorized_pages {
+    10 = < lib.stdheader
+    20 < lib.defaultMenu
+    20 {
+        special = categories
+        special {
+            value.field = selected_categories
+            relation.field = category_field
+            sorting = title
+            order = asc
+        }
+        stdWrap {
+            outerWrap = <ul class="csc-menu csc-menu-categorized-pages">|</ul>
+        }
+    }
+}
diff --git a/typo3/sysext/css_styled_content/Configuration/TypoScript/ContentElement/MenuPages.txt b/typo3/sysext/css_styled_content/Configuration/TypoScript/ContentElement/MenuPages.txt
new file mode 100644
index 0000000000000000000000000000000000000000..8acbaf88d85ed7690eb5910d755105841a8dabf4
--- /dev/null
+++ b/typo3/sysext/css_styled_content/Configuration/TypoScript/ContentElement/MenuPages.txt
@@ -0,0 +1,23 @@
+# Menu of selected pages:
+# ...
+#
+# CType: menu_pages
+
+tt_content.menu_pages = COA
+tt_content.menu_pages {
+    10 = < lib.stdheader
+    20 < lib.defaultMenu
+    20 {
+        special = list
+        stdWrap {
+            outerWrap = <ul class="csc-menu csc-menu-def">|</ul>
+        }
+    }
+}
+
+tt_content.stdWrap.innerWrap.cObject.default {
+    10.cObject.menu_pages = TEXT
+    10.cObject.menu_pages.value = <nav id="c{field:uid}"
+    30.cObject.menu_pages = TEXT
+    30.cObject.menu_pages.value = >|</nav>
+}
diff --git a/typo3/sysext/css_styled_content/Configuration/TypoScript/ContentElement/MenuRecentlyUpdated.txt b/typo3/sysext/css_styled_content/Configuration/TypoScript/ContentElement/MenuRecentlyUpdated.txt
new file mode 100644
index 0000000000000000000000000000000000000000..b4776dc2346a8ffcb313f5e61c5b86ce40f2672c
--- /dev/null
+++ b/typo3/sysext/css_styled_content/Configuration/TypoScript/ContentElement/MenuRecentlyUpdated.txt
@@ -0,0 +1,27 @@
+# Recently updated pages:
+# ...
+#
+# CType: menu_recently_updated
+
+tt_content.menu_recently_updated = COA
+tt_content.menu_recently_updated {
+    10 = < lib.stdheader
+    20 < lib.defaultMenu
+    20 {
+        special = updated
+        special {
+            maxAge = 3600*24*7
+            excludeNoSearchPages = 1
+        }
+        stdWrap {
+            outerWrap = <ul class="csc-menu csc-menu-5">|</ul>
+        }
+    }
+}
+
+tt_content.stdWrap.innerWrap.cObject.default {
+    10.cObject.menu_recently_updated = TEXT
+    10.cObject.menu_recently_updated.value = <nav id="c{field:uid}"
+    30.cObject.menu_recently_updated = TEXT
+    30.cObject.menu_recently_updated.value = >|</nav>
+}
diff --git a/typo3/sysext/css_styled_content/Configuration/TypoScript/ContentElement/MenuRelatedPages.txt b/typo3/sysext/css_styled_content/Configuration/TypoScript/ContentElement/MenuRelatedPages.txt
new file mode 100644
index 0000000000000000000000000000000000000000..99c36aabf9d30733fa3a35a9d8a669c13594d17b
--- /dev/null
+++ b/typo3/sysext/css_styled_content/Configuration/TypoScript/ContentElement/MenuRelatedPages.txt
@@ -0,0 +1,26 @@
+# Related pages (based on keywords):
+# ...
+#
+# CType: menu_related_pages
+
+tt_content.menu_related_pages = COA
+tt_content.menu_related_pages {
+    10 = < lib.stdheader
+    20 < lib.defaultMenu
+    20 {
+        special = keywords
+        special {
+            excludeNoSearchPages = 1
+        }
+        stdWrap {
+            outerWrap = <ul class="csc-menu csc-menu-6">|</ul>
+        }
+    }
+}
+
+tt_content.stdWrap.innerWrap.cObject.default {
+    10.cObject.menu_related_pages = TEXT
+    10.cObject.menu_related_pages.value = <nav id="c{field:uid}"
+    30.cObject.menu_related_pages = TEXT
+    30.cObject.menu_related_pages.value = >|</nav>
+}
diff --git a/typo3/sysext/css_styled_content/Configuration/TypoScript/ContentElement/MenuSection.txt b/typo3/sysext/css_styled_content/Configuration/TypoScript/ContentElement/MenuSection.txt
new file mode 100644
index 0000000000000000000000000000000000000000..25de6e4f842dbe95fd0907eb6f350fce39d46359
--- /dev/null
+++ b/typo3/sysext/css_styled_content/Configuration/TypoScript/ContentElement/MenuSection.txt
@@ -0,0 +1,39 @@
+# Section index (page content marked for section menus):
+# ...
+#
+# CType: menu_section
+
+tt_content.menu_section = COA
+tt_content.menu_section {
+    10 = < lib.stdheader
+    20 < lib.defaultMenu
+    20 {
+        special = list
+        special {
+            value {
+                override {
+                    data = page:uid
+                    if {
+                        isFalse.field = pages
+                    }
+                }
+            }
+        }
+        stdWrap {
+            outerWrap = <ul class="csc-menu csc-menu-3">|</ul>
+        }
+        1 = TMENU
+        1 {
+            sectionIndex = 1
+            sectionIndex.type = header
+            NO.wrapItemAndSub = <li class="csc-section">|</li>
+        }
+    }
+}
+
+tt_content.stdWrap.innerWrap.cObject.default {
+    10.cObject.menu_section = TEXT
+    10.cObject.menu_section.value = <nav id="c{field:uid}"
+    30.cObject.menu_section = TEXT
+    30.cObject.menu_section.value = >|</nav>
+}
diff --git a/typo3/sysext/css_styled_content/Configuration/TypoScript/ContentElement/MenuSectionPages.txt b/typo3/sysext/css_styled_content/Configuration/TypoScript/ContentElement/MenuSectionPages.txt
new file mode 100644
index 0000000000000000000000000000000000000000..9f657ac32367ffb12aafd26f85af83ad7d93a714
--- /dev/null
+++ b/typo3/sysext/css_styled_content/Configuration/TypoScript/ContentElement/MenuSectionPages.txt
@@ -0,0 +1,31 @@
+# Menu of subpages of selected pages including sections:
+# ...
+#
+# CType: menu_section_pages
+
+tt_content.menu_section_pages = COA
+tt_content.menu_section_pages {
+    10 = < lib.stdheader
+    20 < lib.defaultMenu
+    20 {
+        special = directory
+        1.expAll = 1
+        2 < .1
+        2 {
+            sectionIndex = 1
+            sectionIndex.type = header
+            wrap = <ul>|</ul>
+            NO.wrapItemAndSub = <li class="csc-section">|</li>
+        }
+        stdWrap {
+            outerWrap = <ul class="csc-menu csc-menu-7">|</ul>
+        }
+    }
+}
+
+tt_content.stdWrap.innerWrap.cObject.default {
+    10.cObject.menu_section_pages = TEXT
+    10.cObject.menu_section_pages.value = <nav id="c{field:uid}"
+    30.cObject.menu_section_pages = TEXT
+    30.cObject.menu_section_pages.value = >|</nav>
+}
diff --git a/typo3/sysext/css_styled_content/Configuration/TypoScript/ContentElement/MenuSitemap.txt b/typo3/sysext/css_styled_content/Configuration/TypoScript/ContentElement/MenuSitemap.txt
new file mode 100644
index 0000000000000000000000000000000000000000..7b544ddbdc7cdb74b2bb3d0da826914073953cad
--- /dev/null
+++ b/typo3/sysext/css_styled_content/Configuration/TypoScript/ContentElement/MenuSitemap.txt
@@ -0,0 +1,42 @@
+# Sitemap:
+# ...
+#
+# CType: menu_sitemap
+
+tt_content.menu_sitemap = COA
+tt_content.menu_sitemap {
+    10 = < lib.stdheader
+    20 = HMENU
+    20 {
+        1 = TMENU
+        1 {
+            target < lib.parseTarget
+            target =
+            target.override = {$PAGE_TARGET}
+            expAll = 1
+            wrap = <ul>|</ul>
+            NO {
+                stdWrap.htmlSpecialChars = 1
+                wrapItemAndSub = <li>|</li>
+                ATagTitle.field = description // title
+            }
+        }
+        2 < .1
+        3 < .1
+        4 < .1
+        5 < .1
+        6 < .1
+        7 < .1
+        stdWrap < lib.defaultMenu.stdWrap
+        stdWrap {
+            outerWrap = <div class="csc-sitemap">|</div>
+        }
+    }
+}
+
+tt_content.stdWrap.innerWrap.cObject.default {
+    10.cObject.menu_sitemap = TEXT
+    10.cObject.menu_sitemap.value = <nav id="c{field:uid}"
+    30.cObject.menu_sitemap = TEXT
+    30.cObject.menu_sitemap.value = >|</nav>
+}
diff --git a/typo3/sysext/css_styled_content/Configuration/TypoScript/ContentElement/MenuSitemapPages.txt b/typo3/sysext/css_styled_content/Configuration/TypoScript/ContentElement/MenuSitemapPages.txt
new file mode 100644
index 0000000000000000000000000000000000000000..59e14d396c49615d9074c77e900fdb91eae0e2cb
--- /dev/null
+++ b/typo3/sysext/css_styled_content/Configuration/TypoScript/ContentElement/MenuSitemapPages.txt
@@ -0,0 +1,44 @@
+# Sitemaps of selected pages:
+# ...
+#
+# CType: menu_sitemap_pages
+
+tt_content.menu_sitemap_pages = COA
+tt_content.menu_sitemap_pages {
+    10 = < lib.stdheader
+    20 = HMENU
+    20 {
+        special = directory
+        special.value.field = pages
+        1 = TMENU
+        1 {
+            target < lib.parseTarget
+            target =
+            target.override = {$PAGE_TARGET}
+            expAll = 1
+            wrap = <ul>|</ul>
+            NO {
+                stdWrap.htmlSpecialChars = 1
+                wrapItemAndSub = <li>|</li>
+                ATagTitle.field = description // title
+            }
+        }
+        2 < .1
+        3 < .1
+        4 < .1
+        5 < .1
+        6 < .1
+        7 < .1
+        stdWrap < lib.defaultMenu.stdWrap
+        stdWrap {
+            outerWrap = <div class="csc-sitemap">|</div>
+        }
+    }
+}
+
+tt_content.stdWrap.innerWrap.cObject.default {
+    10.cObject.menu_sitemap_pages = TEXT
+    10.cObject.menu_sitemap_pages.value = <nav id="c{field:uid}"
+    30.cObject.menu_sitemap_pages = TEXT
+    30.cObject.menu_sitemap_pages.value = >|</nav>
+}
diff --git a/typo3/sysext/css_styled_content/Configuration/TypoScript/ContentElement/MenuSubpages.txt b/typo3/sysext/css_styled_content/Configuration/TypoScript/ContentElement/MenuSubpages.txt
new file mode 100644
index 0000000000000000000000000000000000000000..d9a519f9f45182d76353e8b2e68daa85b6bb6d87
--- /dev/null
+++ b/typo3/sysext/css_styled_content/Configuration/TypoScript/ContentElement/MenuSubpages.txt
@@ -0,0 +1,22 @@
+# Menu of subpages of selected pages:
+# ...
+#
+# CType: menu_subpages
+
+tt_content.menu_subpages = COA
+tt_content.menu_subpages {
+    10 = < lib.stdheader
+    20 < lib.defaultMenu
+    20 {
+        stdWrap {
+            outerWrap = <ul class="csc-menu csc-menu-1">|</ul>
+        }
+    }
+}
+
+tt_content.stdWrap.innerWrap.cObject.default {
+    10.cObject.menu_subpages = TEXT
+    10.cObject.menu_subpages.value = <nav id="c{field:uid}"
+    30.cObject.menu_subpages = TEXT
+    30.cObject.menu_subpages.value = >|</nav>
+}
diff --git a/typo3/sysext/css_styled_content/Configuration/TypoScript/ContentElement/Shortcut.txt b/typo3/sysext/css_styled_content/Configuration/TypoScript/ContentElement/Shortcut.txt
new file mode 100644
index 0000000000000000000000000000000000000000..4d162da82cadf2c51e2209eaa974958938e5faae
--- /dev/null
+++ b/typo3/sysext/css_styled_content/Configuration/TypoScript/ContentElement/Shortcut.txt
@@ -0,0 +1,18 @@
+# Insert records:
+# This element embeds other content elements.
+#
+# CType: shortcut
+
+tt_content.shortcut = COA
+tt_content.shortcut {
+    20 = RECORDS
+    20 {
+        source.field = records
+        tables = {$content.shortcut.tables}
+    }
+    20.stdWrap {
+        editIcons = tt_content: records
+        editIcons.iconTitle.data = LLL:EXT:css_styled_content/Resources/Private/Language/locallang.xlf:eIcon.recordList
+        prefixComment = 2 | Inclusion of other records (by reference):
+    }
+}
diff --git a/typo3/sysext/css_styled_content/Configuration/TypoScript/ContentElement/Table.txt b/typo3/sysext/css_styled_content/Configuration/TypoScript/ContentElement/Table.txt
new file mode 100644
index 0000000000000000000000000000000000000000..9dadb3515b7e7a2a00b3dd52be06b1b3e7603584
--- /dev/null
+++ b/typo3/sysext/css_styled_content/Configuration/TypoScript/ContentElement/Table.txt
@@ -0,0 +1,23 @@
+# Table:
+# A simple table.
+#
+# CType: table
+
+tt_content.table = COA
+tt_content.table {
+    10 = < lib.stdheader
+    20 = USER
+    20 {
+        userFunc = TYPO3\CMS\CssStyledContent\Controller\CssStyledContentController->render_table
+        field = bodytext
+        innerStdWrap.wrap = |
+        innerStdWrap.htmlSpecialChars = 1
+        innerStdWrap.br = 1
+        stdWrap {
+            editIcons = tt_content: cols, bodytext
+            editIcons.beforeLastTag = 1
+            editIcons.iconTitle.data = LLL:EXT:css_styled_content/Resources/Private/Language/locallang.xlf:eIcon.table
+            prefixComment = 2 | Table:
+        }
+    }
+}
diff --git a/typo3/sysext/css_styled_content/Configuration/TypoScript/ContentElement/Text.txt b/typo3/sysext/css_styled_content/Configuration/TypoScript/ContentElement/Text.txt
new file mode 100644
index 0000000000000000000000000000000000000000..f7717fc8fc2635cc36020d6bda8c7bab25e72bf7
--- /dev/null
+++ b/typo3/sysext/css_styled_content/Configuration/TypoScript/ContentElement/Text.txt
@@ -0,0 +1,19 @@
+# Regular Text Element:
+# A regular text element with header and bodytext fields.
+#
+# CType: text
+
+tt_content.text = COA
+tt_content.text {
+    10 = < lib.stdheader
+    20 = TEXT
+    20 {
+        field = bodytext
+        required = 1
+        parseFunc = < lib.parseFunc_RTE
+        editIcons = tt_content:bodytext
+        editIcons.beforeLastTag = 1
+        editIcons.iconTitle.data = LLL:EXT:css_styled_content/Resources/Private/Language/locallang.xlf:eIcon.bodytext
+        prefixComment = 2 | Text:
+    }
+}
diff --git a/typo3/sysext/css_styled_content/Configuration/TypoScript/ContentElement/Textmedia.txt b/typo3/sysext/css_styled_content/Configuration/TypoScript/ContentElement/Textmedia.txt
new file mode 100644
index 0000000000000000000000000000000000000000..597747b405070d15f7acc451cc3d4d2803a466c1
--- /dev/null
+++ b/typo3/sysext/css_styled_content/Configuration/TypoScript/ContentElement/Textmedia.txt
@@ -0,0 +1,180 @@
+# Text & Media:
+# Any number of media wrapped right around a regular text element.
+#
+# CType: textmedia
+
+tt_content.textmedia = CASE
+tt_content.textmedia {
+
+    key.field = imageorient
+
+    default = COA
+    default {
+        10 = < lib.stdheader
+        20 = FLUIDTEMPLATE
+        20 {
+            templateName = Textmedia
+            templateRootPaths {
+                0 = EXT:css_styled_content/Resources/Private/Templates/
+            }
+            partialRootPaths {
+                0 = EXT:css_styled_content/Resources/Private/Partials/
+            }
+            layoutRootPaths {
+                0 = EXT:css_styled_content/Resources/Private/Layouts/
+            }
+            settings {
+                media {
+                    popup {
+                        bodyTag = <body style="margin:0; background:#fff;">
+                        wrap = <a href="javascript:close();"> | </a>
+                        width = {$styles.content.textmedia.linkWrap.width}
+                        height = {$styles.content.textmedia.linkWrap.height}
+                        crop.data = file:current:crop
+                        JSwindow = 1
+                        JSwindow {
+                            newWindow = {$styles.content.textmedia.linkWrap.newWindow}
+                            if.isFalse = {$styles.content.textmedia.linkWrap.lightboxEnabled}
+                        }
+                        directImageLink = {$styles.content.textmedia.linkWrap.lightboxEnabled}
+                        linkParams.ATagParams.dataWrap =  class="{$styles.content.textmedia.linkWrap.lightboxCssClass}" rel="{$styles.content.textmedia.linkWrap.lightboxRelAttribute}"
+                    }
+                }
+            }
+            dataProcessing {
+                10 = TYPO3\CMS\Frontend\DataProcessing\FilesProcessor
+                10 {
+                    references.fieldName = assets
+                }
+                20 = TYPO3\CMS\Frontend\DataProcessing\GalleryProcessor
+                20 {
+                    maxGalleryWidth = {$styles.content.textmedia.maxW}
+                    maxGalleryWidthInText = {$styles.content.textmedia.maxWInText}
+                    columnSpacing = {$styles.content.textmedia.columnSpacing}
+                    borderWidth = {$styles.content.textmedia.borderWidth}
+                    borderPadding = {$styles.content.textmedia.borderPadding}
+                }
+            }
+        }
+        30 = < tt_content.text.20
+    }
+
+    # Text And Media - Above center
+    0 = COA
+    0 {
+        10 = < tt_content.textmedia.default.10
+        20 = < tt_content.textmedia.default.20
+        30 = < tt_content.textmedia.default.30
+        30.wrap = <div class="csc-textmedia-text"> | </div>
+        wrap = <div class="csc-textmedia csc-textmedia-above csc-textmedia-above-center">|</div>
+    }
+
+    # Text And Media - Above right
+    1 = COA
+    1 {
+        10 = < tt_content.textmedia.default.10
+        20 = < tt_content.textmedia.default.20
+        30 = < tt_content.textmedia.default.30
+        30.wrap = <div class="csc-textmedia-text"> | </div>
+        wrap = <div class="csc-textmedia csc-textmedia-above csc-textmedia-above-right">|</div>
+    }
+
+    # Text And Media - Above left
+    2 = COA
+    2 {
+        10 = < tt_content.textmedia.default.10
+        20 = < tt_content.textmedia.default.20
+        30 = < tt_content.textmedia.default.30
+        30.wrap = <div class="csc-textmedia-text"> | </div>
+        wrap = <div class="csc-textmedia csc-textmedia-above csc-textmedia-above-left">|</div>
+    }
+
+    # Text And Media - Below center
+    8 = COA
+    8 {
+        10 = < tt_content.textmedia.default.10
+        20 = < tt_content.textmedia.default.30
+        20.wrap = <div class="csc-textmedia-text"> | </div>
+        30 = < tt_content.textmedia.default.20
+        wrap = <div class="csc-textmedia csc-textmedia-below csc-textmedia-below-center">|</div>
+    }
+
+    # Text And Media - Below right
+    9 = COA
+    9 {
+        10 = < tt_content.textmedia.default.10
+        20 = < tt_content.textmedia.default.30
+        20.wrap = <div class="csc-textmedia-text"> | </div>
+        30 = < tt_content.textmedia.default.20
+        wrap = <div class="csc-textmedia csc-textmedia-below csc-textmedia-below-right">|</div>
+    }
+
+    # Text And Media - Below left
+    10 = COA
+    10 {
+        10 = < tt_content.textmedia.default.10
+        20 = < tt_content.textmedia.default.30
+        20.wrap = <div class="csc-textmedia-text"> | </div>
+        30 = < tt_content.textmedia.default.20
+        wrap = <div class="csc-textmedia csc-textmedia-below csc-textmedia-below-left">|</div>
+    }
+
+    # Text And Media - In text, right
+    17 = COA
+    17 {
+        10 = < tt_content.textmedia.default.10
+        20 = COA
+        20 {
+            10 = < tt_content.textmedia.default.20
+            20 = < tt_content.textmedia.default.30
+            20.wrap = <div class="csc-textmedia-text"> | </div>
+            wrap = <div class="csc-textmedia csc-textmedia-inside csc-textmedia-inside-right">|</div>
+        }
+    }
+
+    # Text And Media - In text, left
+    18 = COA
+    18 {
+        10 = < tt_content.textmedia.default.10
+        20 = COA
+        20 {
+            10 = < tt_content.textmedia.default.20
+            20 = < tt_content.textmedia.default.30
+            20.wrap = <div class="csc-textmedia-text"> | </div>
+            wrap = <div class="csc-textmedia csc-textmedia-inside csc-textmedia-inside-left">|</div>
+        }
+    }
+
+    # Text And Media - Beside text, right
+    25 = COA
+    25 {
+        10 = < tt_content.textmedia.default.20
+        20 = COA
+        20 {
+            10 = < tt_content.textmedia.default.10
+            20 = < tt_content.textmedia.default.30
+            wrap = <div class="csc-textmedia-text"> | </div>
+        }
+        wrap = <div class="csc-textmedia csc-textmedia-beside csc-textmedia-beside-right">|</div>
+    }
+
+    # Text And Media - Beside text, left
+    26 = COA
+    26 {
+        10 = < tt_content.textmedia.default.20
+        20 = COA
+        20 {
+            10 = < tt_content.textmedia.default.10
+            20 = < tt_content.textmedia.default.30
+            wrap = <div class="csc-textmedia-text"> | </div>
+        }
+        wrap = <div class="csc-textmedia csc-textmedia-beside csc-textmedia-beside-left">|</div>
+    }
+
+    stdWrap {
+        editIcons = tt_content: header [header_layout], bodytext, assets [imageorient|imagewidth|imageheight], [imagecols|imageborder], image_zoom
+        editIcons {
+            iconTitle.data = LLL:EXT:css_styled_content/Resources/Private/Language/locallang.xlf:eIcon.textMedia
+        }
+    }
+}
diff --git a/typo3/sysext/css_styled_content/Configuration/TypoScript/ContentElement/Textpic.txt b/typo3/sysext/css_styled_content/Configuration/TypoScript/ContentElement/Textpic.txt
new file mode 100644
index 0000000000000000000000000000000000000000..ca2d648be025038d3d3d489841e47774f98632c7
--- /dev/null
+++ b/typo3/sysext/css_styled_content/Configuration/TypoScript/ContentElement/Textpic.txt
@@ -0,0 +1,24 @@
+# Text and Images:
+# Text with images.
+#
+# CType: textpic
+
+tt_content.textpic = COA
+tt_content.textpic {
+    10 = COA
+    10.if.value = 25
+    10.if.isLessThan.field = imageorient
+    10.10 = < lib.stdheader
+    20  = < tt_content.image.20
+    20 {
+        text.10 = COA
+        text.10 {
+            if.value = 24
+            if.isGreaterThan.field = imageorient
+            10 = < lib.stdheader
+            10.stdWrap.dataWrap = <div class="csc-textpicHeader csc-textpicHeader-{field:imageorient}">|</div>
+        }
+        text.20 = < tt_content.text.20
+        text.wrap = <div class="csc-textpic-text"> | </div>
+    }
+}
diff --git a/typo3/sysext/css_styled_content/Configuration/TypoScript/ContentElement/Uploads.txt b/typo3/sysext/css_styled_content/Configuration/TypoScript/ContentElement/Uploads.txt
new file mode 100644
index 0000000000000000000000000000000000000000..2885ea612c4b3c384629401477ebfda2f21981f7
--- /dev/null
+++ b/typo3/sysext/css_styled_content/Configuration/TypoScript/ContentElement/Uploads.txt
@@ -0,0 +1,137 @@
+# File Links:
+# Makes a list of files for download.
+#
+# CType: uploads
+
+tt_content.uploads = COA
+tt_content.uploads {
+    10 = < lib.stdheader
+    20 = FILES
+    20 {
+        # get from file references:
+        references {
+            table = tt_content
+            fieldName = media
+        }
+        collections.field = file_collections
+        # get from path (backwards compatibility, contains strings like "fileadmin/user_uploads/")
+        folders.field = select_key
+        sorting.field = filelink_sorting
+        # render the files
+        renderObj = COA
+        renderObj {
+            10 = IMAGE
+            10 {
+                file.import.data = file:current:originalUid // file:current:uid
+                file.width = 150
+                stdWrap {
+                    if {
+                        value = 2
+                        equals.field = uploads_type
+                    }
+                    typolink {
+                        parameter.data = file:current:originalUid // file:current:uid
+                        parameter.wrap = file:|
+                        fileTarget < lib.parseTarget
+                        fileTarget =
+                        fileTarget.override = {$styles.content.uploads.target}
+                        fileTarget.override.override.field = target
+                        removePrependedNumbers = 1
+
+                        title {
+                            data = file:current:title
+                            htmlSpecialChars = 1
+                        }
+                        /*
+                        jumpurl = {$styles.content.uploads.jumpurl}
+                        jumpurl {
+                            secure = {$styles.content.uploads.jumpurl_secure}
+                            secure.mimeTypes = {$styles.content.uploads.jumpurl_secure_mimeTypes}
+                        }
+                        */
+                    }
+                }
+            }
+            # icon
+            15 = IMAGE
+            15 {
+                file.import.data = file:current:extension
+                file.import.case = lower
+                file.import.dataWrap = {path:EXT:frontend/Resources/Public/Icons/FileIcons/}|.gif
+                stdWrap {
+                    if {
+                        value = 1,2
+                        isInList.field = uploads_type
+                        # only show the icon if we don't have a thumbnail:
+                        isFalse.cObject = IMG_RESOURCE
+                        isFalse.cObject.file < tt_content.uploads.20.renderObj.10.file
+                        isFalse.cObject.stdWrap.if < tt_content.uploads.20.renderObj.10.stdWrap.if
+                    }
+                    typolink < tt_content.uploads.20.renderObj.10.stdWrap.typolink
+                }
+            }
+            # filename
+            20 = TEXT
+            20 {
+                data = file:current:title // file:current:name
+                htmlSpecialChars = 1
+                required = 1
+                replacement {
+                    # equivalent to former useSpacesInLinkText = 0; remove using > to disable it
+                    10 {
+                        search = _
+                        replace.char = 32
+                    }
+                    # equivalent to former stripFileExtensionFromLinkText = 0; move "_20" to "20" to enable it. Disabled by default.
+                    _20 {
+                        search = /(.*)(\..*)/
+                        replace = \1
+                        useRegExp = 1
+                    }
+                }
+                typolink < tt_content.uploads.20.renderObj.10.stdWrap.typolink
+                wrap = <span class="ce-uploads-fileName">|</span>
+            }
+            # description
+            30 = TEXT
+            30 {
+                if.isTrue.field = uploads_description
+                data = file:current:description
+                htmlSpecialChars = 1
+                wrap = <span class="ce-uploads-description">|</span>
+                required = 1
+            }
+            # file size
+            40 = TEXT
+            40 {
+                if.isTrue.field = filelink_size
+                data = file:current:size
+                wrap = <span class="ce-uploads-filesize">|</span>
+                bytes = 1
+                bytes.labels = {$styles.content.uploads.filesizeBytesLabels}
+            }
+            # wrap of each listed file with odd/even class
+            wrap.cObject = COA
+            wrap.cObject {
+                10 = LOAD_REGISTER
+                10 {
+                    elementClass = ce-uploads-element ce-uploads-element-{file:current:extension}
+                    elementClass.insertData = 1
+                }
+                20 = TEXT
+                20 {
+                    value = <li class="{register:elementClass}">|</li>
+                    insertData = 1
+                }
+                30 = RESTORE_REGISTER
+            }
+        }
+        # wrap around whole content element with <ul> and editIcons
+        stdWrap {
+            editIcons = tt_content: media, filelink_size, uploads_description, uploads_type
+            editIcons.iconTitle.data = LLL:EXT:css_styled_content/Resources/Private/Language/locallang.xlf:eIcon.filelist
+            prefixComment = 2 | Filelist:
+            dataWrap = <ul class="ce-uploads">|</ul>
+        }
+    }
+}
diff --git a/typo3/sysext/css_styled_content/Configuration/TypoScript/ContentElementPartials/Menu.txt b/typo3/sysext/css_styled_content/Configuration/TypoScript/ContentElementPartials/Menu.txt
new file mode 100644
index 0000000000000000000000000000000000000000..482406d1df808c2f4381d3d04bd60cf3dabc6e00
--- /dev/null
+++ b/typo3/sysext/css_styled_content/Configuration/TypoScript/ContentElementPartials/Menu.txt
@@ -0,0 +1,64 @@
+# Default menu
+lib.defaultMenu = HMENU
+lib.defaultMenu {
+    special = directory
+    special.value.field = pages
+    1 = TMENU
+    1 {
+        target =
+        target.override = {$PAGE_TARGET}
+        NO {
+            stdWrap.htmlSpecialChars = 1
+            wrapItemAndSub = <li>|</li>
+            ATagTitle.field = description // title
+        }
+    }
+    stdWrap {
+        prepend = COA
+        prepend {
+            stdWrap {
+                if.isTrue.field = accessibility_bypass
+            }
+            10 = LOAD_REGISTER
+            10 {
+                accessibility_bypass_text = TEXT
+                accessibility_bypass_text {
+                    field = accessibility_bypass_text
+                }
+            }
+            20 = CONTENT
+            20 {
+                table = tt_content
+                select {
+                    pidInList = this
+                    orderBy = sorting
+                    where {
+                        dataWrap = sorting>{field:sorting}
+                    }
+                    languageField = sys_language_uid
+                    max = 1
+                }
+                renderObj = TEXT
+                renderObj {
+                    required = 1
+                    data = LLL:EXT:css_styled_content/Resources/Private/Language/locallang.xlf:menu.bypassNavigation
+                    override.data = register:accessibility_bypass_text
+                    trim = 1
+                    htmlSpecialChars = 1
+                    typolink {
+                        parameter {
+                            field = pid
+                        }
+                        section {
+                            field = uid
+                        }
+                    }
+                    wrap = <li class="csc-nav-bypass">|</li>
+                }
+            }
+            30 = RESTORE_REGISTER
+        }
+        outerWrap = <ul class="csc-menu csc-menu-def">|</ul>
+        required = 1
+    }
+}
diff --git a/typo3/sysext/css_styled_content/Configuration/TypoScript/Helper/ParseFunc.txt b/typo3/sysext/css_styled_content/Configuration/TypoScript/Helper/ParseFunc.txt
new file mode 100644
index 0000000000000000000000000000000000000000..166404317242cda588497fed7bb83f364bf1b356
--- /dev/null
+++ b/typo3/sysext/css_styled_content/Configuration/TypoScript/Helper/ParseFunc.txt
@@ -0,0 +1,111 @@
+# Creates persistent ParseFunc setup for non-HTML content. This is recommended to use (as a reference!)
+lib.parseFunc {
+    makelinks = 1
+    makelinks.http.keep = {$styles.content.links.keep}
+    makelinks.http.extTarget < lib.parseTarget
+    makelinks.http.extTarget =
+    makelinks.http.extTarget.override = {$styles.content.links.extTarget}
+    makelinks.mailto.keep = path
+    tags {
+        link = TEXT
+        link {
+            current = 1
+            typolink.parameter.data = parameters : allParams
+            typolink.extTarget < lib.parseTarget
+            typolink.extTarget =
+            typolink.extTarget.override = {$styles.content.links.extTarget}
+            typolink.target < lib.parseTarget
+            typolink.target =
+            typolink.target.override = {$styles.content.links.target}
+            parseFunc.constants =1
+        }
+        a = TEXT
+        a {
+            current = 1
+            typolink {
+                parameter.data = parameters:href
+                title.data = parameters:title
+                aTagParams.data = parameters:allParams
+                target.data = parameters:target
+                extTarget = {$styles.content.links.extTarget}
+                extTarget.override.data = parameters:target
+            }
+        }
+    }
+    allowTags = {$styles.content.links.allowTags}
+    denyTags = *
+    sword = <span class="csc-sword">|</span>
+    constants = 1
+    nonTypoTagStdWrap.HTMLparser = 1
+    nonTypoTagStdWrap.HTMLparser {
+        keepNonMatchedTags = 1
+        htmlSpecialChars = 2
+    }
+}
+
+# good old parsefunc in "styles.content.parseFunc" is created for backwards compatibility. Don't use it, just ignore.
+styles.content.parseFunc < lib.parseFunc
+
+# Creates persistent ParseFunc setup for RTE content (which is mainly HTML) based on the "ts_css" transformation.
+lib.parseFunc_RTE < lib.parseFunc
+lib.parseFunc_RTE {
+    //  makelinks >
+    # Processing <table> and <blockquote> blocks separately
+    externalBlocks = article, aside, blockquote, div, dd, dl, footer, header, nav, ol, section, table, ul, pre
+    externalBlocks {
+        # The blockquote content is passed into parseFunc again...
+        blockquote.stripNL=1
+        blockquote.callRecursive=1
+        table.stripNL=1
+        table.stdWrap.HTMLparser = 1
+        table.stdWrap.HTMLparser.tags.table.fixAttrib.class {
+            default = contenttable
+            always = 1
+            list = contenttable
+        }
+        table.stdWrap.HTMLparser.keepNonMatchedTags = 1
+        table.HTMLtableCells=1
+        table.HTMLtableCells {
+            # Recursive call to self but without wrapping non-wrapped cell content
+            default.stdWrap {
+                parseFunc =< lib.parseFunc_RTE
+                parseFunc.nonTypoTagStdWrap.encapsLines.nonWrappedTag =
+            }
+            addChr10BetweenParagraphs=1
+        }
+        div.stripNL = 1
+        div.callRecursive = 1
+        article < .div
+        aside < .div
+        footer < .div
+        header < .div
+        nav < .div
+        section < .div
+        # List processing
+        dl < .div
+        dd < .div
+        ol < .div
+        ul < .div
+    }
+    nonTypoTagStdWrap.encapsLines {
+        encapsTagList = p,pre,h1,h2,h3,h4,h5,h6,hr,dt,li
+        remapTag.DIV = P
+        nonWrappedTag = P
+        innerStdWrap_all.ifBlank = &nbsp;
+        addAttributes.P.class = bodytext
+        addAttributes.P.class.setOnly=blank
+    }
+    nonTypoTagStdWrap.HTMLparser = 1
+    nonTypoTagStdWrap.HTMLparser {
+        keepNonMatchedTags = 1
+        htmlSpecialChars = 2
+    }
+}
+
+# Creates a condition for targets. Not allowed in XHTML except for xhtml frames DTD
+lib.parseTarget {
+    override =
+    override.if {
+        isTrue.data = TSFE:dtdAllowsFrames
+    }
+}
diff --git a/typo3/sysext/css_styled_content/Configuration/TypoScript/Helper/StandardHeader.txt b/typo3/sysext/css_styled_content/Configuration/TypoScript/Helper/StandardHeader.txt
new file mode 100644
index 0000000000000000000000000000000000000000..cf7f8293e58e8f6149148817df1ddecba69cb35b
--- /dev/null
+++ b/typo3/sysext/css_styled_content/Configuration/TypoScript/Helper/StandardHeader.txt
@@ -0,0 +1,172 @@
+# Default configuration for content elements which still use a default header (e.g. all Extbase CTypes, or EXT:felogin)
+lib.stdheader = COA
+lib.stdheader {
+    # Create class attribute for <Hx> tags
+    3 = LOAD_REGISTER
+    3 {
+        headerClass {
+            cObject = COA
+            cObject {
+                # Create alignment class for <Hx> tags
+                10 = TEXT
+                10 {
+                    field = header_position
+                    required = 1
+                    noTrimWrap = |csc-header-alignment-| |
+                }
+                # Create "csc-firstHeader" class for <Hx> tags
+                20 = TEXT
+                20 {
+                    value = csc-firstHeader
+                    if {
+                        value = 1
+                        equals.data = cObj:parentRecordNumber
+                    }
+                }
+                stdWrap {
+                    trim = 1
+                    noTrimWrap = | class="|"|
+                    required = 1
+                }
+            }
+        }
+    }
+    # Date format (not HTML5)
+    5 = TEXT
+    5 {
+        field = date
+        if {
+            isTrue {
+                field = date
+            }
+            isFalse = 1
+            isFalse {
+                if {
+                    value = html5
+                    equals.data = TSFE:config|config|doctype
+                }
+            }
+        }
+        strftime = %x
+        wrap = <p class="csc-header-date">|</p>
+        prefixComment = 2 | Header date:
+    }
+    # This CASE cObject renders the header content:
+    # currentValue is set to the header data, possibly wrapped in link-tags.
+    10 = CASE
+    10.setCurrent {
+        field = header
+        htmlSpecialChars = 1
+        typolink.parameter.field = header_link
+    }
+    10.key.field = header_layout
+    10.key.ifEmpty = {$content.defaultHeaderType}
+    10.key.ifEmpty.override.data = register: defaultHeaderType
+    10.1 = TEXT
+    10.1.current = 1
+    10.1.dataWrap = <h1{register:headerClass}>|</h1>
+    10.2 < .10.1
+    10.2.dataWrap = <h2{register:headerClass}>|</h2>
+    10.3 < .10.1
+    10.3.dataWrap = <h3{register:headerClass}>|</h3>
+    10.4 < .10.1
+    10.4.dataWrap = <h4{register:headerClass}>|</h4>
+    10.5 < .10.1
+    10.5.dataWrap = <h5{register:headerClass}>|</h5>
+    # HTML5 subheader
+    20 = CASE
+    20 {
+        key.field = header_layout
+        key.ifEmpty = {$content.defaultHeaderType}
+        key.ifEmpty.override.data = register: defaultHeaderType
+        default = TEXT
+        default {
+            wrap = <h2>|</h2>
+            htmlSpecialChars = 1
+            field = subheader
+        }
+        1 < .default
+        2 < .default
+        2.wrap = <h3>|</h3>
+        3 < .default
+        3.wrap = <h4>|</h4>
+        4 < .default
+        4.wrap = <h5>|</h5>
+        5 < .default
+        5.wrap = <h6>|</h6>
+        if {
+            isTrue {
+                field = subheader
+            }
+            value = html5
+            equals.data = TSFE:config|config|doctype
+        }
+    }
+    # HTML5 Date
+    40 = COA
+    40 {
+        stdWrap {
+            wrap = <p class="csc-header-date">|</p>
+            innerWrap {
+                cObject = COA
+                cObject {
+                    10 = TEXT
+                    10 {
+                        value = <time
+                    }
+                    20 = TEXT
+                    20 {
+                        noTrimWrap = | datetime="|"|
+                        field = date
+                        strftime = %Y-%m-%d
+                    }
+                    30 = TEXT
+                    30 {
+                        value = >|</time>
+                    }
+                }
+            }
+            required = 1
+        }
+        10 = TEXT
+        10 {
+            field = date
+            strftime = %B %e, %Y
+        }
+        if {
+            isTrue {
+                field = date
+            }
+            value = html5
+            equals.data = TSFE:config|config|doctype
+        }
+    }
+    # Pops the used registers off the stack:
+    98 = RESTORE_REGISTER
+    # Post-processing:
+    stdWrap.fieldRequired = header
+    stdWrap.if {
+        equals.field = header_layout
+        value = 100
+        negate = 1
+    }
+    stdWrap.editIcons = tt_content : header, [header_layout | header_position], [header_link|date]
+    stdWrap.editIcons.beforeLastTag = 1
+    stdWrap.editIcons.iconTitle.data = LLL:EXT:css_styled_content/Resources/Private/Language/locallang.xlf:eIcon.header
+    stdWrap {
+        dataWrap = <div class="csc-header csc-header-n{cObj:parentRecordNumber}">|</div>
+        dataWrap {
+            override = <header class="csc-header csc-header-n{cObj:parentRecordNumber}">|</header>
+            override {
+                if {
+                    isTrue {
+                        field = date
+                    }
+                    value = html5
+                    equals.data = TSFE:config|config|doctype
+                }
+            }
+        }
+    }
+    stdWrap.prefixComment = 2 | Header:
+}
diff --git a/typo3/sysext/css_styled_content/Configuration/TypoScript/Helper/StylesContent.txt b/typo3/sysext/css_styled_content/Configuration/TypoScript/Helper/StylesContent.txt
new file mode 100644
index 0000000000000000000000000000000000000000..5d79eab27dd05961ccc41b54e3fb7e78ac536f5a
--- /dev/null
+++ b/typo3/sysext/css_styled_content/Configuration/TypoScript/Helper/StylesContent.txt
@@ -0,0 +1,26 @@
+# get content, left
+styles.content.getLeft < styles.content.get
+styles.content.getLeft.select.where = colPos=1
+
+# get content, right
+styles.content.getRight < styles.content.get
+styles.content.getRight.select.where = colPos=2
+
+# get content, margin
+styles.content.getBorder < styles.content.get
+styles.content.getBorder.select.where = colPos=3
+
+# get news
+styles.content.getNews < styles.content.get
+styles.content.getNews.select.pidInList = {$styles.content.getNews.newsPid}
+
+# Edit page object:
+styles.content.editPanelPage = COA
+styles.content.editPanelPage {
+    10 = EDITPANEL
+    10 {
+        allow = toolbar,move,hide
+        label.data = LLL:EXT:css_styled_content/Resources/Private/Language/locallang.xlf:eIcon.page
+        label.wrap = |&nbsp;<b>%s</b>
+    }
+}
diff --git a/typo3/sysext/css_styled_content/Configuration/TypoScript/Styling/setup.txt b/typo3/sysext/css_styled_content/Configuration/TypoScript/Styling/setup.txt
new file mode 100644
index 0000000000000000000000000000000000000000..f327ad74252448cd4dc8e8f63fb2ac5a3671af1d
--- /dev/null
+++ b/typo3/sysext/css_styled_content/Configuration/TypoScript/Styling/setup.txt
@@ -0,0 +1,146 @@
+plugin.tx_cssstyledcontent._CSS_DEFAULT_STYLE (
+    /* Headers */
+    .csc-header-alignment-center { text-align: center; }
+    .csc-header-alignment-right { text-align: right; }
+    .csc-header-alignment-left { text-align: left; }
+
+    div.csc-textpic-responsive, div.csc-textpic-responsive * { -moz-box-sizing: border-box; -webkit-box-sizing: border-box; box-sizing: border-box;  }
+
+    /* Clear floats after csc-textpic and after csc-textpic-imagerow */
+    div.csc-textpic, div.csc-textpic div.csc-textpic-imagerow, ul.csc-uploads li { overflow: hidden; }
+
+    /* Set padding for tables */
+    div.csc-textpic .csc-textpic-imagewrap table { border-collapse: collapse; border-spacing: 0; }
+    div.csc-textpic .csc-textpic-imagewrap table tr td { padding: 0; vertical-align: top; }
+
+    /* Settings for figure and figcaption (HTML5) */
+    div.csc-textpic .csc-textpic-imagewrap figure, div.csc-textpic figure.csc-textpic-imagewrap { margin: 0; display: table; }
+
+    /* Captions */
+    figcaption.csc-textpic-caption { display: table-caption; }
+    .csc-textpic-caption { text-align: left; caption-side: bottom; }
+    div.csc-textpic-caption-c .csc-textpic-caption, .csc-textpic-imagewrap .csc-textpic-caption-c { text-align: center; }
+    div.csc-textpic-caption-r .csc-textpic-caption, .csc-textpic-imagewrap .csc-textpic-caption-r { text-align: right; }
+    div.csc-textpic-caption-l .csc-textpic-caption, .csc-textpic-imagewrap .csc-textpic-caption-l { text-align: left; }
+
+    /* Float the columns */
+    div.csc-textpic div.csc-textpic-imagecolumn { float: left; }
+
+    /* Border just around the image */
+    {$styles.content.imgtext.borderSelector} {
+        border: {$styles.content.imgtext.borderThick}px solid {$styles.content.imgtext.borderColor};
+        padding: {$styles.content.imgtext.borderSpace}px {$styles.content.imgtext.borderSpace}px;
+    }
+
+    div.csc-textpic .csc-textpic-imagewrap img { border: none; display: block; }
+
+    /* Space below each image (also in-between rows) */
+    div.csc-textpic .csc-textpic-imagewrap .csc-textpic-image { margin-bottom: {$styles.content.imgtext.rowSpace}px; }
+    div.csc-textpic .csc-textpic-imagewrap .csc-textpic-imagerow-last .csc-textpic-image { margin-bottom: 0; }
+
+    /* colSpace around image columns, except for last column */
+    div.csc-textpic-imagecolumn, td.csc-textpic-imagecolumn .csc-textpic-image { margin-right: {$styles.content.imgtext.colSpace}px; }
+    div.csc-textpic-imagecolumn.csc-textpic-lastcol, td.csc-textpic-imagecolumn.csc-textpic-lastcol .csc-textpic-image { margin-right: 0; }
+
+    /* Add margin from image-block to text (in case of "Text & Images") */
+    div.csc-textpic-intext-left .csc-textpic-imagewrap,
+    div.csc-textpic-intext-left-nowrap .csc-textpic-imagewrap {
+        margin-right: {$styles.content.imgtext.textMargin}px;
+    }
+    div.csc-textpic-intext-right .csc-textpic-imagewrap,
+    div.csc-textpic-intext-right-nowrap .csc-textpic-imagewrap {
+        margin-left: {$styles.content.imgtext.textMargin}px;
+    }
+
+    /* Positioning of images: */
+
+    /* Center (above or below) */
+    div.csc-textpic-center .csc-textpic-imagewrap, div.csc-textpic-center figure.csc-textpic-imagewrap { overflow: hidden; }
+    div.csc-textpic-center .csc-textpic-center-outer { position: relative; float: right; right: 50%; }
+    div.csc-textpic-center .csc-textpic-center-inner { position: relative; float: right; right: -50%; }
+
+    /* Right (above or below) */
+    div.csc-textpic-right .csc-textpic-imagewrap { float: right; }
+    div.csc-textpic-right div.csc-textpic-text { clear: right; }
+
+    /* Left (above or below) */
+    div.csc-textpic-left .csc-textpic-imagewrap { float: left; }
+    div.csc-textpic-left div.csc-textpic-text { clear: left; }
+
+    /* Left (in text) */
+    div.csc-textpic-intext-left .csc-textpic-imagewrap { float: left; }
+
+    /* Right (in text) */
+    div.csc-textpic-intext-right .csc-textpic-imagewrap { float: right; }
+
+    /* Right (in text, no wrap around) */
+    div.csc-textpic-intext-right-nowrap .csc-textpic-imagewrap { float: right; }
+
+    /* Left (in text, no wrap around) */
+    div.csc-textpic-intext-left-nowrap .csc-textpic-imagewrap { float: left; }
+
+    div.csc-textpic div.csc-textpic-imagerow-last, div.csc-textpic div.csc-textpic-imagerow-none div.csc-textpic-last { margin-bottom: 0; }
+
+    /* Browser fixes: */
+    /* Fix for unordered and ordered list with image "In text, left" */
+    .csc-textpic-intext-left ol, .csc-textpic-intext-left ul { padding-left: 40px; overflow: auto; }
+
+    /* Textmedia */
+    .csc-textmedia,
+    .csc-textmedia-gallery { overflow: hidden; }
+    .csc-textmedia-gallery-column { float: left; }
+    .csc-textmedia-gallery-column { margin-right: {$styles.content.textmedia.columnSpacing}px; }
+    .csc-textmedia-gallery-column:last-child { margin-right: 0; }
+    .csc-textmedia-gallery-row { overflow: hidden; margin-bottom: {$styles.content.textmedia.rowSpacing}px; }
+    .csc-textmedia-gallery-row:last-child { margin-bottom: 0; }
+    .csc-textmedia-above .csc-textmedia-gallery { margin-bottom: {$styles.content.textmedia.textMargin}px; }
+    .csc-textmedia-above-right .csc-textmedia-gallery { float: right; }
+    .csc-textmedia-above-left .csc-textmedia-gallery { float: left; }
+    .csc-textmedia-above .csc-textmedia-text { clear: both; }
+    .csc-textmedia-above-center .csc-textmedia-gallery-outer,
+    .csc-textmedia-below-center .csc-textmedia-gallery-outer { position: relative; float: right; right: 50%; }
+    .csc-textmedia-above-center .csc-textmedia-gallery-inner,
+    .csc-textmedia-below-center .csc-textmedia-gallery-inner { position: relative; float: right; right: -50%; }
+    .csc-textmedia-below .csc-textmedia-gallery { margin-top: {$styles.content.textmedia.textMargin}px; }
+    .csc-textmedia-below-right .csc-textmedia-gallery { float: right; }
+    .csc-textmedia-below-left .csc-textmedia-gallery { float: left; }
+    .csc-textmedia-inside-right .csc-textmedia-gallery { float: right; margin-left: {$styles.content.textmedia.textMargin}px; }
+    .csc-textmedia-inside-left .csc-textmedia-gallery { float: left; margin-right: {$styles.content.textmedia.textMargin}px; }
+    .csc-textmedia-beside-right .csc-textmedia-gallery { float: right; margin-left: {$styles.content.textmedia.textMargin}px; }
+    .csc-textmedia-beside-right .csc-textmedia-text { overflow: hidden; }
+    .csc-textmedia-beside-left .csc-textmedia-gallery { float: left; margin-right: {$styles.content.textmedia.textMargin}px; }
+    .csc-textmedia-beside-left .csc-textmedia-text { overflow: hidden; }
+
+    /* Uploads */
+    .ce-uploads { margin: 0; padding: 0; }
+    .ce-uploads li { list-style: none outside none; margin: 1em 0; }
+    .ce-uploads img { float: left; margin-right: 1em; vertical-align: top; }
+    .ce-uploads span { display: block; }
+
+    /* Table */
+    .contenttable { width: 100%; max-width: 100%; }
+    .contenttable th, .contenttable td { padding: 0.5em 0.75em; vertical-align: top; }
+    .contenttable thead th { font-weight: bold; border-bottom: 2px solid #dadada; }
+    .contenttable th, .contenttable td { border-top: 1px solid #dadada; }
+    .contenttable-striped tbody tr:nth-of-type(odd) { background-color: rgba(0,0,0,.05); }
+    .contenttable-bordered th, .contenttable-bordered td { border: 1px solid #dadada; }
+
+    /* Space */
+    .csc-space-before-extra-small { margin-top: 1em; }
+    .csc-space-before-small { margin-top: 2em; }
+    .csc-space-before-medium { margin-top: 3em; }
+    .csc-space-before-large { margin-top: 4em; }
+    .csc-space-before-extra-large { margin-top: 5em; }
+    .csc-space-after-extra-small { margin-bottom: 1em; }
+    .csc-space-after-small { margin-bottom: 2em; }
+    .csc-space-after-medium { margin-bottom: 3em; }
+    .csc-space-after-large { margin-bottom: 4em; }
+    .csc-space-after-extra-large { margin-bottom: 5em; }
+
+    /* Frame */
+    .csc-frame-ruler-before:before { content: ''; display: block; border-top: 1px solid rgba(0,0,0,0.25); margin-bottom: 2em; }
+    .csc-frame-ruler-after:after { content: ''; display: block; border-bottom: 1px solid rgba(0,0,0,0.25); margin-top: 2em; }
+    .csc-frame-indent { margin-left: 15%; margin-right: 15%; }
+    .csc-frame-indent-left { margin-left: 33%; }
+    .csc-frame-indent-right { margin-right: 33%; }
+)
diff --git a/typo3/sysext/css_styled_content/Configuration/TypoScript/constants.txt b/typo3/sysext/css_styled_content/Configuration/TypoScript/constants.txt
new file mode 100644
index 0000000000000000000000000000000000000000..0456dbd9289355f2d391478a7dc1cf7e25a552d6
--- /dev/null
+++ b/typo3/sysext/css_styled_content/Configuration/TypoScript/constants.txt
@@ -0,0 +1,117 @@
+# Clear out any constants in this reserved room!
+styles.content >
+
+content {
+    # cat=content/cHeader/h0; type=int[1-5]; label=Default Header type: Enter the number of the header layout to be used by default.
+    defaultHeaderType = 1
+    shortcut.tables = tt_content,tt_address,tt_products,tt_news
+}
+
+# cat=advanced; type=int+; label= News Content PID: If your template has a column with "news"-content fetched from another page-id, this is where you enter the id-number of that page!
+styles.content.getNews.newsPid = 0
+
+styles.content.links {
+    keep = path
+    # cat=content/links; type=small; label= Target for external links
+    extTarget = _blank
+    target = {$PAGE_TARGET}
+    allowTags = a, abbr, acronym, address, article, aside, b, bdo, big, blockquote, br, caption, center, cite, code, col, colgroup, dd, del, dfn, dl, div, dt, em, font, footer, header, h1, h2, h3, h4, h5, h6, hr, i, img, ins, kbd, label, li, link, meta, nav, ol, p, pre, q, samp, sdfield, section, small, span, strike, strong, style, sub, sup, table, thead, tbody, tfoot, td, th, tr, title, tt, u, ul, var
+}
+
+styles.content.imgtext {
+    # TIP! if register[maxImageWidth] is set, this will override maxW
+    # cat=content/cImage/b1; type=int+; label= Max Image Width: This indicates that maximum number of pixels (width) a block of images inserted as content is allowed to consume.
+    maxW = 600
+    # cat=content/cImage/b2; type=int+; label= Max Image Width (Text): Same as above, but this is the maximum width when text is wrapped around an imageblock. Default is 50% of the normal Max Image Width.
+    maxWInText =
+    # cat=content/cImage/b4; type=options[Default img-tag=default, img-tag with alternate sources as srcset-attribute=srcset, picture-tag with source-child-tags=picture, img-tag with alternate sources as data-attributes=data]; label= Rendering-type for responsive images.
+    layoutKey = default
+
+    # cat=content/cImage/c1; type=string; label= Click-enlarge Image Width: This specifies the width of the enlarged image when click-enlarge is enabled.
+    linkWrap.width = 800m
+    linkWrap.height = 600m
+    linkWrap.effects =
+    # cat=content/cImage/c2; type=boolean; label= Advanced, New window: If set, every click-enlarged image will open in it's own popup window and not the current popup window (which may have a wrong size for the image to fit in)
+    linkWrap.newWindow = 0
+    # cat=content/cImage/c3; type=boolean; label= Lightbox click-enlarge rendering: Whether images with click-enlarge checked should be rendered lightbox-compliant
+    linkWrap.lightboxEnabled = 0
+    # cat=content/cImage/c4; type=string; label= Lightbox CSS class: Which CSS class to use for lightbox links (only applicable if lightbox rendering is enabled)
+    linkWrap.lightboxCssClass = lightbox
+    # cat=content/cImage/c5; type=string; label= Lightbox rel="" attribute: Which rel="" attribute to use for lightbox links (only applicable if lightbox rendering is enabled)
+    linkWrap.lightboxRelAttribute = lightbox[{field:uid}]
+
+    # cat=content/cImage/e2; type=string; label= Images, empty title handling: How will the 'title' attribute be handled if no title is given for an image. Possible choices: "keepEmpty", "useAlt" or "removeAttr". Recommended for accessibility is "removeAttr". For correct tooltips on IE, use "keepEmpty". For previous TYPO3 behaviour, use "useAlt".
+    emptyTitleHandling = removeAttr
+    # cat=content/cImage/e3; type=boolean; label= Images, title in link: Do you want the 'title' attribute to be added to the surrounding <a> tag, if present? Recommended for accessibility is "true".
+    titleInLink = 1
+    # cat=content/cImage/e4; type=boolean; label= Images, title in link and IMG: If you have the title in the <a>-tag (titleInLink=true), you don't get the 'title' in the <img>-tag. IE will not show the tooltip anymore. So to get the 'title' in <img> too (to keep IE happy), set this too. Recommended for accessibility is "false". For correct tooltips on IE, set this to "true".
+    titleInLinkAndImg = 0
+
+    # cat=content/cImage/g1; type=int[0-100]; label= Advanced, Column space: Horizontal distance between images in a block in content elements of type "Images" or "Text & Images". If you change this manually in your CSS, you need to adjust this setting accordingly.
+    colSpace = 10
+    # cat=content/cImage/g2; type=int[0-100]; label= Advanced, Row space: Vertical distance after each image row in content elements of type "Images" or "Text & Images". If you change this manually in your CSS, you need to adjust this setting accordingly.
+    rowSpace = 10
+    # cat=content/cImage/g3; type=int[0-100]; label= Advanced, Margin to text: Horizontal distance between an imageblock and text in content elements of type "Text & Images".
+    textMargin = 10
+
+    # cat=content/cImage/i1; type=color; label= Image border, color: Bordercolor of images in content elements when "Border"-option for element is set.
+    borderColor = #000000
+    # cat=content/cImage/i1; type=color; label= Image border, color: Bordercolor of images in content elements when "Border"-option for element is set.
+    borderColor2 = #000000
+    # cat=content/cImage/i2; type=int[0-100]; label= Image border, thickness: Thickness of border around images in content elements when "Border"-option for element is set.
+    borderThick = 2
+    # cat=content/cImage/i3; type=int+; label= Image border, padding: Padding left and right to the image, around the border.
+    borderSpace = 0
+    # cat=content/cImage/i4; type=string; label= Image border CSS-selector: If you want your border to apply elsewhere, change this setting. E.g. to apply to the whole image+caption, use 'div.csc-textpic-border div.csc-textpic-imagewrap .csc-textpic-image'.
+    borderSelector = div.{$styles.content.imgtext.borderClass} div.csc-textpic-imagewrap img
+    # cat=content/cImage/i5; type=string; label= Image border class: The name of the CSS class for creating image borders
+    borderClass = csc-textpic-border
+    # cat=content/cImage/i5; type=boolean; label= Image row separation: Whether images should be rendered/wrapped in separated rows, e.g. inside a div.csc-textpic-imagerow element
+    separateRows = 1
+}
+
+styles.content.textmedia {
+    # cat=content/cTextmedia/b1; type=int+; label= Max Image/Media Width: This indicates that maximum number of pixels (width) a block of media elements inserted as content is allowed to consume
+    maxW = 600
+    # cat=content/cTextmedia/b2; type=int+; label= Max Image/Media Width (Text): Same as above, but this is the maximum width when text is wrapped around an block of media elements. Default is 50% of the normal Max Media Item Width
+    maxWInText = 300
+
+    # cat=content/cTextmedia/g1; type=int[0-100]; label= Advanced, Column space: Horizontal distance between media elements in a block in content elements of type "Media & Images". If you change this manually in your CSS, you need to adjust this setting accordingly
+    columnSpacing = 10
+    # cat=content/cTextmedia/g2; type=int[0-100]; label= Advanced, Row space: Vertical distance after each media elements row in content elements of type ""Text & Media". If you change this manually in your CSS, you need to adjust this setting accordingly
+    rowSpacing = 10
+    # cat=content/cTextmedia/g3; type=int[0-100]; label= Advanced, Margin to text: Horizontal distance between an imageblock and text in content elements of type "Text & Images"
+    textMargin = 10
+
+    # cat=content/cTextmedia/i1; type=color; label= Media element border, color: Bordercolor of media elements in content elements when "Border"-option for an element is set
+    borderColor = #000000
+    # cat=content/cTextmedia/i2; type=int[0-100]; label= Media element border, thickness: Thickness of border around media elements in content elements when "Border"-option for element is set
+    borderWidth = 2
+    # cat=content/cTextmedia/i3; type=int+; label= Media element border, padding: Padding left and right to the media element, around the border
+    borderPadding = 0
+
+    # cat=content/cTextmedia/c1; type=string; label= Click-enlarge Media Width: This specifies the width of the enlarged media element when click-enlarge is enabled
+    linkWrap.width = 800m
+    # cat=content/cTextmedia/c2; type=string; label= Click-enlarge Media Height: This specifies the height of the enlarged media element when click-enlarge is enabled
+    linkWrap.height = 600m
+    # cat=content/cTextmedia/c3; type=boolean; label= Advanced, New window: If set, every click-enlarged media element will open in it's own popup window and not the current popup window (which may have a wrong size for the media element to fit in)
+    linkWrap.newWindow = 0
+    # cat=content/cTextmedia/c4; type=boolean; label= Lightbox click-enlarge rendering: Whether media elements with click-enlarge checked should be rendered lightbox-compliant
+    linkWrap.lightboxEnabled = 0
+    # cat=content/cTextmedia/c5; type=string; label= Lightbox CSS class: Which CSS class to use for lightbox links (only applicable if lightbox rendering is enabled)
+    linkWrap.lightboxCssClass = lightbox
+    # cat=content/cTextmedia/c6; type=string; label= Lightbox rel="" attribute: Which rel="" attribute to use for lightbox links (only applicable if lightbox rendering is enabled)
+    linkWrap.lightboxRelAttribute = lightbox[{field:uid}]
+}
+
+styles.content.uploads {
+    target = _blank
+    jumpurl_secure =
+    jumpurl_secure_mimeTypes = pdf=application/pdf, doc=application/msword
+    jumpurl =
+    # cat=content/cUploads; type=string; label=Labels of file sizes: The labels for bytes, kilobytes, megabytes and gigabytes
+    filesizeBytesLabels = " | K| M| G"
+}
+
+# cat=advanced/links; type=small; label= Target for internal links: Should match the name of the content PAGE-object in TypoScript when used with frames. Most cases: set to "" (empty). If you have frames in the template set to "page"
+PAGE_TARGET =
diff --git a/typo3/sysext/css_styled_content/Configuration/TypoScript/setup.txt b/typo3/sysext/css_styled_content/Configuration/TypoScript/setup.txt
new file mode 100644
index 0000000000000000000000000000000000000000..6e59bf14db51a5717ca83b7a52f0d9177a2c6bd7
--- /dev/null
+++ b/typo3/sysext/css_styled_content/Configuration/TypoScript/setup.txt
@@ -0,0 +1,156 @@
+# Include setup
+<INCLUDE_TYPOSCRIPT: source="FILE:EXT:css_styled_content/Configuration/TypoScript/Helper/ParseFunc.txt">
+<INCLUDE_TYPOSCRIPT: source="FILE:EXT:css_styled_content/Configuration/TypoScript/Helper/StandardHeader.txt">
+
+# default link target for external URLs
+config.extTarget = {$styles.content.links.extTarget}
+
+# Content element rendering
+tt_content.stdWrap {
+    innerWrap.cObject = CASE
+    innerWrap.cObject {
+        key.field = frame_class
+        default = COA
+        default {
+            10 = TEXT
+            10 {
+                cObject = CASE
+                cObject {
+                    key.field = CType
+                    default = TEXT
+                    default {
+                        value = <div id="c{field:uid}"
+                    }
+                    div = TEXT
+                    div {
+                        value = <div
+                    }
+                }
+                insertData = 1
+            }
+            20 = COA
+            20 {
+                # Create default class for content
+                10 = TEXT
+                10 {
+                    value = csc-frame csc-frame-default
+                    required = 1
+                    noTrimWrap = || |
+                }
+                # Create class for space before content
+                20 = TEXT
+                20 {
+                    field = space_before_class
+                    required = 1
+                    noTrimWrap = |csc-space-before-| |
+                }
+                # Create class for space after content
+                30 = TEXT
+                30 {
+                    field = space_after_class
+                    required = 1
+                    noTrimWrap = |csc-space-after-| |
+                }
+                stdWrap {
+                    trim = 1
+                    noTrimWrap = | class="|"|
+                    required = 1
+                }
+            }
+            30 = TEXT
+            30 {
+                cObject = CASE
+                cObject {
+                    key.field = CType
+
+                    default = TEXT
+                    default {
+                        value = >|</div>
+                    }
+                }
+            }
+        }
+        ruler-before =< tt_content.stdWrap.innerWrap.cObject.default
+        ruler-before.20.10.value = csc-frame csc-frame-ruler-before
+        ruler-after =< tt_content.stdWrap.innerWrap.cObject.default
+        ruler-after.20.10.value = csc-frame csc-frame-ruler-after
+        indent =< tt_content.stdWrap.innerWrap.cObject.default
+        indent.20.10.value = csc-frame csc-frame-indent
+        indent-left =< tt_content.stdWrap.innerWrap.cObject.default
+        indent-left.20.10.value = csc-frame csc-frame-indent-left
+        indent-right =< tt_content.stdWrap.innerWrap.cObject.default
+        indent-right.20.10.value = csc-frame csc-frame-indent-right
+        none = COA
+        none {
+            10 = TEXT
+            10 {
+                value = <a id="c{field:uid}"></a>
+                insertData = 1
+            }
+            # Create div with class for space before content
+            20 = TEXT
+            20 {
+                field = space_before_class
+                required = 1
+                wrap = <div class="csc-space-before-|"></div>
+            }
+            30 = TEXT
+            30 {
+                value = |
+            }
+            # Create div with class for space after content
+            40 = TEXT
+            40 {
+                field = space_after_class
+                required = 1
+                wrap = <div class="csc-space-after-|"></div>
+            }
+        }
+    }
+    innerWrap2 = | <p class="csc-linkToTop"><a href="#">{LLL:EXT:css_styled_content/Resources/Private/Language/locallang.xlf:label.toTop}</a></p>
+    innerWrap2.insertData = 1
+    innerWrap2.fieldRequired = linkToTop
+    prepend = TEXT
+    prepend.dataWrap = <a id="c{field:_LOCALIZED_UID}"></a>
+    prepend.if.isTrue.field = _LOCALIZED_UID
+    editPanel = 1
+    editPanel {
+        allow = move,new,edit,hide,delete
+        line = 5
+        label = %s
+        onlyCurrentPid = 1
+        previewBorder = 4
+        edit.displayRecord = 1
+    }
+    prefixComment = 1 | CONTENT ELEMENT, uid:{field:uid}/{field:CType}
+}
+
+
+# Typical content elements
+<INCLUDE_TYPOSCRIPT: source="FILE:EXT:css_styled_content/Configuration/TypoScript/ContentElement/Bullets.txt">
+<INCLUDE_TYPOSCRIPT: source="FILE:EXT:css_styled_content/Configuration/TypoScript/ContentElement/Div.txt">
+<INCLUDE_TYPOSCRIPT: source="FILE:EXT:css_styled_content/Configuration/TypoScript/ContentElement/Header.txt">
+<INCLUDE_TYPOSCRIPT: source="FILE:EXT:css_styled_content/Configuration/TypoScript/ContentElement/Html.txt">
+<INCLUDE_TYPOSCRIPT: source="FILE:EXT:css_styled_content/Configuration/TypoScript/ContentElement/Image.txt">
+<INCLUDE_TYPOSCRIPT: source="FILE:EXT:css_styled_content/Configuration/TypoScript/ContentElement/List.txt">
+<INCLUDE_TYPOSCRIPT: source="FILE:EXT:css_styled_content/Configuration/TypoScript/ContentElement/Shortcut.txt">
+<INCLUDE_TYPOSCRIPT: source="FILE:EXT:css_styled_content/Configuration/TypoScript/ContentElement/Table.txt">
+<INCLUDE_TYPOSCRIPT: source="FILE:EXT:css_styled_content/Configuration/TypoScript/ContentElement/Text.txt">
+<INCLUDE_TYPOSCRIPT: source="FILE:EXT:css_styled_content/Configuration/TypoScript/ContentElement/Textpic.txt">
+<INCLUDE_TYPOSCRIPT: source="FILE:EXT:css_styled_content/Configuration/TypoScript/ContentElement/Textmedia.txt">
+<INCLUDE_TYPOSCRIPT: source="FILE:EXT:css_styled_content/Configuration/TypoScript/ContentElement/Uploads.txt">
+
+
+# Menu content elements
+<INCLUDE_TYPOSCRIPT: source="FILE:EXT:css_styled_content/Configuration/TypoScript/ContentElementPartials/Menu.txt">
+<INCLUDE_TYPOSCRIPT: source="FILE:EXT:css_styled_content/Configuration/TypoScript/ContentElement/MenuAbstract.txt">
+<INCLUDE_TYPOSCRIPT: source="FILE:EXT:css_styled_content/Configuration/TypoScript/ContentElement/MenuCategorizedContent.txt">
+<INCLUDE_TYPOSCRIPT: source="FILE:EXT:css_styled_content/Configuration/TypoScript/ContentElement/MenuCategorizedPages.txt">
+<INCLUDE_TYPOSCRIPT: source="FILE:EXT:css_styled_content/Configuration/TypoScript/ContentElement/MenuPages.txt">
+<INCLUDE_TYPOSCRIPT: source="FILE:EXT:css_styled_content/Configuration/TypoScript/ContentElement/MenuSubpages.txt">
+<INCLUDE_TYPOSCRIPT: source="FILE:EXT:css_styled_content/Configuration/TypoScript/ContentElement/MenuSection.txt">
+<INCLUDE_TYPOSCRIPT: source="FILE:EXT:css_styled_content/Configuration/TypoScript/ContentElement/MenuSectionPages.txt">
+<INCLUDE_TYPOSCRIPT: source="FILE:EXT:css_styled_content/Configuration/TypoScript/ContentElement/MenuRecentlyUpdated.txt">
+<INCLUDE_TYPOSCRIPT: source="FILE:EXT:css_styled_content/Configuration/TypoScript/ContentElement/MenuRelatedPages.txt">
+<INCLUDE_TYPOSCRIPT: source="FILE:EXT:css_styled_content/Configuration/TypoScript/ContentElement/MenuSitemap.txt">
+<INCLUDE_TYPOSCRIPT: source="FILE:EXT:css_styled_content/Configuration/TypoScript/ContentElement/MenuSitemapPages.txt">
diff --git a/typo3/sysext/css_styled_content/Configuration/TypoScript/v7/constants.txt b/typo3/sysext/css_styled_content/Configuration/TypoScript/v7/constants.txt
deleted file mode 100644
index ff5c5afad8bf4702a15bffda5ce2e9c7a19bb975..0000000000000000000000000000000000000000
--- a/typo3/sysext/css_styled_content/Configuration/TypoScript/v7/constants.txt
+++ /dev/null
@@ -1,116 +0,0 @@
-  # Clear out any constants in this reserved room!
-styles.content >
-
-content {
-    # cat=content/cHeader/h0; type=int[1-5]; label=Default Header type: Enter the number of the header layout to be used by default.
-  defaultHeaderType = 1
-    # cat=advanced/links; type=small; label=Pageframe object: The name of the "contentframe". Normally set to "page" if the site has a frameset. Otherwise it should be an empty value. This is important, as it determines the target of internal links!
-  pageFrameObj =
-
-  shortcut.tables = tt_content,tt_address,tt_links,tt_guest,tt_board,tt_calender,tt_products,tt_news,tt_rating,tt_poll
-
-    # cat=content/other/a; type=small; label= Content Element margins (before): Space before each content element.
-  spaceBefore = 0
-    # cat=content/other/b; type=small; label= Content Element margins (after): Space after each content element.
-  spaceAfter = 0
-}
-
-
-    # cat=advanced; type=int+; label= News Content PID: If your template has a column with "news"-content fetched from another page-id, this is where you enter the id-number of that page!
-styles.content.getNews.newsPid = 0
-
-styles.content.links {
-  keep = path
-    # cat=content/links; type=small; label= Target for external links
-  extTarget = _blank
-  target = {$PAGE_TARGET}
-  allowTags = a, abbr, acronym, address, article, aside, b, bdo, big, blockquote, br, caption, center, cite, code, col, colgroup, dd, del, dfn, dl, div, dt, em, font, footer, header, h1, h2, h3, h4, h5, h6, hr, i, img, ins, kbd, label, li, link, meta, nav, ol, p, pre, q, samp, sdfield, section, small, span, strike, strong, style, sub, sup, table, thead, tbody, tfoot, td, th, tr, title, tt, u, ul, var
-}
-
-styles.content.imgtext {
-    # TIP! if register[maxImageWidth] is set, this will override maxW
-    # cat=content/cImage/b1; type=int+; label= Max Image Width: This indicates that maximum number of pixels (width) a block of images inserted as content is allowed to consume.
-  maxW = 600
-    # cat=content/cImage/b2; type=int+; label= Max Image Width (Text): Same as above, but this is the maximum width when text is wrapped around an imageblock. Default is 50% of the normal Max Image Width.
-  maxWInText =
-    # cat=content/cImage/b4; type=options[Default img-tag=default, img-tag with alternate sources as srcset-attribute=srcset, picture-tag with source-child-tags=picture, img-tag with alternate sources as data-attributes=data]; label= Rendering-type for responsive images.
-  layoutKey = default
-
-
-    # cat=content/cImage/c1; type=int+; label= Click-enlarge Image Width: This specifies the width of the enlarged image when click-enlarge is enabled.
-  linkWrap.width = 800m
-  linkWrap.height = 600m
-  linkWrap.effects =
-    # cat=content/cImage/c2; type=boolean; label= Advanced, New window: If set, every click-enlarged image will open in it's own popup window and not the current popup window (which may have a wrong size for the image to fit in)
-  linkWrap.newWindow = 0
-    # cat=content/cImage/c3; type=boolean; label= Lightbox click-enlarge rendering: Whether images with click-enlarge checked should be rendered lightbox-compliant
-  linkWrap.lightboxEnabled = 0
-    # cat=content/cImage/c4; type=string; label= Lightbox CSS class: Which CSS class to use for lightbox links (only applicable if lightbox rendering is enabled)
-  linkWrap.lightboxCssClass = lightbox
-    # cat=content/cImage/c5; type=string; label= Lightbox rel="" attribute: Which rel="" attribute to use for lightbox links (only applicable if lightbox rendering is enabled)
-  linkWrap.lightboxRelAttribute = lightbox[{field:uid}]
-
-    # cat=content/cImage/e2; type=string; label= Images, empty title handling: How will the 'title' attribute be handled if no title is given for an image. Possible choices: "keepEmpty", "useAlt" or "removeAttr". Recommended for accessibility is "removeAttr". For correct tooltips on IE, use "keepEmpty". For previous TYPO3 behaviour, use "useAlt".
-  emptyTitleHandling = removeAttr
-    # cat=content/cImage/e3; type=boolean; label= Images, title in link: Do you want the 'title' attribute to be added to the surrounding <a> tag, if present? Recommended for accessibility is "true".
-  titleInLink = 1
-    # cat=content/cImage/e4; type=boolean; label= Images, title in link and IMG: If you have the title in the <a>-tag (titleInLink=true), you don't get the 'title' in the <img>-tag. IE will not show the tooltip anymore. So to get the 'title' in <img> too (to keep IE happy), set this too. Recommended for accessibility is "false". For correct tooltips on IE, set this to "true".
-  titleInLinkAndImg = 0
-
-    # cat=content/cImage/g1; type=int[0-100]; label= Advanced, Column space: Horizontal distance between images in a block in content elements of type "Images" or "Text & Images". If you change this manually in your CSS, you need to adjust this setting accordingly.
-  colSpace = 10
-    # cat=content/cImage/g2; type=int[0-100]; label= Advanced, Row space: Vertical distance after each image row in content elements of type "Images" or "Text & Images". If you change this manually in your CSS, you need to adjust this setting accordingly.
-  rowSpace = 10
-    # cat=content/cImage/g3; type=int[0-100]; label= Advanced, Margin to text: Horizontal distance between an imageblock and text in content elements of type "Text & Images".
-  textMargin = 10
-
-    # cat=content/cImage/i1; type=color; label= Image border, color: Bordercolor of images in content elements when "Border"-option for element is set.
-  borderColor = #000000
-    # cat=content/cImage/i2; type=int[0-100]; label= Image border, thickness: Thickness of border around images in content elements when "Border"-option for element is set.
-  borderThick = 2
-    # cat=content/cImage/i3; type=int+; label= Image border, padding: Padding left and right to the image, around the border.
-  borderSpace = 0
-    # cat=content/cImage/i4; type=string; label= Image border CSS-selector: If you want your border to apply elsewhere, change this setting. E.g. to apply to the whole image+caption, use 'div.csc-textpic-border div.csc-textpic-imagewrap .csc-textpic-image'.
-  borderSelector = div.{$styles.content.imgtext.borderClass} div.csc-textpic-imagewrap img
-    # cat=content/cImage/i5; type=string; label= Image border class: The name of the CSS class for creating image borders
-  borderClass = csc-textpic-border
-    # cat=content/cImage/i5; type=boolean; label= Image row separation: Whether images should be rendered/wrapped in separated rows, e.g. inside a div.csc-textpic-imagerow element
-  separateRows = 1
-}
-
-styles.content.uploads {
-  target = _blank
-  jumpurl_secure =
-  jumpurl_secure_mimeTypes = pdf=application/pdf, doc=application/msword
-  jumpurl =
-    # cat=content/cUploads; type=string; label=Labels of file sizes: The labels for bytes, kilobytes, megabytes and gigabytes
-  filesizeBytesLabels = " | K| M| G"
-}
-
-styles.content.mailform {
-  target = {$PAGE_TARGET}
-    # cat=content/cMailform; type=; label= Message, Formmail OK: This is the message (if any) that is popped-up (JavaScript) when a user clicks "send" with an email-form
-  goodMess =
-    # cat=content/cMailform; type=; label= Message, Formmail Missing: This is the message that is popped-up when a user has NOT filled required fields in an email-form
-  badMess =
-}
-
-styles.content.table {
-    # cat=content/cTable/k2; type=color; label= Table background color, Color 1: Background color for table when "Backgr. Color" has been set to "Color 1"
-  backgroundColor.1 = #EDEBF1
-    # cat=content/cTable/k3; type=color; label= Table background color, Color 2: Background color for table when "Backgr. Color" has been set to "Color 2"
-  backgroundColor.2 = #F5FFAA
-    # cat=content/cTable/k5; type=color; label= Table background color, Black: Background color for table when "Backgr. Color" has been set to "Black"
-  backgroundColor.240 = #000000
-    # cat=content/cTable/k6; type=color; label= Table background color, White: Background color for table when "Backgr. Color" has been set to "White"
-  backgroundColor.241 = #FFFFFF
-    # cat=content/cTable/k7; type=color; label= Table background color, Dark Gray: Background color for table when "Backgr. Color" has been set to "Dark Gray"
-  backgroundColor.242 = #333333
-    # cat=content/cTable/k8; type=color; label= Table background color, Gray: Background color for table when "Backgr. Color" has been set to "Gray"
-  backgroundColor.243 = #808080
-    # cat=content/cTable/k9; type=color; label= Table background color, Silver: Background color for table when "Backgr. Color" has been set to "Silver"
-  backgroundColor.244 = #C0C0C0
-}
-
- # cat=advanced/links; type=small; label= Target for internal links: Should match the name of the content PAGE-object in TypoScript when used with frames. Most cases: set to "" (empty). If you have frames in the template set to "page"
-PAGE_TARGET =
diff --git a/typo3/sysext/css_styled_content/Configuration/TypoScript/v7/setup.txt b/typo3/sysext/css_styled_content/Configuration/TypoScript/v7/setup.txt
deleted file mode 100644
index 0a5ed3d97c423ce199a211eff0ad76e094c25b72..0000000000000000000000000000000000000000
--- a/typo3/sysext/css_styled_content/Configuration/TypoScript/v7/setup.txt
+++ /dev/null
@@ -1,1902 +0,0 @@
-# ***************************************************************************
-# Notice: "styles." (and "temp.") objects are UNSET after template parsing!
-# Use "lib." for persisting storage of objects.
-# ***************************************************************************
-
-# Clear out any constants in this reserved room!
-styles.content >
-
-# get content
-styles.content.get = CONTENT
-styles.content.get {
-	table = tt_content
-	select.orderBy = sorting
-	select.where = colPos=0
-}
-
-# get content, left
-styles.content.getLeft < styles.content.get
-styles.content.getLeft.select.where = colPos=1
-
-# get content, right
-styles.content.getRight < styles.content.get
-styles.content.getRight.select.where = colPos=2
-
-# get content, margin
-styles.content.getBorder < styles.content.get
-styles.content.getBorder.select.where = colPos=3
-
-# get news
-styles.content.getNews < styles.content.get
-styles.content.getNews.select.pidInList = {$styles.content.getNews.newsPid}
-
-# Edit page object:
-styles.content.editPanelPage = COA
-styles.content.editPanelPage {
-	10 = EDITPANEL
-	10 {
-		allow = toolbar,move,hide
-		label.data = LLL:EXT:css_styled_content/Resources/Private/Language/locallang.xlf:eIcon.page
-		label.wrap = |&nbsp;<b>%s</b>
-	}
-}
-
-
-
-
-
-# default link target for external URLs
-config.extTarget = {$styles.content.links.extTarget}
-
-
-
-
-# *********************************************************************
-# "lib." objects are preserved from unsetting after template parsing
-# *********************************************************************
-
-# Creates a condition for targets. Not allowed in XHTML except for xhtml frames DTD
-lib.parseTarget {
-	override =
-	override.if {
-		isTrue.data = TSFE:dtdAllowsFrames
-	}
-}
-
-# Creates persistent ParseFunc setup for non-HTML content. This is recommended to use (as a reference!)
-lib.parseFunc {
-	makelinks = 1
-	makelinks.http.keep = {$styles.content.links.keep}
-	makelinks.http.extTarget < lib.parseTarget
-	makelinks.http.extTarget =
-	makelinks.http.extTarget.override = {$styles.content.links.extTarget}
-	makelinks.mailto.keep = path
-	tags {
-		link = TEXT
-		link {
-			current = 1
-			typolink.parameter.data = parameters : allParams
-			typolink.extTarget < lib.parseTarget
-			typolink.extTarget =
-			typolink.extTarget.override = {$styles.content.links.extTarget}
-			typolink.target < lib.parseTarget
-			typolink.target =
-			typolink.target.override = {$styles.content.links.target}
-			parseFunc.constants =1
-		}
-		a = TEXT
-		a {
-			current = 1
-			typolink {
-				parameter.data = parameters:href
-				title.data = parameters:title
-				aTagParams.data = parameters:allParams
-				target.data = parameters:target
-				extTarget = {$styles.content.links.extTarget}
-				extTarget.override.data = parameters:target
-			}
-		}
-	}
-	allowTags = {$styles.content.links.allowTags}
-	denyTags = *
-	sword = <span class="csc-sword">|</span>
-	constants = 1
-
-	nonTypoTagStdWrap.HTMLparser = 1
-	nonTypoTagStdWrap.HTMLparser {
-		keepNonMatchedTags = 1
-		htmlSpecialChars = 2
-	}
-}
-
-# good old parsefunc in "styles.content.parseFunc" is created for backwards compatibility. Don't use it, just ignore.
-styles.content.parseFunc < lib.parseFunc
-
-# Creates persistent ParseFunc setup for RTE content (which is mainly HTML) based on the "ts_css" transformation.
-lib.parseFunc_RTE < lib.parseFunc
-lib.parseFunc_RTE {
-	//  makelinks >
-	# Processing <table> and <blockquote> blocks separately
-	externalBlocks = article, aside, blockquote, div, dd, dl, footer, header, nav, ol, section, table, ul
-	externalBlocks {
-		# The blockquote content is passed into parseFunc again...
-		blockquote.stripNL=1
-		blockquote.callRecursive=1
-
-		table.stripNL=1
-		table.stdWrap.HTMLparser = 1
-		table.stdWrap.HTMLparser.tags.table.fixAttrib.class {
-			default = contenttable
-			always = 1
-			list = contenttable
-		}
-		table.stdWrap.HTMLparser.keepNonMatchedTags = 1
-		table.HTMLtableCells=1
-		table.HTMLtableCells {
-			# Recursive call to self but without wrapping non-wrapped cell content
-			default.stdWrap {
-				parseFunc =< lib.parseFunc_RTE
-				parseFunc.nonTypoTagStdWrap.encapsLines.nonWrappedTag =
-			}
-			addChr10BetweenParagraphs=1
-		}
-		div.stripNL = 1
-		div.callRecursive = 1
-
-		article < .div
-		aside < .div
-		footer < .div
-		header < .div
-		nav < .div
-		section < .div
-
-		# List processing
-		dl < .div
-		dd < .div
-		ol < .div
-		ul < .div
-	}
-	nonTypoTagStdWrap.encapsLines {
-		encapsTagList = p,pre,h1,h2,h3,h4,h5,h6,hr,dt,li
-		remapTag.DIV = P
-		nonWrappedTag = P
-		innerStdWrap_all.ifBlank = &nbsp;
-		addAttributes.P.class = bodytext
-		addAttributes.P.class.setOnly=blank
-	}
-	nonTypoTagStdWrap.HTMLparser = 1
-	nonTypoTagStdWrap.HTMLparser {
-		keepNonMatchedTags = 1
-		htmlSpecialChars = 2
-	}
-}
-
-
-# Content header:
-lib.stdheader = COA
-lib.stdheader {
-
-	# Create class attribute for <Hx> tags
-	3 = LOAD_REGISTER
-	3 {
-		headerClass {
-			cObject = COA
-			cObject {
-				# Create alignment class for <Hx> tags
-				10 = TEXT
-				10 {
-					field = header_position
-					required = 1
-					noTrimWrap = |csc-header-alignment-| |
-				}
-				# Create "csc-firstHeader" class for <Hx> tags
-				20 = TEXT
-				20 {
-					value = csc-firstHeader
-					if {
-						value = 1
-						equals.data = cObj:parentRecordNumber
-					}
-				}
-				stdWrap {
-					trim = 1
-					noTrimWrap = | class="|"|
-					required = 1
-				}
-			}
-		}
-	}
-
-	# Date format (not HTML5)
-	5 = TEXT
-	5 {
-		field = date
-		if {
-			isTrue {
-				field = date
-			}
-			isFalse = 1
-			isFalse {
-				if {
-					value = html5
-					equals.data = TSFE:config|config|doctype
-				}
-			}
-		}
-		strftime = %x
-		wrap = <p class="csc-header-date">|</p>
-		prefixComment = 2 | Header date:
-	}
-
-	# This CASE cObject renders the header content:
-	# currentValue is set to the header data, possibly wrapped in link-tags.
-	10 = CASE
-	10.setCurrent {
-		field = header
-		htmlSpecialChars = 1
-		typolink.parameter.field = header_link
-	}
-	10.key.field = header_layout
-	10.key.ifEmpty = {$content.defaultHeaderType}
-	10.key.ifEmpty.override.data = register: defaultHeaderType
-
-	10.1 = TEXT
-	10.1.current = 1
-	10.1.dataWrap = <h1{register:headerClass}>|</h1>
-
-	10.2 < .10.1
-	10.2.dataWrap = <h2{register:headerClass}>|</h2>
-
-	10.3 < .10.1
-	10.3.dataWrap = <h3{register:headerClass}>|</h3>
-
-	10.4 < .10.1
-	10.4.dataWrap = <h4{register:headerClass}>|</h4>
-
-	10.5 < .10.1
-	10.5.dataWrap = <h5{register:headerClass}>|</h5>
-
-	# HTML5 subheader
-	20 = CASE
-	20 {
-		key.field = header_layout
-		key.ifEmpty = {$content.defaultHeaderType}
-		key.ifEmpty.override.data = register: defaultHeaderType
-
-		default = TEXT
-		default {
-			wrap = <h2>|</h2>
-			htmlSpecialChars = 1
-			field = subheader
-		}
-
-		1 < .default
-
-		2 < .default
-		2.wrap = <h3>|</h3>
-
-		3 < .default
-		3.wrap = <h4>|</h4>
-
-		4 < .default
-		4.wrap = <h5>|</h5>
-
-		5 < .default
-		5.wrap = <h6>|</h6>
-
-		if {
-			isTrue {
-				field = subheader
-			}
-			value = html5
-			equals.data = TSFE:config|config|doctype
-		}
-	}
-
-	# HTML5 Date
-	40 = COA
-	40 {
-
-		stdWrap {
-			wrap = <p class="csc-header-date">|</p>
-			innerWrap {
-				cObject = COA
-				cObject {
-					10 = TEXT
-					10 {
-						value = <time
-					}
-					20 = TEXT
-					20 {
-						noTrimWrap = | datetime="|"|
-						field = date
-						strftime = %Y-%m-%d
-					}
-					30 = TEXT
-					30 {
-						value = >|</time>
-					}
-				}
-			}
-			required = 1
-		}
-		10 = TEXT
-		10 {
-			field = date
-			strftime = %B %e, %Y
-		}
-		if {
-			isTrue {
-				field = date
-			}
-			value = html5
-			equals.data = TSFE:config|config|doctype
-		}
-	}
-
-	# Pops the used registers off the stack:
-	98 = RESTORE_REGISTER
-
-	# Post-processing:
-	stdWrap.fieldRequired = header
-	stdWrap.if {
-		equals.field = header_layout
-		value = 100
-		negate = 1
-	}
-
-	stdWrap.editIcons = tt_content : header, [header_layout | header_position], [header_link|date]
-	stdWrap.editIcons.beforeLastTag = 1
-	stdWrap.editIcons.iconTitle.data = LLL:EXT:css_styled_content/Resources/Private/Language/locallang.xlf:eIcon.header
-
-	stdWrap {
-		dataWrap = <div class="csc-header csc-header-n{cObj:parentRecordNumber}">|</div>
-		dataWrap {
-			override = <header class="csc-header csc-header-n{cObj:parentRecordNumber}">|</header>
-			override {
-				if {
-					isTrue {
-						field = date
-					}
-					value = html5
-					equals.data = TSFE:config|config|doctype
-				}
-			}
-		}
-	}
-	stdWrap.prefixComment = 2 | Header:
-}
-
-
-
-
-
-#**********************************
-# tt_content is started
-#**********************************
-tt_content >
-tt_content = CASE
-tt_content.key.field = CType
-tt_content.stdWrap {
-	innerWrap.cObject = CASE
-	innerWrap.cObject {
-		key.field = section_frame
-
-		default = COA
-		default {
-			10 = TEXT
-			10 {
-				cObject = CASE
-				cObject {
-					key.field = CType
-
-					default = TEXT
-					default {
-						value = <div id="c{field:uid}"
-					}
-
-					div = TEXT
-					div {
-						value = <div
-					}
-
-					menu < .default
-					menu {
-						override = <nav id="c{field:uid}"
-						override {
-							if {
-								value = html5
-								equals.data = TSFE:config|config|doctype
-							}
-						}
-					}
-				}
-				insertData = 1
-			}
-
-			20 = COA
-			20 {
-				# Create default class for content
-				10 = TEXT
-				10 {
-					value = csc-default
-					required = 1
-					noTrimWrap = || |
-				}
-				# Create class for space before content
-				20 = USER
-				20 {
-					userFunc = TYPO3\CMS\CssStyledContent\Controller\CssStyledContentController->renderSpace
-					space = before
-					constant = {$content.spaceBefore}
-					classStdWrap {
-						required = 1
-						noTrimWrap = |csc-space-before-| |
-					}
-				}
-				# Create class for space after content
-				30 = USER
-				30 {
-					userFunc = TYPO3\CMS\CssStyledContent\Controller\CssStyledContentController->renderSpace
-					space = after
-					constant = {$content.spaceAfter}
-					classStdWrap {
-						required = 1
-						noTrimWrap = |csc-space-after-| |
-					}
-				}
-				stdWrap {
-					trim = 1
-					noTrimWrap = | class="|"|
-					required = 1
-				}
-			}
-
-			30 = TEXT
-			30 {
-				cObject = CASE
-				cObject {
-					key.field = CType
-
-					default = TEXT
-					default {
-						value = >|</div>
-					}
-
-					menu < .default
-					menu {
-						override = >|</nav>
-						override {
-							if {
-								value = html5
-								equals.data = TSFE:config|config|doctype
-							}
-						}
-					}
-				}
-			}
-		}
-
-		1 =< tt_content.stdWrap.innerWrap.cObject.default
-		1.20.10.value = csc-frame csc-frame-invisible
-
-		5 =< tt_content.stdWrap.innerWrap.cObject.default
-		5.20.10.value = csc-frame csc-frame-rulerBefore
-
-		6 =< tt_content.stdWrap.innerWrap.cObject.default
-		6.20.10.value = csc-frame csc-frame-rulerAfter
-
-		10 =< tt_content.stdWrap.innerWrap.cObject.default
-		10.20.10.value = csc-frame csc-frame-indent
-
-		11 =< tt_content.stdWrap.innerWrap.cObject.default
-		11.20.10.value = csc-frame csc-frame-indent3366
-
-		12 =< tt_content.stdWrap.innerWrap.cObject.default
-		12.20.10.value = csc-frame csc-frame-indent6633
-
-		20 =< tt_content.stdWrap.innerWrap.cObject.default
-		20.20.10.value = csc-frame csc-frame-frame1
-
-		21 =< tt_content.stdWrap.innerWrap.cObject.default
-		21.20.10.value = csc-frame csc-frame-frame2
-
-		66 = COA
-		66 {
-			10 = TEXT
-			10 {
-				value = <a id="c{field:uid}"></a>
-				insertData = 1
-			}
-			# Create div with class for space before content
-			20 = COA
-			20 {
-				10 = USER
-				10 {
-					userFunc = TYPO3\CMS\CssStyledContent\Controller\CssStyledContentController->renderSpace
-					space = before
-					constant = {$content.spaceBefore}
-					classStdWrap {
-						required = 1
-						wrap = csc-space-before-|
-					}
-				}
-				stdWrap {
-					wrap = <div class="|"></div>
-					required = 1
-				}
-			}
-
-			30 = TEXT
-			30 {
-				value = |
-			}
-
-			# Create div with class for space after content
-			40 < .20
-			40 {
-				10 {
-					space = after
-					constant = {$content.spaceAfter}
-					classStdWrap {
-						wrap = csc-space-after-|
-					}
-				}
-			}
-		}
-	}
-
-	innerWrap2 = | <p class="csc-linkToTop"><a href="#">{LLL:EXT:css_styled_content/Resources/Private/Language/locallang.xlf:label.toTop}</a></p>
-	innerWrap2.insertData = 1
-	innerWrap2.fieldRequired = linkToTop
-
-	prepend = TEXT
-	prepend.dataWrap = <a id="c{field:_LOCALIZED_UID}"></a>
-	prepend.if.isTrue.field = _LOCALIZED_UID
-
-	editPanel = 1
-	editPanel {
-		allow = move,new,edit,hide,delete
-		line = 5
-		label = %s
-		onlyCurrentPid = 1
-		previewBorder = 4
-		edit.displayRecord = 1
-	}
-
-	prefixComment = 1 | CONTENT ELEMENT, uid:{field:uid}/{field:CType}
-}
-
-
-
-# *****************
-# CType: header
-# *****************
-# See Object path "lib.stdheader"
-tt_content.header = COA
-tt_content.header {
-	10 = < lib.stdheader
-
-	20 = TEXT
-	20 {
-		field = subheader
-		required = 1
-
-		dataWrap = <p class="csc-subheader csc-subheader-{field:layout}">|</p>
-		htmlSpecialChars = 1
-
-		if {
-			value = html5
-			equals.data = TSFE:config|config|doctype
-			negate = 1
-		}
-
-		editIcons = tt_content:subheader,layout
-		editIcons.beforeLastTag = 1
-		editIcons.iconTitle.data = LLL:EXT:css_styled_content/Resources/Private/Language/locallang.xlf:eIcon.subheader
-
-		prefixComment = 2 | Subheader:
-	}
-}
-
-
-
-# *****************
-# CType: text
-# *****************
-tt_content.text = COA
-tt_content.text {
-	10 = < lib.stdheader
-
-	20 = TEXT
-	20 {
-		field = bodytext
-		required = 1
-
-		parseFunc = < lib.parseFunc_RTE
-
-		editIcons = tt_content:bodytext
-		editIcons.beforeLastTag = 1
-		editIcons.iconTitle.data = LLL:EXT:css_styled_content/Resources/Private/Language/locallang.xlf:eIcon.bodytext
-
-		prefixComment = 2 | Text:
-	}
-}
-
-
-
-# *****************
-# CType: image
-# *****************
-# (also used for rendering 'textpic' type):
-tt_content.image = COA
-tt_content.image.10 = < lib.stdheader
-tt_content.image.20 = USER
-tt_content.image.20 {
-	userFunc = TYPO3\CMS\CssStyledContent\Controller\CssStyledContentController->render_textpic
-
-	preRenderRegisters {
-		// To optimize performance we load all image captions into a register
-		// because we need to know if at least one image has a caption at
-		// multiple places to determine the render method.
-		allImageCaptions.cObject = FILES
-		allImageCaptions.cObject {
-			references {
-				table = tt_content
-				fieldName = image
-			}
-			renderObj = TEXT
-			renderObj.data = file:current:description
-		}
-	}
-
-	# Image source
-	imgList.cObject = FILES
-	imgList.cObject {
-		references < tt_content.image.20.preRenderRegisters.allImageCaptions.cObject.references
-		renderObj = TEXT
-		renderObj.data = file:current:uid
-		renderObj.wrap = |,
-	}
-	imgPath = uploads/pics/
-
-	// This needs to be set because the UID list generated in the imgList
-	// setting contains UIDs of file references (not files).
-	imgListContainsReferenceUids = 1
-
-	# Single image rendering
-	imgObjNum = 1
-	1 {
-		file.import.data = file:current:uid
-		file.treatIdAsReference = 1
-		file.width.field = imagewidth
-
-		layoutKey = {$styles.content.imgtext.layoutKey}
-		layout {
-			default {
-				element = <img src="###SRC###" width="###WIDTH###" height="###HEIGHT###"###PARAMS######ALTPARAMS######BORDER######SELFCLOSINGTAGSLASH###>
-			}
-			srcset {
-				element = <img src="###SRC###" srcset="###SOURCECOLLECTION###"###PARAMS######ALTPARAMS######SELFCLOSINGTAGSLASH###>
-				source = |*|###SRC### ###SRCSETCANDIDATE###,|*|###SRC### ###SRCSETCANDIDATE###
-			}
-			picture {
-				element = <picture>###SOURCECOLLECTION###<img src="###SRC###"###PARAMS######ALTPARAMS######SELFCLOSINGTAGSLASH###></picture>
-				source = <source srcset="###SRC###" media="###MEDIAQUERY###"###SELFCLOSINGTAGSLASH###>
-			}
-			data {
-				element = <img src="###SRC###"###SOURCECOLLECTION######PARAMS######ALTPARAMS######SELFCLOSINGTAGSLASH###>
-				source = data-###DATAKEY###="###SRC###"
-				source.noTrimWrap = ; ;;
-				source.noTrimWrap.splitChar = ;
-			}
-		}
-		# Default sourceCollection as an example
-		# Please write your own sourceCollection (highly recommended)
-		sourceCollection {
-			small {
-				width = 200
-
-				srcsetCandidate = 600w
-				mediaQuery = (max-device-width: 600px)
-				dataKey = small
-			}
-			smallRetina {
-				if {
-					value = {$styles.content.imgtext.layoutKey}
-					equals = default
-					negate = 1
-				}
-
-				width = 200
-				pixelDensity = 2
-
-				srcsetCandidate = 600w 2x
-				mediaQuery = (max-device-width: 600px) AND (min-resolution: 192dpi)
-				dataKey = smallRetina
-			}
-		}
-
-		imageLinkWrap = 1
-		imageLinkWrap {
-			bodyTag = <body style="margin:0; background:#fff;">
-			wrap = <a href="javascript:close();"> | </a>
-			width = {$styles.content.imgtext.linkWrap.width}
-			height = {$styles.content.imgtext.linkWrap.height}
-			effects = {$styles.content.imgtext.linkWrap.effects}
-			crop.data = file:current:crop
-
-			JSwindow = 1
-			JSwindow.newWindow = {$styles.content.imgtext.linkWrap.newWindow}
-			JSwindow.if.isFalse = {$styles.content.imgtext.linkWrap.lightboxEnabled}
-
-			directImageLink = {$styles.content.imgtext.linkWrap.lightboxEnabled}
-
-			enable.field = image_zoom
-			enable.ifEmpty.typolink.parameter.data = file:current:link
-			enable.ifEmpty.typolink.returnLast = url
-
-			typolink.parameter.data = file:current:link
-
-			typolink.target < lib.parseTarget
-			typolink.target =
-			typolink.target.override = {$styles.content.links.target}
-
-			typolink.extTarget < lib.parseTarget
-			typolink.extTarget =
-			typolink.extTarget.override = {$styles.content.links.extTarget}
-
-			linkParams.ATagParams.dataWrap =  class="{$styles.content.imgtext.linkWrap.lightboxCssClass}" rel="{$styles.content.imgtext.linkWrap.lightboxRelAttribute}"
-		}
-
-		altText = TEXT
-		altText {
-			data = file:current:alternative
-			stripHtml = 1
-		}
-
-		titleText < .altText
-		titleText.data = file:current:title
-
-		longdescURL {
-			parameter {
-				field = longdescURL
-				split {
-					token {
-						char = 10
-					}
-					returnKey.data = register : IMAGE_NUM_CURRENT
-				}
-			}
-		}
-
-		emptyTitleHandling = {$styles.content.imgtext.emptyTitleHandling}
-		titleInLink = {$styles.content.imgtext.titleInLink}
-		titleInLinkAndImg = {$styles.content.imgtext.titleInLinkAndImg}
-	}
-
-	textPos.field = imageorient
-	maxW = {$styles.content.imgtext.maxW}
-	maxW.override.data = register:maxImageWidth
-	maxWInText = {$styles.content.imgtext.maxWInText}
-	maxWInText.override.data = register:maxImageWidthInText
-
-	equalH.field = imageheight
-
-	image_compression.field = image_compression
-	image_effects.field = image_effects
-
-	noRows.field = image_noRows
-
-	cols.field = imagecols
-	border.field = imageborder
-
-	caption {
-		1 = COA
-		1 {
-			1 = TEXT
-			1 {
-				data = file:current:description
-				required = 1
-				htmlSpecialChars = 1
-				br = 1
-			}
-		}
-	}
-
-	captionAlign.field = imagecaption_position
-
-	// This needs to be set to TRUE because otherwise render_textpic will
-	// render a global caption which we do not have.
-	imageTextSplit = 1
-
-	borderThick = {$styles.content.imgtext.borderThick}
-	borderClass = {$styles.content.imgtext.borderClass}
-	colSpace = {$styles.content.imgtext.colSpace}
-	textMargin = {$styles.content.imgtext.textMargin}
-
-	borderSpace = {$styles.content.imgtext.borderSpace}
-	separateRows = {$styles.content.imgtext.separateRows}
-	addClasses =
-	addClassesCol =
-	addClassesCol.ifEmpty = csc-textpic-firstcol csc-textpic-lastcol
-	addClassesCol.override = csc-textpic-firstcol |*| |*| csc-textpic-lastcol
-	addClassesCol.override.if {
-		isGreaterThan.field = imagecols
-		value = 1
-	}
-
-	addClassesImage = csc-textpic-first |*| |*| csc-textpic-last
-
-	#
-	imageStdWrap.dataWrap = <div class="csc-textpic-imagewrap" style="width:{register:totalwidth}px;"> | </div>
-	imageStdWrapNoWidth.wrap = <div class="csc-textpic-imagewrap"> | </div>
-
-	# if noRows is set, wrap around each column:
-	imageColumnStdWrap.dataWrap = <div class="csc-textpic-imagecolumn" style="width:{register:columnwidth}px;"> | </div>
-
-	layout = CASE
-	layout {
-		key.field = imageorient
-		# above-center
-		default = TEXT
-		default {
-			value = <div class="csc-textpic csc-textpic-center csc-textpic-above###CLASSES###">###IMAGES######TEXT###</div>
-			override = <div class="csc-textpic csc-textpic-responsive csc-textpic-center csc-textpic-above###CLASSES###">###IMAGES######TEXT###</div>
-			override {
-				if {
-					value = default
-					equals = {$styles.content.imgtext.layoutKey}
-					negate = 1
-				}
-			}
-		}
-		# above-right
-		1 = TEXT
-		1 {
-			value = <div class="csc-textpic csc-textpic-right csc-textpic-above###CLASSES###">###IMAGES######TEXT###</div>
-			override = <div class="csc-textpic csc-textpic-responsive csc-textpic-right csc-textpic-above###CLASSES###">###IMAGES######TEXT###</div>
-			override {
-				if {
-					value = default
-					equals = {$styles.content.imgtext.layoutKey}
-					negate = 1
-				}
-			}
-		}
-		# above-left
-		2 = TEXT
-		2 {
-			value = <div class="csc-textpic csc-textpic-left csc-textpic-above###CLASSES###">###IMAGES######TEXT###</div>
-			override = <div class="csc-textpic csc-textpic-responsive csc-textpic-left csc-textpic-above###CLASSES###">###IMAGES######TEXT###</div>
-			override {
-				if {
-					value = default
-					equals = {$styles.content.imgtext.layoutKey}
-					negate = 1
-				}
-			}
-		}
-		# below-center
-		8 = TEXT
-		8 {
-			value = <div class="csc-textpic csc-textpic-center csc-textpic-below###CLASSES###">###TEXT######IMAGES###</div>
-			override = <div class="csc-textpic csc-textpic-responsive csc-textpic-center csc-textpic-below###CLASSES###">###TEXT######IMAGES###</div>
-			override {
-				if {
-					value = default
-					equals = {$styles.content.imgtext.layoutKey}
-					negate = 1
-				}
-			}
-		}
-		# below-right
-		9 = TEXT
-		9 {
-			value = <div class="csc-textpic csc-textpic-right csc-textpic-below###CLASSES###">###TEXT######IMAGES###</div>
-			override = <div class="csc-textpic csc-textpic-responsive csc-textpic-right csc-textpic-below###CLASSES###">###TEXT######IMAGES###</div>
-			override {
-				if {
-					value = default
-					equals = {$styles.content.imgtext.layoutKey}
-					negate = 1
-				}
-			}
-		}
-		# below-left
-		10 = TEXT
-		10 {
-			value = <div class="csc-textpic csc-textpic-left csc-textpic-below###CLASSES###">###TEXT######IMAGES###</div>
-			override = <div class="csc-textpic csc-textpic-responsive csc-textpic-left csc-textpic-below###CLASSES###">###TEXT######IMAGES###</div>
-			override {
-				if {
-					value = default
-					equals = {$styles.content.imgtext.layoutKey}
-					negate = 1
-				}
-			}
-		}
-		# intext-right
-		17 = TEXT
-		17 {
-			value = <div class="csc-textpic csc-textpic-intext-right###CLASSES###">###IMAGES######TEXT###</div>
-			override = <div class="csc-textpic csc-textpic-responsive csc-textpic-intext-right###CLASSES###">###IMAGES######TEXT###</div>
-			override {
-				if {
-					value = default
-					equals = {$styles.content.imgtext.layoutKey}
-					negate = 1
-				}
-			}
-		}
-		# intext-left
-		18 = TEXT
-		18 {
-			value = <div class="csc-textpic csc-textpic-intext-left###CLASSES###">###IMAGES######TEXT###</div>
-			override = <div class="csc-textpic csc-textpic-responsive csc-textpic-intext-left###CLASSES###">###IMAGES######TEXT###</div>
-			override {
-				if {
-					value = default
-					equals = {$styles.content.imgtext.layoutKey}
-					negate = 1
-				}
-			}
-		}
-		# intext-right-nowrap
-		25 = TEXT
-		25 {
-			value = <div class="csc-textpic csc-textpic-intext-right-nowrap###CLASSES###">###IMAGES######TEXT###</div>
-			override = <div class="csc-textpic csc-textpic-responsive csc-textpic-intext-right-nowrap###CLASSES###">###IMAGES######TEXT###</div>
-			override {
-				if {
-					value = default
-					equals = {$styles.content.imgtext.layoutKey}
-					negate = 1
-				}
-			}
-		}
-		# intext-left-nowrap
-		26 = TEXT
-		26 {
-			value = <div class="csc-textpic csc-textpic-intext-left-nowrap###CLASSES###">###IMAGES######TEXT###</div>
-			override = <div class="csc-textpic csc-textpic-responsive csc-textpic-intext-left-nowrap###CLASSES###">###IMAGES######TEXT###</div>
-			override {
-				if {
-					value = default
-					equals = {$styles.content.imgtext.layoutKey}
-					negate = 1
-				}
-			}
-		}
-	}
-
-	rendering {
-		# Single image - No caption
-		singleNoCaption {
-			# Choose another rendering for special edge cases
-			fallbackRendering = COA
-			fallbackRendering {
-				# Single image - Caption
-				10 = TEXT
-				10 {
-					if {
-						isTrue.data = file:current:description
-						value = 1
-						equals.data = register:imageCount
-					}
-					value = singleCaption
-				}
-
-				# Multiple images and split caption
-				20 = TEXT
-				20 {
-					if {
-						value = 1
-						isGreaterThan.data = register:imageCount
-						isTrue.if.isFalse.data = register:renderGlobalCaption
-						isTrue.data = register:allImageCaptions
-					}
-					value = splitCaption
-				}
-
-				# Multiple images and no caption at all
-				40 = TEXT
-				40 {
-					if {
-						value = 1
-						isGreaterThan.data = register:imageCount
-						isFalse.data = register:allImageCaptions
-					}
-					value = noCaption
-				}
-			}
-			allStdWrap {
-				dataWrap = <div class="csc-textpic-imagewrap"> | </div>
-				dataWrap {
-					override = <div class="csc-textpic-imagewrap" data-csc-images="{register:imageCount}" data-csc-cols="{field:imagecols}"> | </div>
-					override {
-						if {
-							value = html5
-							equals.data = TSFE:config|config|doctype
-						}
-					}
-				}
-				innerWrap.cObject = CASE
-				innerWrap.cObject {
-					key.field = imageorient
-					# above-center
-					0 = TEXT
-					0.value = <div class="csc-textpic-center-outer"><div class="csc-textpic-center-inner"> | </div></div>
-					# below-center
-					8 < .0
-				}
-			}
-			singleStdWrap {
-				wrap = <div class="csc-textpic-image###CLASSES###"> | </div>
-				wrap {
-					override = <figure class="csc-textpic-image###CLASSES###"> | </figure>
-					override {
-						if {
-							value = html5
-							equals.data = TSFE:config|config|doctype
-						}
-					}
-				}
-			}
-			rowStdWrap.wrap = |
-			noRowsStdWrap.wrap = |
-			lastRowStdWrap.wrap = |
-			columnStdWrap.wrap = |
-			imgTagStdWrap.wrap = |
-			editIconsStdWrap.wrap = <div> | </div>
-			caption.wrap = |
-		}
-		noCaption {
-			# Multiple images and no caption at all
-			fallbackRendering < tt_content.image.20.rendering.singleNoCaption.fallbackRendering.10
-			allStdWrap {
-				dataWrap = <div class="csc-textpic-imagewrap"> | </div>
-				dataWrap {
-					override = <div class="csc-textpic-imagewrap" data-csc-images="{register:imageCount}" data-csc-cols="{field:imagecols}"> | </div>
-					override {
-						if {
-							value = html5
-							equals.data = TSFE:config|config|doctype
-						}
-					}
-				}
-			}
-			singleStdWrap {
-				wrap = <div class="csc-textpic-image###CLASSES###"> | </div>
-				wrap {
-					override = <figure class="csc-textpic-image###CLASSES###"> | </figure>
-				}
-			}
-			rowStdWrap.wrap = <div class="csc-textpic-imagerow"> | </div>
-			noRowsStdWrap.wrap = <div class="csc-textpic-imagerow csc-textpic-imagerow-none"> | </div>
-			lastRowStdWrap.wrap = <div class="csc-textpic-imagerow csc-textpic-imagerow-last"> | </div>
-			columnStdWrap.wrap = <div class="csc-textpic-imagecolumn###CLASSES###"> | </div>
-		}
-		singleCaption {
-			# Just one image with a caption
-			fallbackRendering < tt_content.image.20.rendering.singleNoCaption.fallbackRendering.10
-			singleStdWrap {
-				wrap = <div class="csc-textpic-image###CLASSES###"><table>###CAPTION###<tbody><tr><td> | </td></tr></tbody></table></div>
-				wrap {
-					override = <figure class="csc-textpic-image###CLASSES###">|###CAPTION###</figure>
-					override {
-						if {
-							value = html5
-							equals.data = TSFE:config|config|doctype
-						}
-					}
-				}
-			}
-			caption {
-				required = 1
-				wrap = <caption class="csc-textpic-caption###CLASSES###"> | </caption>
-				wrap {
-					override = <figcaption class="csc-textpic-caption###CLASSES###"> | </figcaption>
-					override {
-						if {
-							value = html5
-							equals.data = TSFE:config|config|doctype
-						}
-					}
-				}
-			}
-		}
-		splitCaption {
-			fallbackRendering < tt_content.image.20.rendering.singleNoCaption.fallbackRendering.10
-			singleStdWrap {
-				wrap = <div class="csc-textpic-image###CLASSES###"><table>###CAPTION###<tbody><tr><td> | </td></tr></tbody></table></div>
-				wrap {
-					override = <figure class="csc-textpic-image###CLASSES###">|###CAPTION###</figure>
-					override {
-						if {
-							value = html5
-							equals.data = TSFE:config|config|doctype
-						}
-					}
-				}
-			}
-			rowStdWrap.wrap = <div class="csc-textpic-imagerow"> | </div>
-			noRowsStdWrap.wrap = <div class="csc-textpic-imagerow csc-textpic-imagerow-none"> | </div>
-			lastRowStdWrap.wrap = <div class="csc-textpic-imagerow csc-textpic-imagerow-last"> | </div>
-			columnStdWrap.wrap = <div class="csc-textpic-imagecolumn###CLASSES###"> | </div>
-			caption {
-				required = 1
-				wrap = <caption class="csc-textpic-caption###CLASSES###"> | </caption>
-				wrap {
-					override = <figcaption class="csc-textpic-caption###CLASSES###"> | </figcaption>
-					override {
-						if {
-							value = html5
-							equals.data = TSFE:config|config|doctype
-						}
-					}
-				}
-			}
-		}
-	}
-	renderMethod = singleNoCaption
-
-	editIcons = tt_content : image [imageorient|imagewidth|imageheight],[imagecols|image_noRows|imageborder],[image_zoom],[image_compression|image_effects|image_frames],[imagecaption_position]
-	editIcons.iconTitle.data = LLL:EXT:css_styled_content/Resources/Private/Language/locallang.xlf:eIcon.images
-
-	caption.editIcons = tt_content : imagecaption_position
-	caption.editIcons.beforeLastTag=1
-	caption.editIcons.iconTitle.data = LLL:EXT:css_styled_content/Resources/Private/Language/locallang.xlf:eIcon.caption_position
-
-	stdWrap.prefixComment = 2 | Image block:
-}
-
-# *****************
-# CType: textpic
-# *****************
-tt_content.textpic = COA
-tt_content.textpic {
-	10 = COA
-	10.if.value = 25
-	10.if.isLessThan.field = imageorient
-	10.10 = < lib.stdheader
-
-	20  = < tt_content.image.20
-	20 {
-		text.10 = COA
-		text.10 {
-			if.value = 24
-			if.isGreaterThan.field = imageorient
-			10 = < lib.stdheader
-			10.stdWrap.dataWrap = <div class="csc-textpicHeader csc-textpicHeader-{field:imageorient}">|</div>
-		}
-		text.20 = < tt_content.text.20
-		text.wrap = <div class="csc-textpic-text"> | </div>
-	}
-}
-
-
-
-# *****************
-# CType: bullet
-# *****************
-tt_content.bullets = COA
-tt_content.bullets {
-	10 = < lib.stdheader
-
-	20 = TEXT
-	20 {
-		field = bodytext
-		trim = 1
-		split{
-			token.char = 10
-			cObjNum = |*|1|| 2|*|
-			1.current = 1
-			1.htmlSpecialChars = 1
-			1.wrap = <li class="odd">|</li>
-
-			2.current = 1
-			2.htmlSpecialChars = 1
-			2.wrap = <li class="even">|</li>
-		}
-		dataWrap = <ul class="csc-bulletlist csc-bulletlist-{field:layout}">|</ul>
-		editIcons = tt_content: bodytext, [layout]
-		editIcons.beforeLastTag = 1
-		editIcons.iconTitle.data = LLL:EXT:css_styled_content/pi1/locallang.xlf:eIcon.bullets
-
-		prefixComment = 2 | Bullet list:
-	}
-}
-
-
-# *****************
-# CType: uploads
-# *****************
-tt_content.uploads = COA
-tt_content.uploads {
-	10 = < lib.stdheader
-
-	20 = FILES
-	20 {
-		# get from file references:
-		references {
-			table = tt_content
-			fieldName = media
-		}
-
-		collections.field = file_collections
-
-		sorting.field = filelink_sorting
-
-		# render the files
-		renderObj = COA
-		renderObj {
-			10 = IMAGE
-			10 {
-				file.import.data = file:current:originalUid // file:current:uid
-				file.width = 150
-				stdWrap {
-					if.value = 1
-					if.isGreaterThan.field = layout
-
-					typolink {
-						parameter.data = file:current:originalUid // file:current:uid
-						parameter.wrap = file:|
-						fileTarget < lib.parseTarget
-						fileTarget =
-						fileTarget.override = {$styles.content.uploads.target}
-						fileTarget.override.override.field = target
-						removePrependedNumbers = 1
-
-						title {
-							data = file:current:title
-							htmlSpecialChars = 1
-						}
-
-						/*
-						jumpurl = {$styles.content.uploads.jumpurl}
-						jumpurl {
-							secure = {$styles.content.uploads.jumpurl_secure}
-							secure.mimeTypes = {$styles.content.uploads.jumpurl_secure_mimeTypes}
-						}
-						*/
-					}
-				}
-			}
-
-			# icon
-			15 = IMAGE
-			15 {
-				file.import = typo3/sysext/frontend/Resources/Public/Icons/FileIcons/
-				file.import.data = file:current:extension
-				file.import.case = lower
-				file.import.wrap = |.gif
-				stdWrap {
-					if {
-						value = 0
-						isGreaterThan.field = layout
-
-						# only show the icon if we don't have a thumbnail:
-						isFalse.cObject = IMG_RESOURCE
-						isFalse.cObject.file < tt_content.uploads.20.renderObj.10.file
-						isFalse.cObject.stdWrap.if < tt_content.uploads.20.renderObj.10.stdWrap.if
-					}
-
-					typolink < tt_content.uploads.20.renderObj.10.stdWrap.typolink
-				}
-			}
-
-			# filename
-			20 = TEXT
-			20 {
-				data = file:current:title // file:current:name
-				htmlSpecialChars = 1
-				required = 1
-
-				replacement {
-					# equivalent to former useSpacesInLinkText = 0; remove using > to disable it
-					10 {
-						search = _
-						replace.char = 32
-					}
-
-					# equivalent to former stripFileExtensionFromLinkText = 0; move "_20" to "20" to enable it. Disabled by default.
-					_20 {
-						search = /(.*)(\..*)/
-						replace = \1
-						useRegExp = 1
-					}
-				}
-
-				typolink < tt_content.uploads.20.renderObj.10.stdWrap.typolink
-
-				wrap = <span class="csc-uploads-fileName">|</span>
-			}
-
-			# description
-			30 = TEXT
-			30 {
-				data = file:current:description
-				htmlSpecialChars = 1
-				wrap = <span class="csc-uploads-description">|</span>
-
-				required = 1
-			}
-
-			# file size
-			40 = TEXT
-			40 {
-				if.isTrue.field = filelink_size
-				data = file:current:size
-				wrap = <span class="csc-uploads-fileSize">|</span>
-				bytes = 1
-				bytes.labels = {$styles.content.uploads.filesizeBytesLabels}
-			}
-
-			# wrap of each listed file with odd/even class
-			wrap.cObject = COA
-			wrap.cObject {
-				10 = LOAD_REGISTER
-				10 {
-					oddEvenClass = li-odd li-first |*| li-even || li-odd
-					elementClass = csc-uploads-element csc-uploads-element-{file:current:extension}
-					elementClass.insertData = 1
-				}
-
-				20 = TEXT
-				20 {
-					value = <li class="{register:oddEvenClass} {register:elementClass}">|</li>
-					insertData = 1
-				}
-				30 = RESTORE_REGISTER
-			}
-		}
-
-		# wrap around whole content element with <ul> and editIcons
-		stdWrap {
-			editIcons = tt_content: media, layout [table_bgColor|table_border|table_cellspacing|table_cellpadding], filelink_size
-			editIcons.iconTitle.data = LLL:EXT:css_styled_content/Resources/Private/Language/locallang.xlf:eIcon.filelist
-			prefixComment = 2 | Filelist:
-			dataWrap = <ul class="csc-uploads csc-uploads-{field:layout}">|</ul>
-		}
-	}
-}
-
-
-
-# *****************
-# CType: table
-# *****************
-# Rendered by a PHP function specifically written to handle CE tables. See EXT:css_styled_content/Classes/Controller/CssStyledContentController.php
-tt_content.table = COA
-tt_content.table {
-	10 = < lib.stdheader
-
-	20 = USER
-	20.userFunc = TYPO3\CMS\CssStyledContent\Controller\CssStyledContentController->render_table
-	20.field = bodytext
-
-	20.color {
-		default =
-		1 = {$styles.content.table.backgroundColor.1}
-		2 = {$styles.content.table.backgroundColor.2}
-		200 =
-		240 = {$styles.content.table.backgroundColor.240}
-		241 = {$styles.content.table.backgroundColor.241}
-		242 = {$styles.content.table.backgroundColor.242}
-		243 = {$styles.content.table.backgroundColor.243}
-		244 = {$styles.content.table.backgroundColor.244}
-	}
-	20.tableParams_0 {
-		border =
-		cellpadding =
-		cellspacing =
-	}
-	20.tableParams_1 {
-		border =
-		cellpadding =
-		cellspacing =
-	}
-	20.tableParams_2 {
-		border =
-		cellpadding =
-		cellspacing =
-	}
-	20.tableParams_3 {
-		border =
-		cellpadding =
-		cellspacing =
-	}
-	20.innerStdWrap.wrap = |
-	20.innerStdWrap.htmlSpecialChars = 1
-	20.innerStdWrap.br = 1
-
-	20.stdWrap {
-		editIcons = tt_content: cols, bodytext, [layout], [table_bgColor|table_border|table_cellspacing|table_cellpadding]
-		editIcons.beforeLastTag = 1
-		editIcons.iconTitle.data = LLL:EXT:css_styled_content/Resources/Private/Language/locallang.xlf:eIcon.table
-
-		prefixComment = 2 | Table:
-	}
-}
-
-# ****************
-# CType: menu
-# ****************
-tt_content.menu = COA
-tt_content.menu {
-	10 = < lib.stdheader
-
-	20 = CASE
-	20 {
-		key.field = menu_type
-
-		# "Menu of these pages"
-		default = HMENU
-		default {
-			special = list
-			special.value.field = pages
-			stdWrap {
-				prepend = COA
-				prepend {
-					stdWrap {
-						if.isTrue.field = accessibility_bypass
-					}
-					10 = LOAD_REGISTER
-					10 {
-						accessibility_bypass_text = TEXT
-						accessibility_bypass_text {
-							field = accessibility_bypass_text
-						}
-					}
-					20 = CONTENT
-					20 {
-						table = tt_content
-						select {
-							pidInList = this
-							orderBy = sorting
-							where {
-								dataWrap = sorting>{field:sorting}
-							}
-							languageField = sys_language_uid
-							max = 1
-						}
-						renderObj = TEXT
-						renderObj {
-							required = 1
-							data = LLL:EXT:css_styled_content/Resources/Private/Language/locallang.xlf:menu.bypassNavigation
-							override.data = register:accessibility_bypass_text
-							trim = 1
-							htmlSpecialChars = 1
-							typolink {
-								parameter {
-									field = pid
-								}
-								section {
-									field = uid
-								}
-							}
-							wrap = <li class="csc-nav-bypass">|</li>
-						}
-					}
-					30 = RESTORE_REGISTER
-				}
-				outerWrap = <ul class="csc-menu csc-menu-def">|</ul>
-				required = 1
-			}
-			1 = TMENU
-			1 {
-				target < lib.parseTarget
-				target =
-				target.override = {$PAGE_TARGET}
-				NO {
-					stdWrap.htmlSpecialChars = 1
-					wrapItemAndSub = <li>|</li>
-					ATagTitle.field = description // title
-				}
-			}
-		}
-
-		# "Menu of subpages to these pages"
-		1 < .default
-		1 {
-			special = directory
-			stdWrap {
-				outerWrap = <ul class="csc-menu csc-menu-1">|</ul>
-			}
-		}
-
-		# "Sitemap - liststyle"
-		2 = HMENU
-		2 {
-			stdWrap < tt_content.menu.20.default.stdWrap
-			stdWrap {
-				outerWrap = <div class="csc-sitemap">|</div>
-			}
-			1 = TMENU
-			1 {
-				target < lib.parseTarget
-				target =
-				target.override = {$PAGE_TARGET}
-				expAll = 1
-				wrap = <ul>|</ul>
-				NO {
-					stdWrap.htmlSpecialChars = 1
-					wrapItemAndSub = <li>|</li>
-					ATagTitle.field = description // title
-				}
-			}
-			2 < .1
-			3 < .1
-			4 < .1
-			5 < .1
-			6 < .1
-			7 < .1
-		}
-
-		# "Section index (pagecontent w/Index checked - liststyle)"
-		3 < .default
-		3 {
-			special {
-				value {
-					override {
-						data = page:uid
-						if {
-							isFalse.field = pages
-						}
-					}
-				}
-			}
-			stdWrap {
-				outerWrap = <ul class="csc-menu csc-menu-3">|</ul>
-			}
-			1 = TMENU
-			1 {
-				sectionIndex = 1
-				sectionIndex.type = header
-				NO.wrapItemAndSub = <li class="csc-section">|</li>
-			}
-		}
-
-		# "Menu of subpages to these pages (with abstract)"
-		4 < .1
-		4 {
-			stdWrap {
-				prepend.20.renderObj.wrap = <dt class="csc-nav-bypass">|</dt><dd>&nbsp;</dd>
-				outerWrap = <dl class="csc-menu csc-menu-4">|</dl>
-			}
-			1.NO {
-				wrapItemAndSub >
-				linkWrap = <dt>|</dt>
-				after {
-					cObject = TEXT
-					cObject {
-						data = field : abstract // field : description // field : subtitle
-						htmlSpecialChars = 1
-						required = 1
-					}
-					ifBlank = &nbsp;
-					wrap = <dd>|</dd>
-				}
-				ATagTitle.field = description // title
-			}
-		}
-
-		# "Recently updated pages"
-		5 < .default
-		5 {
-			stdWrap {
-				outerWrap = <ul class="csc-menu csc-menu-5">|</ul>
-			}
-			special = updated
-			special {
-				maxAge = 3600*24*7
-				excludeNoSearchPages = 1
-			}
-		}
-
-		# "Related pages (based on keywords)"
-		6 < .default
-		6 {
-			stdWrap {
-				outerWrap = <ul class="csc-menu csc-menu-6">|</ul>
-			}
-			special = keywords
-			special {
-				excludeNoSearchPages = 1
-			}
-		}
-
-		# "Menu of subpages to these pages + sections - liststyle"
-		7 < .1
-		7 {
-			stdWrap {
-				outerWrap = <ul class="csc-menu csc-menu-7">|</ul>
-			}
-			1.expAll = 1
-			2 < .1
-			2 {
-				sectionIndex = 1
-				sectionIndex.type = header
-				wrap = <ul>|</ul>
-				NO.wrapItemAndSub = <li class="csc-section">|</li>
-			}
-		}
-
-		# "Sitemaps of selected pages - liststyle"
-		8 < .2
-		8 {
-			special = directory
-			special.value.field = pages
-		}
-
-		# Menu of categorized pages
-		categorized_pages < .default
-		categorized_pages {
-			special = categories
-			special.value.field = selected_categories
-			special.relation.field = category_field
-			special.sorting = title
-			special.order = asc
-			stdWrap {
-				outerWrap = <ul class="csc-menu csc-menu-categorized-pages">|</ul>
-			}
-		}
-
-		# Menu of categorized content elements
-		categorized_content = RECORDS
-		categorized_content {
-			categories.field = selected_categories
-			categories.relation.field = category_field
-			tables = tt_content
-			conf.tt_content = TEXT
-			conf.tt_content {
-				field = header
-				typolink.parameter = {field:pid}#{field:uid}
-				typolink.parameter.insertData = 1
-				wrap = <li>|</li>
-			}
-			wrap = <ul>|</ul>
-		}
-	}
-
-	20.stdWrap {
-		wrap {
-			cObject = COA
-			cObject {
-				10 = TEXT
-				10 {
-					field = accessibility_title
-					htmlSpecialChars = 1
-					dataWrap = <map id="map{field:uid}" title="|">
-					dataWrap {
-						override = <map name="map{field:uid}" title="|">
-						override {
-							if {
-								isFalse.data = TSFE:xhtmlDoctype
-							}
-						}
-					}
-				}
-
-				20 = TEXT
-				20 {
-					value = |</map>
-				}
-			}
-			if {
-				isTrue {
-					field = accessibility_title
-				}
-			}
-		}
-		editIcons = tt_content: menu_type, pages
-		editIcons.iconTitle.data = LLL:EXT:css_styled_content/Resources/Private/Language/locallang.xlf:eIcon.menuSitemap
-
-		prefixComment = 2 | Menu/Sitemap element:
-	}
-}
-
-
-
-# ****************
-# CType: shortcut
-# ****************
-# Should be a complete copy from the old static template "content (default)"
-tt_content.shortcut = COA
-tt_content.shortcut {
-
-	20 = RECORDS
-	20 {
-		source.field = records
-		tables = {$content.shortcut.tables}
-	}
-
-	20.stdWrap {
-		editIcons = tt_content: records
-		editIcons.iconTitle.data = LLL:EXT:css_styled_content/Resources/Private/Language/locallang.xlf:eIcon.recordList
-
-		prefixComment = 2 | Inclusion of other records (by reference):
-	}
-}
-
-
-# ****************
-# CType: list
-# ****************
-# Should be a complete copy from the old static template "content (default)" (except "lib.stdheader")
-tt_content.list = COA
-tt_content.list {
-	10 = < lib.stdheader
-
-	20 = CASE
-	20.key.field = list_type
-
-	20.stdWrap {
-		editIcons = tt_content: list_type, layout, pages [recursive]
-		editIcons.iconTitle.data = LLL:EXT:css_styled_content/Resources/Private/Language/locallang.xlf:eIcon.plugin
-
-		prefixComment = 2 | Plugin inserted:
-	}
-}
-
-
-# ****************
-# CType: div
-# ****************
-tt_content.div = TEXT
-tt_content.div {
-	value = <hr>
-	override = <hr />
-	override.if {
-		isTrue.data = TSFE:xhtmlDoctype
-	}
-	wrap = <div class="divider">|</div>
-	prefixComment = 2 | Div element
-}
-
-
-# ****************
-# CType: html
-# ****************
-# This truely IS a content object, launched from inside the PHP class of course.
-# Should be a complete copy from the old static template "content (default)"
-tt_content.html = TEXT
-tt_content.html {
-	field = bodytext
-
-	editIcons = tt_content:bodytext
-	editIcons.beforeLastTag = 1
-	editIcons.iconTitle.data = LLL:EXT:css_styled_content/Resources/Private/Language/locallang.xlf:eIcon.html
-
-	prefixComment = 2 | Raw HTML content:
-}
-
-
-# ****************
-# Default error msg:
-# ****************
-tt_content.default = TEXT
-tt_content.default {
-	field = CType
-	wrap = <p style="background-color: yellow;"><b>ERROR:</b> Content Element type "|" has no rendering definition!</p>
-	htmlSpecialChars = 1
-
-	prefixComment = 2 | Unknown element message:
-}
-
-# *********************************************************************
-# ACCESSIBILTY MODE
-# *********************************************************************
-
-
-
-
-
-
-
-plugin.tx_cssstyledcontent._CSS_DEFAULT_STYLE (
-	/* Headers */
-	.csc-header-alignment-center { text-align: center; }
-	.csc-header-alignment-right { text-align: right; }
-	.csc-header-alignment-left { text-align: left; }
-
-	div.csc-textpic-responsive, div.csc-textpic-responsive * { -moz-box-sizing: border-box; -webkit-box-sizing: border-box; box-sizing: border-box;  }
-
-	/* Clear floats after csc-textpic and after csc-textpic-imagerow */
-	div.csc-textpic, div.csc-textpic div.csc-textpic-imagerow, ul.csc-uploads li { overflow: hidden; }
-
-	/* Set padding for tables */
-	div.csc-textpic .csc-textpic-imagewrap table { border-collapse: collapse; border-spacing: 0; }
-	div.csc-textpic .csc-textpic-imagewrap table tr td { padding: 0; vertical-align: top; }
-
-	/* Settings for figure and figcaption (HTML5) */
-	div.csc-textpic .csc-textpic-imagewrap figure, div.csc-textpic figure.csc-textpic-imagewrap { margin: 0; display: table; }
-
-	/* Captions */
-	figcaption.csc-textpic-caption { display: table-caption; }
-	.csc-textpic-caption { text-align: left; caption-side: bottom; }
-	div.csc-textpic-caption-c .csc-textpic-caption, .csc-textpic-imagewrap .csc-textpic-caption-c { text-align: center; }
-	div.csc-textpic-caption-r .csc-textpic-caption, .csc-textpic-imagewrap .csc-textpic-caption-r { text-align: right; }
-	div.csc-textpic-caption-l .csc-textpic-caption, .csc-textpic-imagewrap .csc-textpic-caption-l { text-align: left; }
-
-	/* Float the columns */
-	div.csc-textpic div.csc-textpic-imagecolumn { float: left; }
-
-	/* Border just around the image */
-	{$styles.content.imgtext.borderSelector} {
-		border: {$styles.content.imgtext.borderThick}px solid {$styles.content.imgtext.borderColor};
-		padding: {$styles.content.imgtext.borderSpace}px {$styles.content.imgtext.borderSpace}px;
-	}
-
-	div.csc-textpic .csc-textpic-imagewrap img { border: none; display: block; }
-
-	/* Space below each image (also in-between rows) */
-	div.csc-textpic .csc-textpic-imagewrap .csc-textpic-image { margin-bottom: {$styles.content.imgtext.rowSpace}px; }
-	div.csc-textpic .csc-textpic-imagewrap .csc-textpic-imagerow-last .csc-textpic-image { margin-bottom: 0; }
-
-	/* colSpace around image columns, except for last column */
-	div.csc-textpic-imagecolumn, td.csc-textpic-imagecolumn .csc-textpic-image { margin-right: {$styles.content.imgtext.colSpace}px; }
-	div.csc-textpic-imagecolumn.csc-textpic-lastcol, td.csc-textpic-imagecolumn.csc-textpic-lastcol .csc-textpic-image { margin-right: 0; }
-
-	/* Add margin from image-block to text (in case of "Text & Images") */
-	div.csc-textpic-intext-left .csc-textpic-imagewrap,
-	div.csc-textpic-intext-left-nowrap .csc-textpic-imagewrap {
-		margin-right: {$styles.content.imgtext.textMargin}px;
-	}
-	div.csc-textpic-intext-right .csc-textpic-imagewrap,
-	div.csc-textpic-intext-right-nowrap .csc-textpic-imagewrap {
-		margin-left: {$styles.content.imgtext.textMargin}px;
-	}
-
-	/* Positioning of images: */
-
-	/* Center (above or below) */
-	div.csc-textpic-center .csc-textpic-imagewrap, div.csc-textpic-center figure.csc-textpic-imagewrap { overflow: hidden; }
-	div.csc-textpic-center .csc-textpic-center-outer { position: relative; float: right; right: 50%; }
-	div.csc-textpic-center .csc-textpic-center-inner { position: relative; float: right; right: -50%; }
-
-	/* Right (above or below) */
-	div.csc-textpic-right .csc-textpic-imagewrap { float: right; }
-	div.csc-textpic-right div.csc-textpic-text { clear: right; }
-
-	/* Left (above or below) */
-	div.csc-textpic-left .csc-textpic-imagewrap { float: left; }
-	div.csc-textpic-left div.csc-textpic-text { clear: left; }
-
-	/* Left (in text) */
-	div.csc-textpic-intext-left .csc-textpic-imagewrap { float: left; }
-
-	/* Right (in text) */
-	div.csc-textpic-intext-right .csc-textpic-imagewrap { float: right; }
-
-	/* Right (in text, no wrap around) */
-	div.csc-textpic-intext-right-nowrap .csc-textpic-imagewrap { float: right; }
-
-	/* Left (in text, no wrap around) */
-	div.csc-textpic-intext-left-nowrap .csc-textpic-imagewrap { float: left; }
-
-	div.csc-textpic div.csc-textpic-imagerow-last, div.csc-textpic div.csc-textpic-imagerow-none div.csc-textpic-last { margin-bottom: 0; }
-
-	/* Browser fixes: */
-
-	/* Fix for unordered and ordered list with image "In text, left" */
-	.csc-textpic-intext-left ol, .csc-textpic-intext-left ul { padding-left: 40px; overflow: auto; }
-
-	/* File Links */
-	ul.csc-uploads { padding: 0; }
-	ul.csc-uploads li { list-style: none outside none; margin: 1em 0; }
-	ul.csc-uploads img { float: left; margin-right: 1em; vertical-align: top; }
-	ul.csc-uploads span { display: block; }
-	ul.csc-uploads span.csc-uploads-fileName { text-decoration: underline; }
-
-	/* Table background colors: */
-
-	table.contenttable-color-1 { background-color: {$styles.content.table.backgroundColor.1}; }
-	table.contenttable-color-2 { background-color: {$styles.content.table.backgroundColor.2}; }
-	table.contenttable-color-240 { background-color: {$styles.content.table.backgroundColor.240}; }
-	table.contenttable-color-241 { background-color: {$styles.content.table.backgroundColor.241}; }
-	table.contenttable-color-242 { background-color: {$styles.content.table.backgroundColor.242}; }
-	table.contenttable-color-243 { background-color: {$styles.content.table.backgroundColor.243}; }
-	table.contenttable-color-244 { background-color: {$styles.content.table.backgroundColor.244}; }
-)
diff --git a/typo3/sysext/css_styled_content/Documentation/Configuration/Objects/Image/Index.rst b/typo3/sysext/css_styled_content/Documentation/Configuration/Objects/Image/Index.rst
index b97970e17bc288e36ef74c0ad2e41caf82907fd0..2d15fc0d2744dd046d57162cd553deacac77afde 100644
--- a/typo3/sysext/css_styled_content/Documentation/Configuration/Objects/Image/Index.rst
+++ b/typo3/sysext/css_styled_content/Documentation/Configuration/Objects/Image/Index.rst
@@ -275,27 +275,6 @@ caption
 
 
 
-.. _objects-image-reference-captionalign:
-
-captionAlign
-''''''''''''
-
-.. container:: table-row
-
-   Property
-         captionAlign
-
-   Data type
-         align / :ref:`stdWrap <t3tsref:stdwrap>`
-
-   Description
-         Caption alignment
-
-   Default
-         field = imagecaption\_position
-
-
-
 .. _objects-image-reference-imagetextsplit:
 
 imageTextSplit
@@ -426,51 +405,6 @@ rows
 
 
 
-.. _objects-image-reference-norows:
-
-noRows
-''''''
-
-.. container:: table-row
-
-   Property
-         noRows
-
-   Data type
-         boolean / :ref:`stdWrap <t3tsref:stdwrap>`
-
-   Description
-         If set, the rows are not divided by table-rows. Thus images are more
-         nicely shown if the height differs a lot (normally the width is the
-         same!)
-
-   Default
-         field = image\_noRows
-
-
-
-.. _objects-image-reference-nocols:
-
-noCols
-''''''
-
-.. container:: table-row
-
-   Property
-         noCols
-
-   Data type
-         boolean / :ref:`stdWrap <t3tsref:stdwrap>`
-
-   Description
-         If set, the columns are not made in the table. The images are all put
-         in one row separated by a clearer to space them apart.
-
-         If noRows is set, noCols will be unset. They cannot be set
-         simultaneously.
-
-
-
 .. _objects-image-reference-colspace:
 
 colSpace
@@ -560,8 +494,7 @@ equalH
 
          Please note that this value will override the properties "width",
          "maxH", "maxW", "minW", "minH" of the IMAGE-objects generating the
-         images. Furthermore it will override the "noRows"-property and
-         generate a table with no columns instead!
+         images. It will generate a table with no columns.
 
 
 
@@ -877,7 +810,6 @@ rendering
               dl {
                   imageRowStdWrap.wrap = <div class="csi-imagerow" style="width:{register:rowwidth}px;"> | </div>
                   imageRowStdWrap.insertData = 1
-                  noRowsStdWrap.wrap =
                   oneImageStdWrap.wrap = <dl class="csi-image" style="width:{register:imagewidth}px;"> | </dl>
                   oneImageStdWrap.insertData = 1
                   imgTagStdWrap.wrap = <dt> | </dt>
@@ -1042,25 +974,6 @@ imageLastRowStdWrap
 
 
 
-.. _objects-image-reference-norowsstdwrap:
-
-noRowsStdWrap
-'''''''''''''
-
-.. container:: table-row
-
-   Property
-         noRowsStdWrap
-
-   Data type
-         string / :ref:`stdWrap <t3tsref:stdwrap>`
-
-   Description
-         Wrapping around all images if there are no separate rows (either by
-         **separateRows** setting, of if we just have one row).
-
-
-
 .. _objects-image-reference-imagestdwrap:
 
 imageStdWrap
diff --git a/typo3/sysext/css_styled_content/Documentation/Configuration/Objects/Table/Index.rst b/typo3/sysext/css_styled_content/Documentation/Configuration/Objects/Table/Index.rst
index 84ed36936d35c03b01d1be7fd9f066dc378481d3..d523946f703e7625afbc055be952a4a3a5e28865 100644
--- a/typo3/sysext/css_styled_content/Documentation/Configuration/Objects/Table/Index.rst
+++ b/typo3/sysext/css_styled_content/Documentation/Configuration/Objects/Table/Index.rst
@@ -86,72 +86,3 @@ innerStdWrap
 
    Default
          innerStdWrap.parseFunc =< lib.parseFunc
-
-
-
-.. _objects-table-reference-color:
-
-color
-'''''
-
-.. container:: table-row
-
-   Property
-         color
-
-   Data type
-         :ref:`t3tsref:data-type-html-color`
-
-   Description
-         Background Color of the table. Some predefined values are already
-         there. (Look into the background color dropdown of the table element)
-
-         Add your own with
-
-         ::
-
-            color.[dropDownId] = #000000
-
-         Fallback is
-
-         ::
-
-            color.default =
-
-   Default
-         1 = #EDEBF1
-
-         2 = #F5FFAA
-
-
-
-.. _objects-table-reference-tableparams-layout:
-
-tableParams\_[layout]
-'''''''''''''''''''''
-
-.. container:: table-row
-
-   Property
-         tableParams\_[layout]
-
-   Data type
-         border,
-
-         cellpadding,
-
-         cellspacing
-
-   Description
-         Table params dependent on the selected layout (dropdown). You should
-         better use CSS to style your tables.
-
-         For example:
-
-         ::
-
-            tableParams_0 {
-                    border =
-                    cellpadding =
-                    cellspacing =
-            }
diff --git a/typo3/sysext/css_styled_content/Resources/Private/Language/locallang.xlf b/typo3/sysext/css_styled_content/Resources/Private/Language/locallang.xlf
index 8be2563bfbb1109abafa3b9ff70efdb61f9729db..d353c8f5e1ffc5195bf4a16504615a0a5301ed56 100644
--- a/typo3/sysext/css_styled_content/Resources/Private/Language/locallang.xlf
+++ b/typo3/sysext/css_styled_content/Resources/Private/Language/locallang.xlf
@@ -66,12 +66,12 @@
 			<trans-unit id="eIcon.images">
 				<source>Edit images</source>
 			</trans-unit>
+			<trans-unit id="eIcon.textMedia">
+				<source>Edit textmedia</source>
+			</trans-unit>
 			<trans-unit id="eIcon.caption">
 				<source>Edit image caption</source>
 			</trans-unit>
-			<trans-unit id="eIcon.caption_position">
-				<source>Edit image caption alignment</source>
-			</trans-unit>
 			<trans-unit id="eIcon.bullets">
 				<source>Edit bullet list</source>
 			</trans-unit>
diff --git a/typo3/sysext/css_styled_content/Resources/Private/Language/locallang_db.xlf b/typo3/sysext/css_styled_content/Resources/Private/Language/locallang_db.xlf
deleted file mode 100644
index 4e32fda5b304b8e1fcb1a118ae53c4ccf004ba77..0000000000000000000000000000000000000000
--- a/typo3/sysext/css_styled_content/Resources/Private/Language/locallang_db.xlf
+++ /dev/null
@@ -1,77 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<xliff version="1.0" xmlns:t3="http://typo3.org/schemas/xliff">
-	<file t3:id="1415814808" source-language="en" datatype="plaintext" original="messages" date="2011-10-17T20:22:32Z" product-name="css_styled_content">
-		<header/>
-		<body>
-			<trans-unit id="tt_content.tx_cssstyledcontent_acctables">
-				<source>Accessibility</source>
-			</trans-unit>
-			<trans-unit id="tt_content.tx_cssstyledcontent_acctables_caption">
-				<source>Table Caption</source>
-			</trans-unit>
-			<trans-unit id="tt_content.tx_cssstyledcontent_acctables_summary">
-				<source>Table Summary</source>
-			</trans-unit>
-			<trans-unit id="tt_content.tx_cssstyledcontent_acctables_tfoot">
-				<source>Use Table Footer (wrap last row with &lt;tfoot&gt; tags)</source>
-			</trans-unit>
-			<trans-unit id="tt_content.tx_cssstyledcontent_acctables_headerpos.I.0">
-				<source>No header</source>
-			</trans-unit>
-			<trans-unit id="tt_content.tx_cssstyledcontent_acctables_headerpos.I.1">
-				<source>Top</source>
-			</trans-unit>
-			<trans-unit id="tt_content.tx_cssstyledcontent_acctables_headerpos.I.2">
-				<source>Left</source>
-			</trans-unit>
-			<trans-unit id="tt_content.tx_cssstyledcontent_acctables_headerpos">
-				<source>Table Header Position</source>
-			</trans-unit>
-			<trans-unit id="tt_content.tx_cssstyledcontent_acctables_nostyles">
-				<source>No CSS styles for this table</source>
-			</trans-unit>
-			<trans-unit id="tt_content.tx_cssstyledcontent_acctables_tableclass">
-				<source>Additional CSS Class</source>
-			</trans-unit>
-			<trans-unit id="tt_content.tx_cssstyledcontent_tableparsing">
-				<source>CSV parsing</source>
-			</trans-unit>
-			<trans-unit id="tt_content.tx_cssstyledcontent_tableparsing_quote">
-				<source>Text Delimiter</source>
-			</trans-unit>
-			<trans-unit id="tt_content.tx_cssstyledcontent_tableparsing_quote_none">
-				<source>None</source>
-			</trans-unit>
-			<trans-unit id="tt_content.tx_cssstyledcontent_tableparsing_quote_single">
-				<source>' (Single quotes)</source>
-			</trans-unit>
-			<trans-unit id="tt_content.tx_cssstyledcontent_tableparsing_quote_double">
-				<source>" (Double quotes)</source>
-			</trans-unit>
-			<trans-unit id="tt_content.tx_cssstyledcontent_tableparsing_delimiter">
-				<source>Field Delimiter</source>
-			</trans-unit>
-			<trans-unit id="tt_content.tx_cssstyledcontent_tableparsing_delimiter_pipe">
-				<source>| (Pipe)</source>
-			</trans-unit>
-			<trans-unit id="tt_content.tx_cssstyledcontent_tableparsing_delimiter_semicolon">
-				<source>; (Semicolon)</source>
-			</trans-unit>
-			<trans-unit id="tt_content.tx_cssstyledcontent_tableparsing_delimiter_colon">
-				<source>: (Colon)</source>
-			</trans-unit>
-			<trans-unit id="tt_content.tx_cssstyledcontent_tableparsing_delimiter_comma">
-				<source>, (Comma)</source>
-			</trans-unit>
-			<trans-unit id="tt_content.tx_cssstyledcontent_tableparsing_delimiter_tab">
-				<source>⇥ (Tab)</source>
-			</trans-unit>
-			<trans-unit id="tt_content.tx_cssstyledcontent_section_frame.I.9">
-				<source>No Frame</source>
-			</trans-unit>
-			<trans-unit id="tt_content.tx_cssstyledcontent_section_frame.I.0">
-				<source>Default Frame</source>
-			</trans-unit>
-		</body>
-	</file>
-</xliff>
diff --git a/typo3/sysext/css_styled_content/Resources/Private/Language/locallang_em.xlf b/typo3/sysext/css_styled_content/Resources/Private/Language/locallang_em.xlf
deleted file mode 100644
index d2bf9f61041d4d6601c4183164daab49eeebdada..0000000000000000000000000000000000000000
--- a/typo3/sysext/css_styled_content/Resources/Private/Language/locallang_em.xlf
+++ /dev/null
@@ -1,11 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<xliff version="1.0" xmlns:t3="http://typo3.org/schemas/xliff">
-	<file t3:id="1443455371" source-language="en" datatype="plaintext" original="messages" date="2014-02-07T20:22:32Z" product-name="css_styled_content">
-		<header/>
-		<body>
-			<trans-unit id="css_styled_content.config.loadContentElementWizardTsConfig">
-				<source>Load Page TSconfig with "New Content Element Wizard" definitions. The definitions can also be loaded manually by including it in a page.</source>
-			</trans-unit>
-		</body>
-	</file>
-</xliff>
diff --git a/typo3/sysext/fluid_styled_content/Resources/Private/Partials/MediaGallery.html b/typo3/sysext/css_styled_content/Resources/Private/Templates/Textmedia.html
similarity index 80%
rename from typo3/sysext/fluid_styled_content/Resources/Private/Partials/MediaGallery.html
rename to typo3/sysext/css_styled_content/Resources/Private/Templates/Textmedia.html
index 02270c3af2fda77a75d4d664c7e11c953be0ceaa..b9009bdb1696480c25cddddfb8b994432e666fb4 100644
--- a/typo3/sysext/fluid_styled_content/Resources/Private/Partials/MediaGallery.html
+++ b/typo3/sysext/css_styled_content/Resources/Private/Templates/Textmedia.html
@@ -1,21 +1,21 @@
-<html xmlns:f="http://typo3.org/ns/TYPO3/CMS/Fluid/ViewHelpers" xmlns:ce="http://typo3.org/ns/TYPO3/CMS/FluidStyledContent/ViewHelpers" data-namespace-typo3-fluid="true">
+<html xmlns:f="http://typo3.org/ns/TYPO3/CMS/Fluid/ViewHelpers" xmlns:ce="http://typo3.org/ns/TYPO3/CMS/CssStyledContent/ViewHelpers" data-namespace-typo3-fluid="true">
 <f:if condition="{gallery.rows}">
-	<div class="ce-gallery{f:if(condition: data.imageborder, then: ' ce-border')}" data-ce-columns="{gallery.count.columns}" data-ce-images="{gallery.count.files}">
+	<div class="csc-textmedia-gallery{f:if(condition: data.imageborder, then: ' csc-textmedia-border')}" data-ce-columns="{gallery.count.columns}" data-ce-images="{gallery.count.files}">
 		<f:if condition="{gallery.position.horizontal} == 'center'">
-			<div class="ce-outer">
-				<div class="ce-inner">
+			<div class="csc-textmedia-gallery-outer">
+				<div class="csc-textmedia-gallery-inner">
 		</f:if>
 		<f:for each="{gallery.rows}" as="row">
-			<div class="ce-row">
+			<div class="csc-textmedia-gallery-row">
 				<f:for each="{row.columns}" as="column">
 					<f:if condition="{column.media}">
-						<div class="ce-column">
+						<div class="csc-textmedia-gallery-column">
 							<f:if condition="{column.media.description}">
 								<f:then>
 									<figure>
 								</f:then>
 								<f:else>
-									<div class="ce-media">
+									<div class="csc-textmedia-gallery-media">
 								</f:else>
 							</f:if>
 
@@ -29,7 +29,7 @@
 								<f:defaultCase>
 									<f:render section="imageType" arguments="{_all}" />
 								</f:defaultCase>
-							 </f:switch>
+							</f:switch>
 
 							<f:if condition="{column.media.description}">
 								<f:then>
diff --git a/typo3/sysext/css_styled_content/Tests/Functional/Tca/ContentVisibleFieldsTest.php b/typo3/sysext/css_styled_content/Tests/Functional/Tca/ContentVisibleFieldsTest.php
index 755c5ed2abc9c5a4231e71b2c3d67d67a89817e4..370dc3a5d37f6d4ff86409fb40276f0c7aa8d24b 100644
--- a/typo3/sysext/css_styled_content/Tests/Functional/Tca/ContentVisibleFieldsTest.php
+++ b/typo3/sysext/css_styled_content/Tests/Functional/Tca/ContentVisibleFieldsTest.php
@@ -27,9 +27,6 @@ class ContentVisibleFieldsTest extends \TYPO3\Components\TestingFramework\Core\F
         'colPos',
         'sys_language_uid',
         'layout',
-        'spaceBefore',
-        'spaceAfter',
-        'section_frame',
         'hidden',
         'sectionIndex',
         'linkToTop',
@@ -55,11 +52,8 @@ class ContentVisibleFieldsTest extends \TYPO3\Components\TestingFramework\Core\F
         'imagewidth',
         'imageheight',
         'imageborder',
-        'image_compression',
-        'image_effects',
         'imageorient',
         'imagecols',
-        'image_noRows',
     ];
 
     protected static $contentFieldsByType = [
@@ -82,7 +76,6 @@ class ContentVisibleFieldsTest extends \TYPO3\Components\TestingFramework\Core\F
             'additionalFields' => [
                 'cols',
                 'bodytext',
-                'pi_flexform',
             ],
         ],
         'uploads' => [
@@ -93,15 +86,6 @@ class ContentVisibleFieldsTest extends \TYPO3\Components\TestingFramework\Core\F
                 'target',
             ],
         ],
-        'menu' => [
-            'additionalFields' => [
-                'menu_type',
-                'pages',
-                'accessibility_title',
-                'accessibility_bypass',
-                'accessibility_bypass_text',
-            ],
-        ],
         'shortcut' => [
             'additionalFields' => [
                 'header',
diff --git a/typo3/sysext/css_styled_content/ext_conf_template.txt b/typo3/sysext/css_styled_content/ext_conf_template.txt
deleted file mode 100644
index f4f63319c1f6a4858140e50aa2eb9e2567d4b535..0000000000000000000000000000000000000000
--- a/typo3/sysext/css_styled_content/ext_conf_template.txt
+++ /dev/null
@@ -1,2 +0,0 @@
-# cat=basic//; type=boolean; label=LLL:EXT:css_styled_content/Resources/Private/Language/locallang_em.xlf:css_styled_content.config.loadContentElementWizardTsConfig
-loadContentElementWizardTsConfig = 1
diff --git a/typo3/sysext/css_styled_content/ext_emconf.php b/typo3/sysext/css_styled_content/ext_emconf.php
index 21bdc670bd8d483a924269ddc9b331329a8908b7..6329220d90bbb6bf4a7ea3d885e0c739795e2320 100644
--- a/typo3/sysext/css_styled_content/ext_emconf.php
+++ b/typo3/sysext/css_styled_content/ext_emconf.php
@@ -1,9 +1,9 @@
 <?php
 $EM_CONF[$_EXTKEY] = [
     'title' => 'CSS styled content',
-    'description' => 'Contains configuration for CSS content-rendering of the table "tt_content". This is meant as a modern substitute for the classic "content (default)" template which was based more on <font>-tags, while this is pure CSS. It is intended to work with all modern browsers (which excludes the NS4 series).',
+    'description' => 'Contains configuration for CSS content-rendering of the table "tt_content". This is meant as a modern substitute for the classic "content (default)" template which was based more on <font>-tags, while this is pure CSS.',
     'category' => 'fe',
-    'state' => 'stable',
+    'state' => 'deprecated',
     'uploadfolder' => 0,
     'createDirs' => '',
     'clearCacheOnLoad' => 1,
diff --git a/typo3/sysext/css_styled_content/ext_localconf.php b/typo3/sysext/css_styled_content/ext_localconf.php
index e95e795be55f09339414d1c15ac4da1a65948d14..ce27a2028f1dc76e2f538d53848384ed99641e2b 100644
--- a/typo3/sysext/css_styled_content/ext_localconf.php
+++ b/typo3/sysext/css_styled_content/ext_localconf.php
@@ -1,43 +1,16 @@
 <?php
 defined('TYPO3_MODE') or die();
 
-// Disable image positions that make no sense on CType=image (it leaves just "above left", "center" and "right")
-\TYPO3\CMS\Core\Utility\ExtensionManagementUtility::addPageTSConfig('
-	TCEFORM.tt_content.imageorient.types.image.removeItems = 8,9,10,17,18,25,26
-');
-
 // Mark the delivered TypoScript templates as "content rendering template"
-$GLOBALS['TYPO3_CONF_VARS']['FE']['contentRenderingTemplates'][] = 'cssstyledcontent/static/';
-$GLOBALS['TYPO3_CONF_VARS']['FE']['contentRenderingTemplates'][] = 'cssstyledcontent/Configuration/TypoScript/v7/';
-
-// Register for hook to show preview of tt_content element of CType="image" in page module
-$GLOBALS['TYPO3_CONF_VARS']['SC_OPTIONS']['cms/layout/class.tx_cms_layout.php']['tt_content_drawItem']['image'] =
-    \TYPO3\CMS\CssStyledContent\Hooks\PageLayoutView\ImagePreviewRenderer::class;
-
-// Register for hook to show preview of tt_content element of CType="textpic" in page module
-$GLOBALS['TYPO3_CONF_VARS']['SC_OPTIONS']['cms/layout/class.tx_cms_layout.php']['tt_content_drawItem']['textpic'] =
-    \TYPO3\CMS\CssStyledContent\Hooks\PageLayoutView\TextpicPreviewRenderer::class;
-
-// Register for hook to show preview of tt_content element of CType="text" in page module
-$GLOBALS['TYPO3_CONF_VARS']['SC_OPTIONS']['cms/layout/class.tx_cms_layout.php']['tt_content_drawItem']['text'] =
-    \TYPO3\CMS\CssStyledContent\Hooks\PageLayoutView\TextPreviewRenderer::class;
-
-if (TYPO3_MODE === 'BE') {
-    call_user_func(function () {
-        // Get the extension configuration
-        $extConf = unserialize($GLOBALS['TYPO3_CONF_VARS']['EXT']['extConf']['css_styled_content'], ['allowed_classes' => false]);
-
-        if (!isset($extConf['loadContentElementWizardTsConfig']) || (int)$extConf['loadContentElementWizardTsConfig'] === 1) {
-            // Include new content elements to modWizards
-            \TYPO3\CMS\Core\Utility\ExtensionManagementUtility::addPageTSConfig('<INCLUDE_TYPOSCRIPT: source="FILE:EXT:css_styled_content/Configuration/PageTSconfig/NewContentElementWizard.ts">');
-        }
-
-        \TYPO3\CMS\Core\Utility\GeneralUtility::makeInstance(\TYPO3\CMS\Extbase\SignalSlot\Dispatcher::class)
-            ->connect(
-                \TYPO3\CMS\Extensionmanager\Controller\ConfigurationController::class,
-                'afterExtensionConfigurationWrite',
-                \TYPO3\CMS\CssStyledContent\Hooks\TcaCacheClearing::class,
-                'clearTcaCache'
-            );
-    });
-}
+$GLOBALS['TYPO3_CONF_VARS']['FE']['contentRenderingTemplates'][] = 'cssstyledcontent/Configuration/TypoScript/';
+
+// TYPO3 CMS 8 is the last version that supports CSS styled content.
+// This extension will only receive security updates in the future,
+// and will finally be removed from the TYPO3 Core in CMS 9.
+//
+// Fluid styled content and CSS styled content are now sharing the same featureset
+// so you can now benefit from more flexible templates and adjustments without
+// leaving any nessesary features behind.
+\TYPO3\CMS\Core\Utility\GeneralUtility::deprecationLog(
+    'The core extension CSS styled content has been deprecated since TYPO3 CMS 8 and will be removed in TYPO3 CMS 9.'
+);
diff --git a/typo3/sysext/css_styled_content/ext_tables.sql b/typo3/sysext/css_styled_content/ext_tables.sql
deleted file mode 100644
index 5ba438b35522a14bc4bc87bdd4bed8204bdc40f8..0000000000000000000000000000000000000000
--- a/typo3/sysext/css_styled_content/ext_tables.sql
+++ /dev/null
@@ -1,16 +0,0 @@
-#
-# Table structure for table 'tt_content'
-#
-CREATE TABLE tt_content (
-	header_position varchar(6) DEFAULT '' NOT NULL,
-	image_compression tinyint(3) unsigned DEFAULT '0' NOT NULL,
-	image_effects tinyint(3) unsigned DEFAULT '0' NOT NULL,
-	image_noRows tinyint(3) unsigned DEFAULT '0' NOT NULL,
-	section_frame int(11) unsigned DEFAULT '0' NOT NULL,
-	spaceAfter smallint(5) unsigned DEFAULT '0' NOT NULL,
-	spaceBefore smallint(5) unsigned DEFAULT '0' NOT NULL,
-	table_bgColor int(11) unsigned DEFAULT '0' NOT NULL,
-	table_border tinyint(3) unsigned DEFAULT '0' NOT NULL,
-	table_cellpadding tinyint(3) unsigned DEFAULT '0' NOT NULL,
-	table_cellspacing tinyint(3) unsigned DEFAULT '0' NOT NULL
-);
diff --git a/typo3/sysext/css_styled_content/static/constants.txt b/typo3/sysext/css_styled_content/static/constants.txt
deleted file mode 100644
index 4cde88c30ba0afa1dff0b4e995f57c8c90001dcd..0000000000000000000000000000000000000000
--- a/typo3/sysext/css_styled_content/static/constants.txt
+++ /dev/null
@@ -1,110 +0,0 @@
-  # Clear out any constants in this reserved room!
-styles.content >
-
-content {
-    # cat=content/cHeader/h0; type=int[1-5]; label=Default Header type: Enter the number of the header layout to be used by default.
-  defaultHeaderType = 1
-
-  shortcut.tables = tt_content,tt_address,tt_products,tt_news
-
-    # cat=content/other/a; type=small; label= Content Element margins (before): Space before each content element.
-  spaceBefore = 0
-    # cat=content/other/b; type=small; label= Content Element margins (after): Space after each content element.
-  spaceAfter = 0
-}
-
-
-    # cat=advanced; type=int+; label= News Content PID: If your template has a column with "news"-content fetched from another page-id, this is where you enter the id-number of that page!
-styles.content.getNews.newsPid = 0
-
-styles.content.links {
-  keep = path
-    # cat=content/links; type=small; label= Target for external links
-  extTarget = _blank
-  target = {$PAGE_TARGET}
-  allowTags = a, abbr, acronym, address, article, aside, b, bdo, big, blockquote, br, caption, center, cite, code, col, colgroup, dd, del, dfn, dl, div, dt, em, font, footer, header, h1, h2, h3, h4, h5, h6, hr, i, img, ins, kbd, label, li, link, meta, nav, ol, p, pre, q, samp, sdfield, section, small, span, strike, strong, style, sub, sup, table, thead, tbody, tfoot, td, th, tr, title, tt, u, ul, var
-}
-
-styles.content.imgtext {
-    # TIP! if register[maxImageWidth] is set, this will override maxW
-    # cat=content/cImage/b1; type=int+; label= Max Image Width: This indicates that maximum number of pixels (width) a block of images inserted as content is allowed to consume.
-  maxW = 600
-    # cat=content/cImage/b2; type=int+; label= Max Image Width (Text): Same as above, but this is the maximum width when text is wrapped around an imageblock. Default is 50% of the normal Max Image Width.
-  maxWInText =
-    # cat=content/cImage/b4; type=options[Default img-tag=default, img-tag with alternate sources as srcset-attribute=srcset, picture-tag with source-child-tags=picture, img-tag with alternate sources as data-attributes=data]; label= Rendering-type for responsive images.
-  layoutKey = default
-
-
-    # cat=content/cImage/c1; type=string; label= Click-enlarge Image Width: This specifies the width of the enlarged image when click-enlarge is enabled.
-  linkWrap.width = 800m
-  linkWrap.height = 600m
-  linkWrap.effects =
-    # cat=content/cImage/c2; type=boolean; label= Advanced, New window: If set, every click-enlarged image will open in it's own popup window and not the current popup window (which may have a wrong size for the image to fit in)
-  linkWrap.newWindow = 0
-    # cat=content/cImage/c3; type=boolean; label= Lightbox click-enlarge rendering: Whether images with click-enlarge checked should be rendered lightbox-compliant
-  linkWrap.lightboxEnabled = 0
-    # cat=content/cImage/c4; type=string; label= Lightbox CSS class: Which CSS class to use for lightbox links (only applicable if lightbox rendering is enabled)
-  linkWrap.lightboxCssClass = lightbox
-    # cat=content/cImage/c5; type=string; label= Lightbox rel="" attribute: Which rel="" attribute to use for lightbox links (only applicable if lightbox rendering is enabled)
-  linkWrap.lightboxRelAttribute = lightbox[{field:uid}]
-
-    # cat=content/cImage/e2; type=string; label= Images, empty title handling: How will the 'title' attribute be handled if no title is given for an image. Possible choices: "keepEmpty", "useAlt" or "removeAttr". Recommended for accessibility is "removeAttr". For correct tooltips on IE, use "keepEmpty". For previous TYPO3 behaviour, use "useAlt".
-  emptyTitleHandling = removeAttr
-    # cat=content/cImage/e3; type=boolean; label= Images, title in link: Do you want the 'title' attribute to be added to the surrounding <a> tag, if present? Recommended for accessibility is "true".
-  titleInLink = 1
-    # cat=content/cImage/e4; type=boolean; label= Images, title in link and IMG: If you have the title in the <a>-tag (titleInLink=true), you don't get the 'title' in the <img>-tag. IE will not show the tooltip anymore. So to get the 'title' in <img> too (to keep IE happy), set this too. Recommended for accessibility is "false". For correct tooltips on IE, set this to "true".
-  titleInLinkAndImg = 0
-
-    # cat=content/cImage/g1; type=int[0-100]; label= Advanced, Column space: Horizontal distance between images in a block in content elements of type "Images" or "Text & Images". If you change this manually in your CSS, you need to adjust this setting accordingly.
-  colSpace = 10
-    # cat=content/cImage/g2; type=int[0-100]; label= Advanced, Row space: Vertical distance after each image row in content elements of type "Images" or "Text & Images". If you change this manually in your CSS, you need to adjust this setting accordingly.
-  rowSpace = 10
-    # cat=content/cImage/g3; type=int[0-100]; label= Advanced, Margin to text: Horizontal distance between an imageblock and text in content elements of type "Text & Images".
-  textMargin = 10
-
-    # cat=content/cImage/i1; type=color; label= Image border, color: Bordercolor of images in content elements when "Border"-option for element is set.
-  borderColor = #000000
-    # cat=content/cImage/i1; type=color; label= Image border, color: Bordercolor of images in content elements when "Border"-option for element is set.
-  borderColor2 = #000000
-    # cat=content/cImage/i2; type=int[0-100]; label= Image border, thickness: Thickness of border around images in content elements when "Border"-option for element is set.
-  borderThick = 2
-    # cat=content/cImage/i3; type=int+; label= Image border, padding: Padding left and right to the image, around the border.
-  borderSpace = 0
-    # cat=content/cImage/i4; type=string; label= Image border CSS-selector: If you want your border to apply elsewhere, change this setting. E.g. to apply to the whole image+caption, use 'div.csc-textpic-border div.csc-textpic-imagewrap .csc-textpic-image'.
-  borderSelector = div.{$styles.content.imgtext.borderClass} div.csc-textpic-imagewrap img
-    # cat=content/cImage/i5; type=string; label= Image border class: The name of the CSS class for creating image borders
-  borderClass = csc-textpic-border
-    # cat=content/cImage/i5; type=boolean; label= Image row separation: Whether images should be rendered/wrapped in separated rows, e.g. inside a div.csc-textpic-imagerow element
-  separateRows = 1
-}
-
-styles.content.uploads {
-  target = _blank
-  jumpurl_secure =
-  jumpurl_secure_mimeTypes = pdf=application/pdf, doc=application/msword
-  jumpurl =
-    # cat=content/cUploads; type=string; label=Labels of file sizes: The labels for bytes, kilobytes, megabytes and gigabytes
-  filesizeBytesLabels = " | K| M| G"
-}
-
-styles.content.table {
-    # cat=content/cTable/k2; type=color; label= Table background color, Color 1: Background color for table when "Backgr. Color" has been set to "Color 1"
-  backgroundColor.1 = #EDEBF1
-    # cat=content/cTable/k3; type=color; label= Table background color, Color 2: Background color for table when "Backgr. Color" has been set to "Color 2"
-  backgroundColor.2 = #F5FFAA
-    # cat=content/cTable/k5; type=color; label= Table background color, Black: Background color for table when "Backgr. Color" has been set to "Black"
-  backgroundColor.240 = #000000
-    # cat=content/cTable/k6; type=color; label= Table background color, White: Background color for table when "Backgr. Color" has been set to "White"
-  backgroundColor.241 = #FFFFFF
-    # cat=content/cTable/k7; type=color; label= Table background color, Dark Gray: Background color for table when "Backgr. Color" has been set to "Dark Gray"
-  backgroundColor.242 = #333333
-    # cat=content/cTable/k8; type=color; label= Table background color, Gray: Background color for table when "Backgr. Color" has been set to "Gray"
-  backgroundColor.243 = #808080
-    # cat=content/cTable/k9; type=color; label= Table background color, Silver: Background color for table when "Backgr. Color" has been set to "Silver"
-  backgroundColor.244 = #C0C0C0
-}
-
- # cat=advanced/links; type=small; label= Target for internal links: Should match the name of the content PAGE-object in TypoScript when used with frames. Most cases: set to "" (empty). If you have frames in the template set to "page"
-PAGE_TARGET =
-
-
diff --git a/typo3/sysext/css_styled_content/static/setup.txt b/typo3/sysext/css_styled_content/static/setup.txt
deleted file mode 100644
index 3fd604b36bc7ec8e1ae62bb36694e9f27d649989..0000000000000000000000000000000000000000
--- a/typo3/sysext/css_styled_content/static/setup.txt
+++ /dev/null
@@ -1,1895 +0,0 @@
-# ***************************************************************************
-# Notice: "styles." (and "temp.") objects are UNSET after template parsing!
-# Use "lib." for persisting storage of objects.
-# ***************************************************************************
-
-# Clear out any constants in this reserved room!
-styles.content >
-
-# get content
-styles.content.get = CONTENT
-styles.content.get {
-	table = tt_content
-	select.orderBy = sorting
-	select.where = colPos=0
-}
-
-# get content, left
-styles.content.getLeft < styles.content.get
-styles.content.getLeft.select.where = colPos=1
-
-# get content, right
-styles.content.getRight < styles.content.get
-styles.content.getRight.select.where = colPos=2
-
-# get content, margin
-styles.content.getBorder < styles.content.get
-styles.content.getBorder.select.where = colPos=3
-
-# get news
-styles.content.getNews < styles.content.get
-styles.content.getNews.select.pidInList = {$styles.content.getNews.newsPid}
-
-# Edit page object:
-styles.content.editPanelPage = COA
-styles.content.editPanelPage {
-	10 = EDITPANEL
-	10 {
-		allow = toolbar,move,hide
-		label.data = LLL:EXT:css_styled_content/Resources/Private/Language/locallang.xlf:eIcon.page
-		label.wrap = |&nbsp;<b>%s</b>
-	}
-}
-
-
-
-
-
-# default link target for external URLs
-config.extTarget = {$styles.content.links.extTarget}
-
-
-
-
-# *********************************************************************
-# "lib." objects are preserved from unsetting after template parsing
-# *********************************************************************
-
-# Creates a condition for targets. Not allowed in XHTML except for xhtml frames DTD
-lib.parseTarget {
-	override =
-	override.if {
-		isTrue.data = TSFE:dtdAllowsFrames
-	}
-}
-
-# Creates persistent ParseFunc setup for non-HTML content. This is recommended to use (as a reference!)
-lib.parseFunc {
-	makelinks = 1
-	makelinks.http.keep = {$styles.content.links.keep}
-	makelinks.http.extTarget < lib.parseTarget
-	makelinks.http.extTarget =
-	makelinks.http.extTarget.override = {$styles.content.links.extTarget}
-	makelinks.mailto.keep = path
-	tags {
-		link = TEXT
-		link {
-			current = 1
-			typolink.parameter.data = parameters : allParams
-			typolink.extTarget < lib.parseTarget
-			typolink.extTarget =
-			typolink.extTarget.override = {$styles.content.links.extTarget}
-			typolink.target < lib.parseTarget
-			typolink.target =
-			typolink.target.override = {$styles.content.links.target}
-			parseFunc.constants =1
-		}
-		a = TEXT
-		a {
-			current = 1
-			typolink {
-				parameter.data = parameters:href
-				title.data = parameters:title
-				aTagParams.data = parameters:allParams
-				target.data = parameters:target
-				extTarget = {$styles.content.links.extTarget}
-				extTarget.override.data = parameters:target
-			}
-		}
-	}
-	allowTags = {$styles.content.links.allowTags}
-	denyTags = *
-	sword = <span class="csc-sword">|</span>
-	constants = 1
-
-	nonTypoTagStdWrap.HTMLparser = 1
-	nonTypoTagStdWrap.HTMLparser {
-		keepNonMatchedTags = 1
-		htmlSpecialChars = 2
-	}
-}
-
-# good old parsefunc in "styles.content.parseFunc" is created for backwards compatibility. Don't use it, just ignore.
-styles.content.parseFunc < lib.parseFunc
-
-# Creates persistent ParseFunc setup for RTE content (which is mainly HTML) based on the "ts_css" transformation.
-lib.parseFunc_RTE < lib.parseFunc
-lib.parseFunc_RTE {
-	//  makelinks >
-	# Processing <table> and <blockquote> blocks separately
-	externalBlocks = article, aside, blockquote, div, dd, dl, footer, header, nav, ol, section, table, ul, pre
-	externalBlocks {
-		# The blockquote content is passed into parseFunc again...
-		blockquote.stripNL=1
-		blockquote.callRecursive=1
-
-		table.stripNL=1
-		table.stdWrap.HTMLparser = 1
-		table.stdWrap.HTMLparser.tags.table.fixAttrib.class {
-			default = contenttable
-			always = 1
-			list = contenttable
-		}
-		table.stdWrap.HTMLparser.keepNonMatchedTags = 1
-		table.HTMLtableCells=1
-		table.HTMLtableCells {
-			# Recursive call to self but without wrapping non-wrapped cell content
-			default.stdWrap {
-				parseFunc =< lib.parseFunc_RTE
-				parseFunc.nonTypoTagStdWrap.encapsLines.nonWrappedTag =
-			}
-			addChr10BetweenParagraphs=1
-		}
-		div.stripNL = 1
-		div.callRecursive = 1
-
-		article < .div
-		aside < .div
-		footer < .div
-		header < .div
-		nav < .div
-		section < .div
-
-		# List processing
-		dl < .div
-		dd < .div
-		ol < .div
-		ul < .div
-	}
-	nonTypoTagStdWrap.encapsLines {
-		encapsTagList = p,pre,h1,h2,h3,h4,h5,h6,hr,dt,li
-		remapTag.DIV = P
-		nonWrappedTag = P
-		innerStdWrap_all.ifBlank = &nbsp;
-		addAttributes.P.class = bodytext
-		addAttributes.P.class.setOnly=blank
-	}
-	nonTypoTagStdWrap.HTMLparser = 1
-	nonTypoTagStdWrap.HTMLparser {
-		keepNonMatchedTags = 1
-		htmlSpecialChars = 2
-	}
-}
-
-
-# Content header:
-lib.stdheader = COA
-lib.stdheader {
-
-	# Create class attribute for <Hx> tags
-	3 = LOAD_REGISTER
-	3 {
-		headerClass {
-			cObject = COA
-			cObject {
-				# Create alignment class for <Hx> tags
-				10 = TEXT
-				10 {
-					field = header_position
-					required = 1
-					noTrimWrap = |csc-header-alignment-| |
-				}
-				# Create "csc-firstHeader" class for <Hx> tags
-				20 = TEXT
-				20 {
-					value = csc-firstHeader
-					if {
-						value = 1
-						equals.data = cObj:parentRecordNumber
-					}
-				}
-				stdWrap {
-					trim = 1
-					noTrimWrap = | class="|"|
-					required = 1
-				}
-			}
-		}
-	}
-
-	# Date format (not HTML5)
-	5 = TEXT
-	5 {
-		field = date
-		if {
-			isTrue {
-				field = date
-			}
-			isFalse = 1
-			isFalse {
-				if {
-					value = html5
-					equals.data = TSFE:config|config|doctype
-				}
-			}
-		}
-		strftime = %x
-		wrap = <p class="csc-header-date">|</p>
-		prefixComment = 2 | Header date:
-	}
-
-	# This CASE cObject renders the header content:
-	# currentValue is set to the header data, possibly wrapped in link-tags.
-	10 = CASE
-	10.setCurrent {
-		field = header
-		htmlSpecialChars = 1
-		typolink.parameter.field = header_link
-	}
-	10.key.field = header_layout
-	10.key.ifEmpty = {$content.defaultHeaderType}
-	10.key.ifEmpty.override.data = register: defaultHeaderType
-
-	10.1 = TEXT
-	10.1.current = 1
-	10.1.dataWrap = <h1{register:headerClass}>|</h1>
-
-	10.2 < .10.1
-	10.2.dataWrap = <h2{register:headerClass}>|</h2>
-
-	10.3 < .10.1
-	10.3.dataWrap = <h3{register:headerClass}>|</h3>
-
-	10.4 < .10.1
-	10.4.dataWrap = <h4{register:headerClass}>|</h4>
-
-	10.5 < .10.1
-	10.5.dataWrap = <h5{register:headerClass}>|</h5>
-
-	# HTML5 subheader
-	20 = CASE
-	20 {
-		key.field = header_layout
-		key.ifEmpty = {$content.defaultHeaderType}
-		key.ifEmpty.override.data = register: defaultHeaderType
-
-		default = TEXT
-		default {
-			wrap = <h2>|</h2>
-			htmlSpecialChars = 1
-			field = subheader
-		}
-
-		1 < .default
-
-		2 < .default
-		2.wrap = <h3>|</h3>
-
-		3 < .default
-		3.wrap = <h4>|</h4>
-
-		4 < .default
-		4.wrap = <h5>|</h5>
-
-		5 < .default
-		5.wrap = <h6>|</h6>
-
-		if {
-			isTrue {
-				field = subheader
-			}
-			value = html5
-			equals.data = TSFE:config|config|doctype
-		}
-	}
-
-	# HTML5 Date
-	40 = COA
-	40 {
-
-		stdWrap {
-			wrap = <p class="csc-header-date">|</p>
-			innerWrap {
-				cObject = COA
-				cObject {
-					10 = TEXT
-					10 {
-						value = <time
-					}
-					20 = TEXT
-					20 {
-						noTrimWrap = | datetime="|"|
-						field = date
-						strftime = %Y-%m-%d
-					}
-					30 = TEXT
-					30 {
-						value = >|</time>
-					}
-				}
-			}
-			required = 1
-		}
-		10 = TEXT
-		10 {
-			field = date
-			strftime = %B %e, %Y
-		}
-		if {
-			isTrue {
-				field = date
-			}
-			value = html5
-			equals.data = TSFE:config|config|doctype
-		}
-	}
-
-	# Pops the used registers off the stack:
-	98 = RESTORE_REGISTER
-
-	# Post-processing:
-	stdWrap.fieldRequired = header
-	stdWrap.if {
-		equals.field = header_layout
-		value = 100
-		negate = 1
-	}
-
-	stdWrap.editIcons = tt_content : header, [header_layout | header_position], [header_link|date]
-	stdWrap.editIcons.beforeLastTag = 1
-	stdWrap.editIcons.iconTitle.data = LLL:EXT:css_styled_content/Resources/Private/Language/locallang.xlf:eIcon.header
-
-	stdWrap {
-		dataWrap = <div class="csc-header csc-header-n{cObj:parentRecordNumber}">|</div>
-		dataWrap {
-			override = <header class="csc-header csc-header-n{cObj:parentRecordNumber}">|</header>
-			override {
-				if {
-					isTrue {
-						field = date
-					}
-					value = html5
-					equals.data = TSFE:config|config|doctype
-				}
-			}
-		}
-	}
-	stdWrap.prefixComment = 2 | Header:
-}
-
-
-
-
-
-#**********************************
-# tt_content is started
-#**********************************
-tt_content >
-tt_content = CASE
-tt_content.key.field = CType
-tt_content.stdWrap {
-	innerWrap.cObject = CASE
-	innerWrap.cObject {
-		key.field = section_frame
-
-		default = COA
-		default {
-			10 = TEXT
-			10 {
-				cObject = CASE
-				cObject {
-					key.field = CType
-
-					default = TEXT
-					default {
-						value = <div id="c{field:uid}"
-					}
-
-					div = TEXT
-					div {
-						value = <div
-					}
-
-					menu < .default
-					menu {
-						override = <nav id="c{field:uid}"
-						override {
-							if {
-								value = html5
-								equals.data = TSFE:config|config|doctype
-							}
-						}
-					}
-				}
-				insertData = 1
-			}
-
-			20 = COA
-			20 {
-				# Create default class for content
-				10 = TEXT
-				10 {
-					value = csc-default
-					required = 1
-					noTrimWrap = || |
-				}
-				# Create class for space before content
-				20 = USER
-				20 {
-					userFunc = TYPO3\CMS\CssStyledContent\Controller\CssStyledContentController->renderSpace
-					space = before
-					constant = {$content.spaceBefore}
-					classStdWrap {
-						required = 1
-						noTrimWrap = |csc-space-before-| |
-					}
-				}
-				# Create class for space after content
-				30 = USER
-				30 {
-					userFunc = TYPO3\CMS\CssStyledContent\Controller\CssStyledContentController->renderSpace
-					space = after
-					constant = {$content.spaceAfter}
-					classStdWrap {
-						required = 1
-						noTrimWrap = |csc-space-after-| |
-					}
-				}
-				stdWrap {
-					trim = 1
-					noTrimWrap = | class="|"|
-					required = 1
-				}
-			}
-
-			30 = TEXT
-			30 {
-				cObject = CASE
-				cObject {
-					key.field = CType
-
-					default = TEXT
-					default {
-						value = >|</div>
-					}
-
-					menu < .default
-					menu {
-						override = >|</nav>
-						override {
-							if {
-								value = html5
-								equals.data = TSFE:config|config|doctype
-							}
-						}
-					}
-				}
-			}
-		}
-
-		1 =< tt_content.stdWrap.innerWrap.cObject.default
-		1.20.10.value = csc-frame csc-frame-invisible
-
-		5 =< tt_content.stdWrap.innerWrap.cObject.default
-		5.20.10.value = csc-frame csc-frame-rulerBefore
-
-		6 =< tt_content.stdWrap.innerWrap.cObject.default
-		6.20.10.value = csc-frame csc-frame-rulerAfter
-
-		10 =< tt_content.stdWrap.innerWrap.cObject.default
-		10.20.10.value = csc-frame csc-frame-indent
-
-		11 =< tt_content.stdWrap.innerWrap.cObject.default
-		11.20.10.value = csc-frame csc-frame-indent3366
-
-		12 =< tt_content.stdWrap.innerWrap.cObject.default
-		12.20.10.value = csc-frame csc-frame-indent6633
-
-		20 =< tt_content.stdWrap.innerWrap.cObject.default
-		20.20.10.value = csc-frame csc-frame-frame1
-
-		21 =< tt_content.stdWrap.innerWrap.cObject.default
-		21.20.10.value = csc-frame csc-frame-frame2
-
-		66 = COA
-		66 {
-			10 = TEXT
-			10 {
-				value = <a id="c{field:uid}"></a>
-				insertData = 1
-			}
-			# Create div with class for space before content
-			20 = COA
-			20 {
-				10 = USER
-				10 {
-					userFunc = TYPO3\CMS\CssStyledContent\Controller\CssStyledContentController->renderSpace
-					space = before
-					constant = {$content.spaceBefore}
-					classStdWrap {
-						required = 1
-						wrap = csc-space-before-|
-					}
-				}
-				stdWrap {
-					wrap = <div class="|"></div>
-					required = 1
-				}
-			}
-
-			30 = TEXT
-			30 {
-				value = |
-			}
-
-			# Create div with class for space after content
-			40 < .20
-			40 {
-				10 {
-					space = after
-					constant = {$content.spaceAfter}
-					classStdWrap {
-						wrap = csc-space-after-|
-					}
-				}
-			}
-		}
-	}
-
-	innerWrap2 = | <p class="csc-linkToTop"><a href="#">{LLL:EXT:css_styled_content/Resources/Private/Language/locallang.xlf:label.toTop}</a></p>
-	innerWrap2.insertData = 1
-	innerWrap2.fieldRequired = linkToTop
-
-	prepend = TEXT
-	prepend.dataWrap = <a id="c{field:_LOCALIZED_UID}"></a>
-	prepend.if.isTrue.field = _LOCALIZED_UID
-
-	editPanel = 1
-	editPanel {
-		allow = move,new,edit,hide,delete
-		line = 5
-		label = %s
-		onlyCurrentPid = 1
-		previewBorder = 4
-		edit.displayRecord = 1
-	}
-
-	prefixComment = 1 | CONTENT ELEMENT, uid:{field:uid}/{field:CType}
-}
-
-
-
-# *****************
-# CType: header
-# *****************
-# See Object path "lib.stdheader"
-tt_content.header = COA
-tt_content.header {
-	10 = < lib.stdheader
-
-	20 = TEXT
-	20 {
-		field = subheader
-		required = 1
-
-		dataWrap = <p class="csc-subheader csc-subheader-{field:layout}">|</p>
-		htmlSpecialChars = 1
-
-		if {
-			value = html5
-			equals.data = TSFE:config|config|doctype
-			negate = 1
-		}
-
-		editIcons = tt_content:subheader,layout
-		editIcons.beforeLastTag = 1
-		editIcons.iconTitle.data = LLL:EXT:css_styled_content/Resources/Private/Language/locallang.xlf:eIcon.subheader
-
-		prefixComment = 2 | Subheader:
-	}
-}
-
-
-
-# *****************
-# CType: text
-# *****************
-tt_content.text = COA
-tt_content.text {
-	10 = < lib.stdheader
-
-	20 = TEXT
-	20 {
-		field = bodytext
-		required = 1
-
-		parseFunc = < lib.parseFunc_RTE
-
-		editIcons = tt_content:bodytext
-		editIcons.beforeLastTag = 1
-		editIcons.iconTitle.data = LLL:EXT:css_styled_content/Resources/Private/Language/locallang.xlf:eIcon.bodytext
-
-		prefixComment = 2 | Text:
-	}
-}
-
-
-
-# *****************
-# CType: image
-# *****************
-# (also used for rendering 'textpic' type):
-tt_content.image = COA
-tt_content.image.10 = < lib.stdheader
-tt_content.image.20 = USER
-tt_content.image.20 {
-	userFunc = TYPO3\CMS\CssStyledContent\Controller\CssStyledContentController->render_textpic
-
-	preRenderRegisters {
-		// To optimize performance we load all image captions into a register
-		// because we need to know if at least one image has a caption at
-		// multiple places to determine the render method.
-		allImageCaptions.cObject = FILES
-		allImageCaptions.cObject {
-			references {
-				table = tt_content
-				fieldName = image
-			}
-			renderObj = TEXT
-			renderObj.data = file:current:description
-		}
-	}
-
-	# Image source
-	imgList.cObject = FILES
-	imgList.cObject {
-		references < tt_content.image.20.preRenderRegisters.allImageCaptions.cObject.references
-		renderObj = TEXT
-		renderObj.data = file:current:uid
-		renderObj.wrap = |,
-	}
-	imgPath = uploads/pics/
-
-	// This needs to be set because the UID list generated in the imgList
-	// setting contains UIDs of file references (not files).
-	imgListContainsReferenceUids = 1
-
-	# Single image rendering
-	imgObjNum = 1
-	1 {
-		file.import.data = file:current:uid
-		file.treatIdAsReference = 1
-		file.width.field = imagewidth
-
-		layoutKey = {$styles.content.imgtext.layoutKey}
-		layout {
-			default {
-				element = <img src="###SRC###" width="###WIDTH###" height="###HEIGHT###"###PARAMS######ALTPARAMS######BORDER######SELFCLOSINGTAGSLASH###>
-			}
-			srcset {
-				element = <img src="###SRC###" srcset="###SOURCECOLLECTION###"###PARAMS######ALTPARAMS######SELFCLOSINGTAGSLASH###>
-				source = |*|###SRC### ###SRCSETCANDIDATE###,|*|###SRC### ###SRCSETCANDIDATE###
-			}
-			picture {
-				element = <picture>###SOURCECOLLECTION###<img src="###SRC###"###PARAMS######ALTPARAMS######SELFCLOSINGTAGSLASH###></picture>
-				source = <source srcset="###SRC###" media="###MEDIAQUERY###"###SELFCLOSINGTAGSLASH###>
-			}
-			data {
-				element = <img src="###SRC###"###SOURCECOLLECTION######PARAMS######ALTPARAMS######SELFCLOSINGTAGSLASH###>
-				source = data-###DATAKEY###="###SRC###"
-				source.noTrimWrap = ; ;;
-				source.noTrimWrap.splitChar = ;
-			}
-		}
-		# Default sourceCollection as an example
-		# Please write your own sourceCollection (highly recommended)
-		sourceCollection {
-			small {
-				width = 200
-
-				srcsetCandidate = 600w
-				mediaQuery = (max-device-width: 600px)
-				dataKey = small
-			}
-			smallRetina {
-				if {
-					value = {$styles.content.imgtext.layoutKey}
-					equals = default
-					negate = 1
-				}
-
-				width = 200
-				pixelDensity = 2
-
-				srcsetCandidate = 600w 2x
-				mediaQuery = (max-device-width: 600px) AND (min-resolution: 192dpi)
-				dataKey = smallRetina
-			}
-		}
-
-		imageLinkWrap = 1
-		imageLinkWrap {
-			bodyTag = <body style="margin:0; background:#fff;">
-			wrap = <a href="javascript:close();"> | </a>
-			width = {$styles.content.imgtext.linkWrap.width}
-			height = {$styles.content.imgtext.linkWrap.height}
-			effects = {$styles.content.imgtext.linkWrap.effects}
-			crop.data = file:current:crop
-
-			JSwindow = 1
-			JSwindow.newWindow = {$styles.content.imgtext.linkWrap.newWindow}
-			JSwindow.if.isFalse = {$styles.content.imgtext.linkWrap.lightboxEnabled}
-
-			directImageLink = {$styles.content.imgtext.linkWrap.lightboxEnabled}
-
-			enable.field = image_zoom
-			enable.ifEmpty.typolink.parameter.data = file:current:link
-			enable.ifEmpty.typolink.returnLast = url
-
-			typolink.parameter.data = file:current:link
-
-			typolink.target < lib.parseTarget
-			typolink.target =
-			typolink.target.override = {$styles.content.links.target}
-
-			typolink.extTarget < lib.parseTarget
-			typolink.extTarget =
-			typolink.extTarget.override = {$styles.content.links.extTarget}
-
-			linkParams.ATagParams.dataWrap =  class="{$styles.content.imgtext.linkWrap.lightboxCssClass}" rel="{$styles.content.imgtext.linkWrap.lightboxRelAttribute}"
-		}
-
-		altText = TEXT
-		altText {
-			data = file:current:alternative
-			stripHtml = 1
-		}
-
-		titleText < .altText
-		titleText.data = file:current:title
-
-		longdescURL {
-			parameter {
-				field = longdescURL
-				split {
-					token {
-						char = 10
-					}
-					returnKey.data = register : IMAGE_NUM_CURRENT
-				}
-			}
-		}
-
-		emptyTitleHandling = {$styles.content.imgtext.emptyTitleHandling}
-		titleInLink = {$styles.content.imgtext.titleInLink}
-		titleInLinkAndImg = {$styles.content.imgtext.titleInLinkAndImg}
-	}
-
-	textPos.field = imageorient
-	maxW = {$styles.content.imgtext.maxW}
-	maxW.override.data = register:maxImageWidth
-	maxWInText = {$styles.content.imgtext.maxWInText}
-	maxWInText.override.data = register:maxImageWidthInText
-
-	equalH.field = imageheight
-
-	image_compression.field = image_compression
-	image_effects.field = image_effects
-
-	noRows.field = image_noRows
-
-	cols.field = imagecols
-	border.field = imageborder
-
-	caption {
-		1 = COA
-		1 {
-			1 = TEXT
-			1 {
-				data = file:current:description
-				required = 1
-				htmlSpecialChars = 1
-				br = 1
-			}
-		}
-	}
-
-	captionAlign.field = imagecaption_position
-
-	// This needs to be set to TRUE because otherwise render_textpic will
-	// render a global caption which we do not have.
-	imageTextSplit = 1
-
-	borderThick = {$styles.content.imgtext.borderThick}
-	borderClass = {$styles.content.imgtext.borderClass}
-	colSpace = {$styles.content.imgtext.colSpace}
-	textMargin = {$styles.content.imgtext.textMargin}
-
-	borderSpace = {$styles.content.imgtext.borderSpace}
-	separateRows = {$styles.content.imgtext.separateRows}
-	addClasses =
-	addClassesCol =
-	addClassesCol.ifEmpty = csc-textpic-firstcol csc-textpic-lastcol
-	addClassesCol.override = csc-textpic-firstcol |*| |*| csc-textpic-lastcol
-	addClassesCol.override.if {
-		isGreaterThan.field = imagecols
-		value = 1
-	}
-
-	addClassesImage = csc-textpic-first |*| |*| csc-textpic-last
-
-	#
-	imageStdWrap.dataWrap = <div class="csc-textpic-imagewrap" style="width:{register:totalwidth}px;"> | </div>
-	imageStdWrapNoWidth.wrap = <div class="csc-textpic-imagewrap"> | </div>
-
-	# if noRows is set, wrap around each column:
-	imageColumnStdWrap.dataWrap = <div class="csc-textpic-imagecolumn" style="width:{register:columnwidth}px;"> | </div>
-
-	layout = CASE
-	layout {
-		key.field = imageorient
-		# above-center
-		default = TEXT
-		default {
-			value = <div class="csc-textpic csc-textpic-center csc-textpic-above###CLASSES###">###IMAGES######TEXT###</div>
-			override = <div class="csc-textpic csc-textpic-responsive csc-textpic-center csc-textpic-above###CLASSES###">###IMAGES######TEXT###</div>
-			override {
-				if {
-					value = default
-					equals = {$styles.content.imgtext.layoutKey}
-					negate = 1
-				}
-			}
-		}
-		# above-right
-		1 = TEXT
-		1 {
-			value = <div class="csc-textpic csc-textpic-right csc-textpic-above###CLASSES###">###IMAGES######TEXT###</div>
-			override = <div class="csc-textpic csc-textpic-responsive csc-textpic-right csc-textpic-above###CLASSES###">###IMAGES######TEXT###</div>
-			override {
-				if {
-					value = default
-					equals = {$styles.content.imgtext.layoutKey}
-					negate = 1
-				}
-			}
-		}
-		# above-left
-		2 = TEXT
-		2 {
-			value = <div class="csc-textpic csc-textpic-left csc-textpic-above###CLASSES###">###IMAGES######TEXT###</div>
-			override = <div class="csc-textpic csc-textpic-responsive csc-textpic-left csc-textpic-above###CLASSES###">###IMAGES######TEXT###</div>
-			override {
-				if {
-					value = default
-					equals = {$styles.content.imgtext.layoutKey}
-					negate = 1
-				}
-			}
-		}
-		# below-center
-		8 = TEXT
-		8 {
-			value = <div class="csc-textpic csc-textpic-center csc-textpic-below###CLASSES###">###TEXT######IMAGES###</div>
-			override = <div class="csc-textpic csc-textpic-responsive csc-textpic-center csc-textpic-below###CLASSES###">###TEXT######IMAGES###</div>
-			override {
-				if {
-					value = default
-					equals = {$styles.content.imgtext.layoutKey}
-					negate = 1
-				}
-			}
-		}
-		# below-right
-		9 = TEXT
-		9 {
-			value = <div class="csc-textpic csc-textpic-right csc-textpic-below###CLASSES###">###TEXT######IMAGES###</div>
-			override = <div class="csc-textpic csc-textpic-responsive csc-textpic-right csc-textpic-below###CLASSES###">###TEXT######IMAGES###</div>
-			override {
-				if {
-					value = default
-					equals = {$styles.content.imgtext.layoutKey}
-					negate = 1
-				}
-			}
-		}
-		# below-left
-		10 = TEXT
-		10 {
-			value = <div class="csc-textpic csc-textpic-left csc-textpic-below###CLASSES###">###TEXT######IMAGES###</div>
-			override = <div class="csc-textpic csc-textpic-responsive csc-textpic-left csc-textpic-below###CLASSES###">###TEXT######IMAGES###</div>
-			override {
-				if {
-					value = default
-					equals = {$styles.content.imgtext.layoutKey}
-					negate = 1
-				}
-			}
-		}
-		# intext-right
-		17 = TEXT
-		17 {
-			value = <div class="csc-textpic csc-textpic-intext-right###CLASSES###">###IMAGES######TEXT###</div>
-			override = <div class="csc-textpic csc-textpic-responsive csc-textpic-intext-right###CLASSES###">###IMAGES######TEXT###</div>
-			override {
-				if {
-					value = default
-					equals = {$styles.content.imgtext.layoutKey}
-					negate = 1
-				}
-			}
-		}
-		# intext-left
-		18 = TEXT
-		18 {
-			value = <div class="csc-textpic csc-textpic-intext-left###CLASSES###">###IMAGES######TEXT###</div>
-			override = <div class="csc-textpic csc-textpic-responsive csc-textpic-intext-left###CLASSES###">###IMAGES######TEXT###</div>
-			override {
-				if {
-					value = default
-					equals = {$styles.content.imgtext.layoutKey}
-					negate = 1
-				}
-			}
-		}
-		# intext-right-nowrap
-		25 = TEXT
-		25 {
-			value = <div class="csc-textpic csc-textpic-intext-right-nowrap###CLASSES###">###IMAGES######TEXT###</div>
-			override = <div class="csc-textpic csc-textpic-responsive csc-textpic-intext-right-nowrap###CLASSES###">###IMAGES######TEXT###</div>
-			override {
-				if {
-					value = default
-					equals = {$styles.content.imgtext.layoutKey}
-					negate = 1
-				}
-			}
-		}
-		# intext-left-nowrap
-		26 = TEXT
-		26 {
-			value = <div class="csc-textpic csc-textpic-intext-left-nowrap###CLASSES###">###IMAGES######TEXT###</div>
-			override = <div class="csc-textpic csc-textpic-responsive csc-textpic-intext-left-nowrap###CLASSES###">###IMAGES######TEXT###</div>
-			override {
-				if {
-					value = default
-					equals = {$styles.content.imgtext.layoutKey}
-					negate = 1
-				}
-			}
-		}
-	}
-
-	rendering {
-		# Single image - No caption
-		singleNoCaption {
-			# Choose another rendering for special edge cases
-			fallbackRendering = COA
-			fallbackRendering {
-				# Single image - Caption
-				10 = TEXT
-				10 {
-					if {
-						isTrue.data = file:current:description
-						value = 1
-						equals.data = register:imageCount
-					}
-					value = singleCaption
-				}
-
-				# Multiple images and split caption
-				20 = TEXT
-				20 {
-					if {
-						value = 1
-						isGreaterThan.data = register:imageCount
-						isTrue.if.isFalse.data = register:renderGlobalCaption
-						isTrue.data = register:allImageCaptions
-					}
-					value = splitCaption
-				}
-
-				# Multiple images and no caption at all
-				40 = TEXT
-				40 {
-					if {
-						value = 1
-						isGreaterThan.data = register:imageCount
-						isFalse.data = register:allImageCaptions
-					}
-					value = noCaption
-				}
-			}
-			allStdWrap {
-				dataWrap = <div class="csc-textpic-imagewrap"> | </div>
-				dataWrap {
-					override = <div class="csc-textpic-imagewrap" data-csc-images="{register:imageCount}" data-csc-cols="{field:imagecols}"> | </div>
-					override {
-						if {
-							value = html5
-							equals.data = TSFE:config|config|doctype
-						}
-					}
-				}
-				innerWrap.cObject = CASE
-				innerWrap.cObject {
-					key.field = imageorient
-					# above-center
-					0 = TEXT
-					0.value = <div class="csc-textpic-center-outer"><div class="csc-textpic-center-inner"> | </div></div>
-					# below-center
-					8 < .0
-				}
-			}
-			singleStdWrap {
-				wrap = <div class="csc-textpic-image###CLASSES###"> | </div>
-				wrap {
-					override = <figure class="csc-textpic-image###CLASSES###"> | </figure>
-					override {
-						if {
-							value = html5
-							equals.data = TSFE:config|config|doctype
-						}
-					}
-				}
-			}
-			rowStdWrap.wrap = |
-			noRowsStdWrap.wrap = |
-			lastRowStdWrap.wrap = |
-			columnStdWrap.wrap = |
-			imgTagStdWrap.wrap = |
-			editIconsStdWrap.wrap = <div> | </div>
-			caption.wrap = |
-		}
-		noCaption {
-			# Multiple images and no caption at all
-			fallbackRendering < tt_content.image.20.rendering.singleNoCaption.fallbackRendering.10
-			allStdWrap {
-				dataWrap = <div class="csc-textpic-imagewrap"> | </div>
-				dataWrap {
-					override = <div class="csc-textpic-imagewrap" data-csc-images="{register:imageCount}" data-csc-cols="{field:imagecols}"> | </div>
-					override {
-						if {
-							value = html5
-							equals.data = TSFE:config|config|doctype
-						}
-					}
-				}
-			}
-			singleStdWrap {
-				wrap = <div class="csc-textpic-image###CLASSES###"> | </div>
-				wrap {
-					override = <figure class="csc-textpic-image###CLASSES###"> | </figure>
-				}
-			}
-			rowStdWrap.wrap = <div class="csc-textpic-imagerow"> | </div>
-			noRowsStdWrap.wrap = <div class="csc-textpic-imagerow csc-textpic-imagerow-none"> | </div>
-			lastRowStdWrap.wrap = <div class="csc-textpic-imagerow csc-textpic-imagerow-last"> | </div>
-			columnStdWrap.wrap = <div class="csc-textpic-imagecolumn###CLASSES###"> | </div>
-		}
-		singleCaption {
-			# Just one image with a caption
-			fallbackRendering < tt_content.image.20.rendering.singleNoCaption.fallbackRendering.10
-			singleStdWrap {
-				wrap = <div class="csc-textpic-image###CLASSES###"><table>###CAPTION###<tbody><tr><td> | </td></tr></tbody></table></div>
-				wrap {
-					override = <figure class="csc-textpic-image###CLASSES###">|###CAPTION###</figure>
-					override {
-						if {
-							value = html5
-							equals.data = TSFE:config|config|doctype
-						}
-					}
-				}
-			}
-			caption {
-				required = 1
-				wrap = <caption class="csc-textpic-caption###CLASSES###"> | </caption>
-				wrap {
-					override = <figcaption class="csc-textpic-caption###CLASSES###"> | </figcaption>
-					override {
-						if {
-							value = html5
-							equals.data = TSFE:config|config|doctype
-						}
-					}
-				}
-			}
-		}
-		splitCaption {
-			fallbackRendering < tt_content.image.20.rendering.singleNoCaption.fallbackRendering.10
-			singleStdWrap {
-				wrap = <div class="csc-textpic-image###CLASSES###"><table>###CAPTION###<tbody><tr><td> | </td></tr></tbody></table></div>
-				wrap {
-					override = <figure class="csc-textpic-image###CLASSES###">|###CAPTION###</figure>
-					override {
-						if {
-							value = html5
-							equals.data = TSFE:config|config|doctype
-						}
-					}
-				}
-			}
-			rowStdWrap.wrap = <div class="csc-textpic-imagerow"> | </div>
-			noRowsStdWrap.wrap = <div class="csc-textpic-imagerow csc-textpic-imagerow-none"> | </div>
-			lastRowStdWrap.wrap = <div class="csc-textpic-imagerow csc-textpic-imagerow-last"> | </div>
-			columnStdWrap.wrap = <div class="csc-textpic-imagecolumn###CLASSES###"> | </div>
-			caption {
-				required = 1
-				wrap = <caption class="csc-textpic-caption###CLASSES###"> | </caption>
-				wrap {
-					override = <figcaption class="csc-textpic-caption###CLASSES###"> | </figcaption>
-					override {
-						if {
-							value = html5
-							equals.data = TSFE:config|config|doctype
-						}
-					}
-				}
-			}
-		}
-	}
-	renderMethod = singleNoCaption
-
-	editIcons = tt_content : image [imageorient|imagewidth|imageheight],[imagecols|image_noRows|imageborder],[image_zoom],[image_compression|image_effects|image_frames],[imagecaption_position]
-	editIcons.iconTitle.data = LLL:EXT:css_styled_content/Resources/Private/Language/locallang.xlf:eIcon.images
-
-	caption.editIcons = tt_content : imagecaption_position
-	caption.editIcons.beforeLastTag=1
-	caption.editIcons.iconTitle.data = LLL:EXT:css_styled_content/Resources/Private/Language/locallang.xlf:eIcon.caption_position
-
-	stdWrap.prefixComment = 2 | Image block:
-}
-
-# *****************
-# CType: textpic
-# *****************
-tt_content.textpic = COA
-tt_content.textpic {
-	10 = COA
-	10.if.value = 25
-	10.if.isLessThan.field = imageorient
-	10.10 = < lib.stdheader
-
-	20  = < tt_content.image.20
-	20 {
-		text.10 = COA
-		text.10 {
-			if.value = 24
-			if.isGreaterThan.field = imageorient
-			10 = < lib.stdheader
-			10.stdWrap.dataWrap = <div class="csc-textpicHeader csc-textpicHeader-{field:imageorient}">|</div>
-		}
-		text.20 = < tt_content.text.20
-		text.wrap = <div class="csc-textpic-text"> | </div>
-	}
-}
-
-
-
-# *****************
-# CType: bullet
-# *****************
-tt_content.bullets = COA
-tt_content.bullets {
-	10 = < lib.stdheader
-
-	20 = TEXT
-	20 {
-		field = bodytext
-		trim = 1
-		split{
-			token.char = 10
-			cObjNum = |*|1|| 2|*|
-			1.current = 1
-			1.htmlSpecialChars = 1
-			1.wrap = <li class="odd">|</li>
-
-			2.current = 1
-			2.htmlSpecialChars = 1
-			2.wrap = <li class="even">|</li>
-		}
-		dataWrap = <ul class="csc-bulletlist csc-bulletlist-{field:layout}">|</ul>
-	 	editIcons = tt_content: bodytext, [layout]
-	 	editIcons.beforeLastTag = 1
-	 	editIcons.iconTitle.data = LLL:EXT:css_styled_content/pi1/locallang.xlf:eIcon.bullets
-
-	 	prefixComment = 2 | Bullet list:
-	}
-}
-
-
-# *****************
-# CType: uploads
-# *****************
-tt_content.uploads = COA
-tt_content.uploads {
-	10 = < lib.stdheader
-
-	20 = FILES
-	20 {
-		# get from file references:
-		references {
-			table = tt_content
-			fieldName = media
-		}
-
-		collections.field = file_collections
-
-		sorting.field = filelink_sorting
-
-		# render the files
-		renderObj = COA
-		renderObj {
-			10 = IMAGE
-			10 {
-				file.import.data = file:current:originalUid // file:current:uid
-				file.width = 150
-				stdWrap {
-					if.value = 1
-					if.isGreaterThan.field = layout
-
-					typolink {
-						parameter.data = file:current:originalUid // file:current:uid
-						parameter.wrap = file:|
-						fileTarget < lib.parseTarget
-						fileTarget =
-						fileTarget.override = {$styles.content.uploads.target}
-						fileTarget.override.override.field = target
-						removePrependedNumbers = 1
-
-						title {
-							data = file:current:title
-							htmlSpecialChars = 1
-						}
-
-						/*
-						jumpurl = {$styles.content.uploads.jumpurl}
-						jumpurl {
-							secure = {$styles.content.uploads.jumpurl_secure}
-							secure.mimeTypes = {$styles.content.uploads.jumpurl_secure_mimeTypes}
-						}
-						*/
-					}
-				}
-			}
-
-			# icon
-			15 = IMAGE
-			15 {
-				file.import.data = file:current:extension
-				file.import.case = lower
-				file.import.dataWrap = {path:EXT:frontend/Resources/Public/Icons/FileIcons/}|.gif
-				stdWrap {
-					if {
-						value = 0
-						isGreaterThan.field = layout
-
-						# only show the icon if we don't have a thumbnail:
-						isFalse.cObject = IMG_RESOURCE
-						isFalse.cObject.file < tt_content.uploads.20.renderObj.10.file
-						isFalse.cObject.stdWrap.if < tt_content.uploads.20.renderObj.10.stdWrap.if
-					}
-
-					typolink < tt_content.uploads.20.renderObj.10.stdWrap.typolink
-				}
-			}
-
-			# filename
-			20 = TEXT
-			20 {
-				data = file:current:title // file:current:name
-				htmlSpecialChars = 1
-				required = 1
-
-				replacement {
-					# equivalent to former useSpacesInLinkText = 0; remove using > to disable it
-					10 {
- 						search = _
- 						replace.char = 32
-					}
-
-					# equivalent to former stripFileExtensionFromLinkText = 0; move "_20" to "20" to enable it. Disabled by default.
-					_20 {
-						search = /(.*)(\..*)/
-						replace = \1
-						useRegExp = 1
-					}
-				}
-
-				typolink < tt_content.uploads.20.renderObj.10.stdWrap.typolink
-
-				wrap = <span class="csc-uploads-fileName">|</span>
-			}
-
-			# description
-			30 = TEXT
-			30 {
-				data = file:current:description
-				htmlSpecialChars = 1
-				wrap = <span class="csc-uploads-description">|</span>
-
-				required = 1
-			}
-
-			# file size
-			40 = TEXT
-			40 {
-				if.isTrue.field = filelink_size
-				data = file:current:size
-				wrap = <span class="csc-uploads-fileSize">|</span>
-				bytes = 1
-				bytes.labels = {$styles.content.uploads.filesizeBytesLabels}
-			}
-
-			# wrap of each listed file with odd/even class
-			wrap.cObject = COA
-			wrap.cObject {
-				10 = LOAD_REGISTER
-				10 {
-					oddEvenClass = li-odd li-first |*| li-even || li-odd
-					elementClass = csc-uploads-element csc-uploads-element-{file:current:extension}
-					elementClass.insertData = 1
-				}
-
-				20 = TEXT
-				20 {
-					value = <li class="{register:oddEvenClass} {register:elementClass}">|</li>
-					insertData = 1
-				}
-				30 = RESTORE_REGISTER
-			}
-		}
-
-		# wrap around whole content element with <ul> and editIcons
-		stdWrap {
-			editIcons = tt_content: media, layout [table_bgColor|table_border|table_cellspacing|table_cellpadding], filelink_size
-			editIcons.iconTitle.data = LLL:EXT:css_styled_content/Resources/Private/Language/locallang.xlf:eIcon.filelist
-			prefixComment = 2 | Filelist:
-			dataWrap = <ul class="csc-uploads csc-uploads-{field:layout}">|</ul>
-		}
-	}
-}
-
-
-
-# *****************
-# CType: table
-# *****************
-# Rendered by a PHP function specifically written to handle CE tables. See EXT:css_styled_content/Classes/Controller/CssStyledContentController.php
-tt_content.table = COA
-tt_content.table {
-	10 = < lib.stdheader
-
-	20 = USER
-	20.userFunc = TYPO3\CMS\CssStyledContent\Controller\CssStyledContentController->render_table
-	20.field = bodytext
-
-	20.color {
-		default =
-		1 = {$styles.content.table.backgroundColor.1}
-		2 = {$styles.content.table.backgroundColor.2}
-		200 =
-		240 = {$styles.content.table.backgroundColor.240}
-		241 = {$styles.content.table.backgroundColor.241}
-		242 = {$styles.content.table.backgroundColor.242}
-		243 = {$styles.content.table.backgroundColor.243}
-		244 = {$styles.content.table.backgroundColor.244}
-	}
-	20.tableParams_0 {
-		border =
-		cellpadding =
-		cellspacing =
-	}
-	20.tableParams_1 {
-		border =
-		cellpadding =
-		cellspacing =
-	}
-	20.tableParams_2 {
-		border =
-		cellpadding =
-		cellspacing =
-	}
-	20.tableParams_3 {
-		border =
-		cellpadding =
-		cellspacing =
-	}
-	20.innerStdWrap.wrap = |
-	20.innerStdWrap.htmlSpecialChars = 1
-	20.innerStdWrap.br = 1
-
-	20.stdWrap {
-		editIcons = tt_content: cols, bodytext, [layout], [table_bgColor|table_border|table_cellspacing|table_cellpadding]
-		editIcons.beforeLastTag = 1
-		editIcons.iconTitle.data = LLL:EXT:css_styled_content/Resources/Private/Language/locallang.xlf:eIcon.table
-
-		prefixComment = 2 | Table:
-	}
-}
-
-# ****************
-# CType: menu
-# ****************
-tt_content.menu = COA
-tt_content.menu {
-	10 = < lib.stdheader
-
-	20 = CASE
-	20 {
-		key.field = menu_type
-
-		# "Menu of these pages"
-		default = HMENU
-		default {
-			special = list
-			special.value.field = pages
-			stdWrap {
-				prepend = COA
-				prepend {
-					stdWrap {
-						if.isTrue.field = accessibility_bypass
-					}
-					10 = LOAD_REGISTER
-					10 {
-						accessibility_bypass_text = TEXT
-						accessibility_bypass_text {
-							field = accessibility_bypass_text
-						}
-					}
-					20 = CONTENT
-					20 {
-						table = tt_content
-						select {
-							pidInList = this
-							orderBy = sorting
-							where {
-								dataWrap = sorting>{field:sorting}
-							}
-							languageField = sys_language_uid
-							max = 1
-						}
-						renderObj = TEXT
-						renderObj {
-							required = 1
-							data = LLL:EXT:css_styled_content/Resources/Private/Language/locallang.xlf:menu.bypassNavigation
-							override.data = register:accessibility_bypass_text
-							trim = 1
-							htmlSpecialChars = 1
-							typolink {
-								parameter {
-									field = pid
-								}
-								section {
-									field = uid
-								}
-							}
-							wrap = <li class="csc-nav-bypass">|</li>
-						}
-					}
-					30 = RESTORE_REGISTER
-				}
-				outerWrap = <ul class="csc-menu csc-menu-def">|</ul>
-				required = 1
-			}
-			1 = TMENU
-			1 {
-				target < lib.parseTarget
-				target =
-				target.override = {$PAGE_TARGET}
-				NO {
-					stdWrap.htmlSpecialChars = 1
-					wrapItemAndSub = <li>|</li>
-					ATagTitle.field = description // title
-				}
-			}
-		}
-
-		# "Menu of subpages to these pages"
-		1 < .default
-		1 {
-			special = directory
-			stdWrap {
-				outerWrap = <ul class="csc-menu csc-menu-1">|</ul>
-			}
-		}
-
-		# "Sitemap - liststyle"
-		2 = HMENU
-		2 {
-			stdWrap < tt_content.menu.20.default.stdWrap
-			stdWrap {
-				outerWrap = <div class="csc-sitemap">|</div>
-			}
-			1 = TMENU
-			1 {
-				target < lib.parseTarget
-				target =
-				target.override = {$PAGE_TARGET}
-				expAll = 1
-				wrap = <ul>|</ul>
-				NO {
-					stdWrap.htmlSpecialChars = 1
-					wrapItemAndSub = <li>|</li>
-					ATagTitle.field = description // title
-				}
-			}
-			2 < .1
-			3 < .1
-			4 < .1
-			5 < .1
-			6 < .1
-			7 < .1
-		}
-
-		# "Section index (pagecontent w/Index checked - liststyle)"
-		3 < .default
-		3 {
-			special {
-				value {
-					override {
-						data = page:uid
-						if {
-							isFalse.field = pages
-						}
-					}
-				}
-			}
-			stdWrap {
-				outerWrap = <ul class="csc-menu csc-menu-3">|</ul>
-			}
-			1 = TMENU
-			1 {
-				sectionIndex = 1
-				sectionIndex.type = header
-				NO.wrapItemAndSub = <li class="csc-section">|</li>
-			}
-		}
-
-		# "Menu of subpages to these pages (with abstract)"
-		4 < .1
-		4 {
-			stdWrap {
-				prepend.20.renderObj.wrap = <dt class="csc-nav-bypass">|</dt><dd>&nbsp;</dd>
-				outerWrap = <dl class="csc-menu csc-menu-4">|</dl>
-			}
-			1.NO {
-				wrapItemAndSub >
-				linkWrap = <dt>|</dt>
-				after {
-					cObject = TEXT
-					cObject {
-						data = field : abstract // field : description // field : subtitle
-						htmlSpecialChars = 1
-						required = 1
-					}
-					ifBlank = &nbsp;
-					wrap = <dd>|</dd>
-				}
-				ATagTitle.field = description // title
-			}
-		}
-
-		# "Recently updated pages"
-		5 < .default
-		5 {
-			stdWrap {
-				outerWrap = <ul class="csc-menu csc-menu-5">|</ul>
-			}
-			special = updated
-			special {
-				maxAge = 3600*24*7
-				excludeNoSearchPages = 1
-			}
-		}
-
-		# "Related pages (based on keywords)"
-		6 < .default
-		6 {
-			stdWrap {
-				outerWrap = <ul class="csc-menu csc-menu-6">|</ul>
-			}
-			special = keywords
-			special {
-				excludeNoSearchPages = 1
-			}
-		}
-
-		# "Menu of subpages to these pages + sections - liststyle"
-		7 < .1
-		7 {
-			stdWrap {
-				outerWrap = <ul class="csc-menu csc-menu-7">|</ul>
-			}
-			1.expAll = 1
-			2 < .1
-			2 {
-				sectionIndex = 1
-				sectionIndex.type = header
-				wrap = <ul>|</ul>
-				NO.wrapItemAndSub = <li class="csc-section">|</li>
-			}
-		}
-
-		# "Sitemaps of selected pages - liststyle"
-		8 < .2
-		8 {
-			special = directory
-			special.value.field = pages
-		}
-
-		# Menu of categorized pages
-		categorized_pages < .default
-		categorized_pages {
-			special = categories
-			special.value.field = selected_categories
-			special.relation.field = category_field
-			special.sorting = title
-			special.order = asc
-			stdWrap {
-				outerWrap = <ul class="csc-menu csc-menu-categorized-pages">|</ul>
-			}
-		}
-
-		# Menu of categorized content elements
-		categorized_content = RECORDS
-		categorized_content {
-			categories.field = selected_categories
-			categories.relation.field = category_field
-			tables = tt_content
-			conf.tt_content = TEXT
-			conf.tt_content {
-				field = header
-				typolink.parameter = {field:pid}#{field:uid}
-				typolink.parameter.insertData = 1
-				wrap = <li>|</li>
-			}
-			wrap = <ul>|</ul>
-		}
-	}
-
-	20.stdWrap {
-		wrap {
-			cObject = COA
-			cObject {
-				10 = TEXT
-				10 {
-					field = accessibility_title
-					htmlSpecialChars = 1
-					dataWrap = <map id="map{field:uid}" title="|">
-					dataWrap {
-						override = <map name="map{field:uid}" title="|">
-						override {
-							if {
-								isFalse.data = TSFE:xhtmlDoctype
-							}
-						}
-					}
-				}
-
-				20 = TEXT
-				20 {
-					value = |</map>
-				}
-			}
-			if {
-				isTrue {
-					field = accessibility_title
-				}
-			}
-		}
-		editIcons = tt_content: menu_type, pages
-		editIcons.iconTitle.data = LLL:EXT:css_styled_content/Resources/Private/Language/locallang.xlf:eIcon.menuSitemap
-
-		prefixComment = 2 | Menu/Sitemap element:
-	}
-}
-
-
-
-# ****************
-# CType: shortcut
-# ****************
-# Should be a complete copy from the old static template "content (default)"
-tt_content.shortcut = COA
-tt_content.shortcut {
-
-	20 = RECORDS
-	20 {
-		source.field = records
-		tables = {$content.shortcut.tables}
-	}
-
-	20.stdWrap {
-		editIcons = tt_content: records
-		editIcons.iconTitle.data = LLL:EXT:css_styled_content/Resources/Private/Language/locallang.xlf:eIcon.recordList
-
-		prefixComment = 2 | Inclusion of other records (by reference):
-	}
-}
-
-
-# ****************
-# CType: list
-# ****************
-# Should be a complete copy from the old static template "content (default)" (except "lib.stdheader")
-tt_content.list = COA
-tt_content.list {
-	10 = < lib.stdheader
-
-	20 = CASE
-	20.key.field = list_type
-
-	20.stdWrap {
-		editIcons = tt_content: list_type, layout, pages [recursive]
-		editIcons.iconTitle.data = LLL:EXT:css_styled_content/Resources/Private/Language/locallang.xlf:eIcon.plugin
-
-		prefixComment = 2 | Plugin inserted:
-	}
-}
-
-
-# ****************
-# CType: div
-# ****************
-tt_content.div = TEXT
-tt_content.div {
-	value = <hr>
-	override = <hr />
-	override.if {
-		isTrue.data = TSFE:xhtmlDoctype
-	}
-	wrap = <div class="divider">|</div>
-	prefixComment = 2 | Div element
-}
-
-
-# ****************
-# CType: html
-# ****************
-# This truely IS a content object, launched from inside the PHP class of course.
-# Should be a complete copy from the old static template "content (default)"
-tt_content.html = TEXT
-tt_content.html {
-	field = bodytext
-
-	editIcons = tt_content:bodytext
-	editIcons.beforeLastTag = 1
-	editIcons.iconTitle.data = LLL:EXT:css_styled_content/Resources/Private/Language/locallang.xlf:eIcon.html
-
-	prefixComment = 2 | Raw HTML content:
-}
-
-
-# ****************
-# Default error msg:
-# ****************
-tt_content.default = TEXT
-tt_content.default {
-	field = CType
-	wrap = <p style="background-color: yellow;"><b>ERROR:</b> Content Element type "|" has no rendering definition!</p>
-	htmlSpecialChars = 1
-
-	prefixComment = 2 | Unknown element message:
-}
-
-# *********************************************************************
-# ACCESSIBILITY MODE
-# *********************************************************************
-
-plugin.tx_cssstyledcontent._CSS_DEFAULT_STYLE (
-	/* Headers */
-	.csc-header-alignment-center { text-align: center; }
-	.csc-header-alignment-right { text-align: right; }
-	.csc-header-alignment-left { text-align: left; }
-
-	div.csc-textpic-responsive, div.csc-textpic-responsive * { -moz-box-sizing: border-box; -webkit-box-sizing: border-box; box-sizing: border-box;  }
-
-	/* Clear floats after csc-textpic and after csc-textpic-imagerow */
-	div.csc-textpic, div.csc-textpic div.csc-textpic-imagerow, ul.csc-uploads li { overflow: hidden; }
-
-	/* Set padding for tables */
-	div.csc-textpic .csc-textpic-imagewrap table { border-collapse: collapse; border-spacing: 0; }
-	div.csc-textpic .csc-textpic-imagewrap table tr td { padding: 0; vertical-align: top; }
-
-	/* Settings for figure and figcaption (HTML5) */
-	div.csc-textpic .csc-textpic-imagewrap figure, div.csc-textpic figure.csc-textpic-imagewrap { margin: 0; display: table; }
-
-	/* Captions */
-	figcaption.csc-textpic-caption { display: table-caption; }
-	.csc-textpic-caption { text-align: left; caption-side: bottom; }
-	div.csc-textpic-caption-c .csc-textpic-caption, .csc-textpic-imagewrap .csc-textpic-caption-c { text-align: center; }
-	div.csc-textpic-caption-r .csc-textpic-caption, .csc-textpic-imagewrap .csc-textpic-caption-r { text-align: right; }
-	div.csc-textpic-caption-l .csc-textpic-caption, .csc-textpic-imagewrap .csc-textpic-caption-l { text-align: left; }
-
-	/* Float the columns */
-	div.csc-textpic div.csc-textpic-imagecolumn { float: left; }
-
-	/* Border just around the image */
-	{$styles.content.imgtext.borderSelector} {
-		border: {$styles.content.imgtext.borderThick}px solid {$styles.content.imgtext.borderColor};
-		padding: {$styles.content.imgtext.borderSpace}px {$styles.content.imgtext.borderSpace}px;
-	}
-
-	div.csc-textpic .csc-textpic-imagewrap img { border: none; display: block; }
-
-	/* Space below each image (also in-between rows) */
-	div.csc-textpic .csc-textpic-imagewrap .csc-textpic-image { margin-bottom: {$styles.content.imgtext.rowSpace}px; }
-	div.csc-textpic .csc-textpic-imagewrap .csc-textpic-imagerow-last .csc-textpic-image { margin-bottom: 0; }
-
-	/* colSpace around image columns, except for last column */
-	div.csc-textpic-imagecolumn, td.csc-textpic-imagecolumn .csc-textpic-image { margin-right: {$styles.content.imgtext.colSpace}px; }
-	div.csc-textpic-imagecolumn.csc-textpic-lastcol, td.csc-textpic-imagecolumn.csc-textpic-lastcol .csc-textpic-image { margin-right: 0; }
-
-	/* Add margin from image-block to text (in case of "Text & Images") */
-	div.csc-textpic-intext-left .csc-textpic-imagewrap,
-	div.csc-textpic-intext-left-nowrap .csc-textpic-imagewrap {
-		margin-right: {$styles.content.imgtext.textMargin}px;
-	}
-	div.csc-textpic-intext-right .csc-textpic-imagewrap,
-	div.csc-textpic-intext-right-nowrap .csc-textpic-imagewrap {
-		margin-left: {$styles.content.imgtext.textMargin}px;
-	}
-
-	/* Positioning of images: */
-
-	/* Center (above or below) */
-	div.csc-textpic-center .csc-textpic-imagewrap, div.csc-textpic-center figure.csc-textpic-imagewrap { overflow: hidden; }
-	div.csc-textpic-center .csc-textpic-center-outer { position: relative; float: right; right: 50%; }
-	div.csc-textpic-center .csc-textpic-center-inner { position: relative; float: right; right: -50%; }
-
-	/* Right (above or below) */
-	div.csc-textpic-right .csc-textpic-imagewrap { float: right; }
-	div.csc-textpic-right div.csc-textpic-text { clear: right; }
-
-	/* Left (above or below) */
-	div.csc-textpic-left .csc-textpic-imagewrap { float: left; }
-	div.csc-textpic-left div.csc-textpic-text { clear: left; }
-
-	/* Left (in text) */
-	div.csc-textpic-intext-left .csc-textpic-imagewrap { float: left; }
-
-	/* Right (in text) */
-	div.csc-textpic-intext-right .csc-textpic-imagewrap { float: right; }
-
-	/* Right (in text, no wrap around) */
-	div.csc-textpic-intext-right-nowrap .csc-textpic-imagewrap { float: right; }
-
-	/* Left (in text, no wrap around) */
-	div.csc-textpic-intext-left-nowrap .csc-textpic-imagewrap { float: left; }
-
-	div.csc-textpic div.csc-textpic-imagerow-last, div.csc-textpic div.csc-textpic-imagerow-none div.csc-textpic-last { margin-bottom: 0; }
-
-	/* Browser fixes: */
-
-	/* Fix for unordered and ordered list with image "In text, left" */
-	.csc-textpic-intext-left ol, .csc-textpic-intext-left ul { padding-left: 40px; overflow: auto; }
-
-	/* File Links */
-	ul.csc-uploads { padding: 0; }
-	ul.csc-uploads li { list-style: none outside none; margin: 1em 0; }
-	ul.csc-uploads img { float: left; margin-right: 1em; vertical-align: top; }
-	ul.csc-uploads span { display: block; }
-	ul.csc-uploads span.csc-uploads-fileName { text-decoration: underline; }
-
-	/* Table background colors: */
-
-	table.contenttable-color-1 { background-color: {$styles.content.table.backgroundColor.1}; }
-	table.contenttable-color-2 { background-color: {$styles.content.table.backgroundColor.2}; }
-	table.contenttable-color-240 { background-color: {$styles.content.table.backgroundColor.240}; }
-	table.contenttable-color-241 { background-color: {$styles.content.table.backgroundColor.241}; }
-	table.contenttable-color-242 { background-color: {$styles.content.table.backgroundColor.242}; }
-	table.contenttable-color-243 { background-color: {$styles.content.table.backgroundColor.243}; }
-	table.contenttable-color-244 { background-color: {$styles.content.table.backgroundColor.244}; }
-)
diff --git a/typo3/sysext/extensionmanager/Classes/Domain/Model/Extension.php b/typo3/sysext/extensionmanager/Classes/Domain/Model/Extension.php
index 7606e2b1389f6f7cb75e10879d6e566146166cf8..21bb5833c2e87f66e8d1ed8c1bd421cae68420d7 100644
--- a/typo3/sysext/extensionmanager/Classes/Domain/Model/Extension.php
+++ b/typo3/sysext/extensionmanager/Classes/Domain/Model/Extension.php
@@ -55,6 +55,7 @@ class Extension extends \TYPO3\CMS\Extbase\DomainObject\AbstractEntity
         4 => 'test',
         5 => 'obsolete',
         6 => 'excludeFromUpdates',
+        7 => 'deprecated',
         999 => 'n/a'
     ];
 
diff --git a/typo3/sysext/felogin/Configuration/TCA/Overrides/tt_content.php b/typo3/sysext/felogin/Configuration/TCA/Overrides/tt_content.php
index 823ed44bef0bcd0ad8cdb16727376472eb2ac173..1070a25b94fd89365b26f636d2d649ff29d9f98b 100644
--- a/typo3/sysext/felogin/Configuration/TCA/Overrides/tt_content.php
+++ b/typo3/sysext/felogin/Configuration/TCA/Overrides/tt_content.php
@@ -42,7 +42,7 @@ call_user_func(function () {
     $GLOBALS['TCA']['tt_content']['types']['login']['showitem'] = '
         --div--;LLL:EXT:core/Resources/Private/Language/Form/locallang_tabs.xlf:general,
             --palette--;LLL:EXT:frontend/Resources/Private/Language/locallang_ttc.xlf:palette.general;general,
-            --palette--;LLL:EXT:frontend/Resources/Private/Language/locallang_ttc.xlf:palette.header;header,
+            --palette--;LLL:EXT:frontend/Resources/Private/Language/locallang_ttc.xlf:palette.headers;headers,
             pi_flexform,
         --div--;LLL:EXT:frontend/Resources/Private/Language/locallang_ttc.xlf:tabs.appearance,
             --palette--;LLL:EXT:frontend/Resources/Private/Language/locallang_ttc.xlf:palette.frames;frames,
diff --git a/typo3/sysext/fluid_styled_content/Classes/Hooks/TcaCacheClearing.php b/typo3/sysext/fluid_styled_content/Classes/Hooks/TcaCacheClearing.php
deleted file mode 100644
index 38aaeffea153078538f7e62bce2a3d2ccc02850a..0000000000000000000000000000000000000000
--- a/typo3/sysext/fluid_styled_content/Classes/Hooks/TcaCacheClearing.php
+++ /dev/null
@@ -1,34 +0,0 @@
-<?php
-namespace TYPO3\CMS\FluidStyledContent\Hooks;
-
-/*
- * This file is part of the TYPO3 CMS project.
- *
- * It is free software; you can redistribute it and/or modify it under
- * the terms of the GNU General Public License, either version 2
- * of the License, or any later version.
- *
- * For the full copyright and license information, please read the
- * LICENSE.txt file that was distributed with this source code.
- *
- * The TYPO3 project - inspiring people to share!
- */
-use TYPO3\CMS\Core\Cache\CacheManager;
-use TYPO3\CMS\Core\Utility\GeneralUtility;
-
-/**
- * Utility to clear the TCA cache
- */
-class TcaCacheClearing
-{
-    /**
-     * Flush the cache_core cache to remove cached TCA
-     *
-     * @return void
-     */
-    public function clearTcaCache()
-    {
-        $cacheManager = GeneralUtility::makeInstance(CacheManager::class);
-        $cacheManager->getCache('cache_core')->flush();
-    }
-}
diff --git a/typo3/sysext/fluid_styled_content/Classes/ViewHelpers/Link/SectionViewHelper.php b/typo3/sysext/fluid_styled_content/Classes/ViewHelpers/Link/SectionViewHelper.php
deleted file mode 100644
index 20bce37ec3eabd4177f58f3b66d93a4464f650e7..0000000000000000000000000000000000000000
--- a/typo3/sysext/fluid_styled_content/Classes/ViewHelpers/Link/SectionViewHelper.php
+++ /dev/null
@@ -1,81 +0,0 @@
-<?php
-namespace TYPO3\CMS\FluidStyledContent\ViewHelpers\Link;
-
-/*
- * This file is part of the TYPO3 CMS project.
- *
- * It is free software; you can redistribute it and/or modify it under
- * the terms of the GNU General Public License, either version 2
- * of the License, or any later version.
- *
- * For the full copyright and license information, please read the
- * LICENSE.txt file that was distributed with this source code.
- *
- * The TYPO3 project - inspiring people to share!
- */
-
-use TYPO3\CMS\Fluid\Core\ViewHelper\AbstractTagBasedViewHelper;
-use TYPO3\CMS\Frontend\Controller\TypoScriptFrontendController;
-
-/**
- * A view helper for creating a link to a section.
- * If baseUrl is used, the path part of the current URL is prefixed.
- *
- * = Example =
- *
- * <code title="section link">
- * <ce:link.section name="section">Jump to section</ce:link.section>
- * </code>
- *
- * <output>
- * <a href="#section">Jump to section</a> or
- * <a href="<path part of current URL>#section">Jump to section</a>
- * </output>
- */
-class SectionViewHelper extends AbstractTagBasedViewHelper
-{
-    /**
-     * @var string
-     */
-    protected $tagName = 'a';
-
-    /**
-     * Arguments initialization
-     *
-     * @return void
-     */
-    public function initializeArguments()
-    {
-        parent::initializeArguments();
-        $this->registerArgument('name', 'string', 'The section name to be used', true);
-        $this->registerUniversalTagAttributes();
-    }
-
-    /**
-     * Render the view helper
-     *
-     * @return string
-     */
-    public function render()
-    {
-        $fragment = '#' . $this->arguments['name'];
-
-        // Prefix with current URL path if baseUrl is used
-        if (!empty($this->getTypoScriptFrontendController()->baseUrl)) {
-            $fragment = $this->getTypoScriptFrontendController()->cObj->getUrlToCurrentLocation() . $fragment;
-        }
-
-        $this->tag->addAttribute('href', $fragment);
-        $this->tag->setContent($this->renderChildren());
-
-        return $this->tag->render();
-    }
-
-    /**
-     * @return TypoScriptFrontendController
-     */
-    protected function getTypoScriptFrontendController()
-    {
-        return $GLOBALS['TSFE'];
-    }
-}
diff --git a/typo3/sysext/fluid_styled_content/Configuration/PageTSconfig/NewContentElementWizard.ts b/typo3/sysext/fluid_styled_content/Configuration/PageTSconfig/NewContentElementWizard.ts
deleted file mode 100644
index e3497ea8bc227bad9eb428bba3763ad64dbcd50c..0000000000000000000000000000000000000000
--- a/typo3/sysext/fluid_styled_content/Configuration/PageTSconfig/NewContentElementWizard.ts
+++ /dev/null
@@ -1,87 +0,0 @@
-# *******************************************************
-# Define content elements in "New Content Element Wizard"
-# *******************************************************
-
-mod.wizards.newContentElement.wizardItems {
-	common.elements {
-		header {
-			iconIdentifier = content-header
-			title = LLL:EXT:backend/Resources/Private/Language/locallang_db_new_content_el.xlf:common_headerOnly_title
-			description = LLL:EXT:backend/Resources/Private/Language/locallang_db_new_content_el.xlf:common_headerOnly_description
-			tt_content_defValues {
-				CType = header
-			}
-		}
-		textmedia {
-			iconIdentifier = content-textmedia
-			title = LLL:EXT:backend/Resources/Private/Language/locallang_db_new_content_el.xlf:common_textMedia_title
-			description = LLL:EXT:backend/Resources/Private/Language/locallang_db_new_content_el.xlf:common_textMedia_description
-			tt_content_defValues {
-				CType = textmedia
-			}
-		}
-		bullets {
-			iconIdentifier = content-bullets
-			title = LLL:EXT:backend/Resources/Private/Language/locallang_db_new_content_el.xlf:common_bulletList_title
-			description = LLL:EXT:backend/Resources/Private/Language/locallang_db_new_content_el.xlf:common_bulletList_description
-			tt_content_defValues {
-				CType = bullets
-			}
-		}
-		table {
-			iconIdentifier = content-table
-			title = LLL:EXT:backend/Resources/Private/Language/locallang_db_new_content_el.xlf:common_table_title
-			description = LLL:EXT:backend/Resources/Private/Language/locallang_db_new_content_el.xlf:common_table_description
-			tt_content_defValues {
-				CType = table
-			}
-		}
-		uploads {
-			iconIdentifier = content-special-uploads
-			title = LLL:EXT:backend/Resources/Private/Language/locallang_db_new_content_el.xlf:special_filelinks_title
-			description = LLL:EXT:backend/Resources/Private/Language/locallang_db_new_content_el.xlf:special_filelinks_description
-			tt_content_defValues {
-				CType = uploads
-			}
-		}
-	}
-	common.show := addToList(header,textmedia,bullets,table,uploads)
-	common.show := removeFromList(text,textpic)
-
-	special.elements {
-		menu {
-			iconIdentifier = content-special-menu
-			title = LLL:EXT:backend/Resources/Private/Language/locallang_db_new_content_el.xlf:special_menus_title
-			description = LLL:EXT:backend/Resources/Private/Language/locallang_db_new_content_el.xlf:special_menus_description
-			tt_content_defValues {
-				CType = menu
-				menu_type = 0
-			}
-		}
-		html {
-			iconIdentifier = content-special-html
-			title = LLL:EXT:backend/Resources/Private/Language/locallang_db_new_content_el.xlf:special_plainHTML_title
-			description = LLL:EXT:backend/Resources/Private/Language/locallang_db_new_content_el.xlf:special_plainHTML_description
-			tt_content_defValues {
-				CType = html
-			}
-		}
-		div {
-			iconIdentifier = content-special-div
-			title = LLL:EXT:backend/Resources/Private/Language/locallang_db_new_content_el.xlf:special_divider_title
-			description = LLL:EXT:backend/Resources/Private/Language/locallang_db_new_content_el.xlf:special_divider_description
-			tt_content_defValues {
-				CType = div
-			}
-		}
-		shortcut {
-			iconIdentifier = content-special-shortcut
-			title = LLL:EXT:backend/Resources/Private/Language/locallang_db_new_content_el.xlf:special_shortcut_title
-			description = LLL:EXT:backend/Resources/Private/Language/locallang_db_new_content_el.xlf:special_shortcut_description
-			tt_content_defValues {
-				CType = shortcut
-			}
-		}
-	}
-	special.show := addToList(menu,html,div,shortcut)
-}
diff --git a/typo3/sysext/fluid_styled_content/Configuration/TCA/Overrides/pages.php b/typo3/sysext/fluid_styled_content/Configuration/TCA/Overrides/pages.php
deleted file mode 100644
index d75617374801da906608b7628643d4b41ee68f29..0000000000000000000000000000000000000000
--- a/typo3/sysext/fluid_styled_content/Configuration/TCA/Overrides/pages.php
+++ /dev/null
@@ -1,14 +0,0 @@
-<?php
-defined('TYPO3_MODE') or die();
-
-call_user_func(function () {
-    $extConf = unserialize($GLOBALS['TYPO3_CONF_VARS']['EXT']['extConf']['fluid_styled_content'], ['allowed_classes' => false]);
-    if (isset($extConf['loadContentElementWizardTsConfig']) && (int)$extConf['loadContentElementWizardTsConfig'] === 0) {
-        // Add pageTSconfig
-        \TYPO3\CMS\Core\Utility\ExtensionManagementUtility::registerPageTSConfigFile(
-            'fluid_styled_content',
-            'Configuration/PageTSconfig/NewContentElementWizard.ts',
-            'Fluid-based Content Elements'
-        );
-    }
-});
diff --git a/typo3/sysext/fluid_styled_content/Configuration/TCA/Overrides/sys_template.php b/typo3/sysext/fluid_styled_content/Configuration/TCA/Overrides/sys_template.php
index 12d06d078f9761a196508fb7cf85256852768fa5..6728a5d012a49e5e17a056d9f003256f7ea2deee 100644
--- a/typo3/sysext/fluid_styled_content/Configuration/TCA/Overrides/sys_template.php
+++ b/typo3/sysext/fluid_styled_content/Configuration/TCA/Overrides/sys_template.php
@@ -1,5 +1,13 @@
 <?php
 defined('TYPO3_MODE') or die();
 
-\TYPO3\CMS\Core\Utility\ExtensionManagementUtility::addStaticFile('fluid_styled_content', 'Configuration/TypoScript/Static/', 'Content Elements');
-\TYPO3\CMS\Core\Utility\ExtensionManagementUtility::addStaticFile('fluid_styled_content', 'Configuration/TypoScript/Styling/', 'Content Elements CSS (optional)');
+\TYPO3\CMS\Core\Utility\ExtensionManagementUtility::addStaticFile(
+    'fluid_styled_content',
+    'Configuration/TypoScript/',
+    'Fluid Content Elements'
+);
+\TYPO3\CMS\Core\Utility\ExtensionManagementUtility::addStaticFile(
+    'fluid_styled_content',
+    'Configuration/TypoScript/Styling/',
+    'Fluid Content Elements CSS (optional)'
+);
diff --git a/typo3/sysext/fluid_styled_content/Configuration/TCA/Overrides/tt_content.php b/typo3/sysext/fluid_styled_content/Configuration/TCA/Overrides/tt_content.php
deleted file mode 100644
index 0db17630367e48c70a95fd3afa6abd5ec0b8ba90..0000000000000000000000000000000000000000
--- a/typo3/sysext/fluid_styled_content/Configuration/TCA/Overrides/tt_content.php
+++ /dev/null
@@ -1,134 +0,0 @@
-<?php
-defined('TYPO3_MODE') or die();
-
-call_user_func(function () {
-    $languageFilePrefix = 'LLL:EXT:fluid_styled_content/Resources/Private/Language/Database.xlf:';
-    $frontendLanguageFilePrefix = 'LLL:EXT:frontend/Resources/Private/Language/locallang_ttc.xlf:';
-
-    // Add the CType "textmedia"
-    \TYPO3\CMS\Core\Utility\ExtensionManagementUtility::addTcaSelectItem(
-        'tt_content',
-        'CType',
-        [
-            $languageFilePrefix . 'tt_content.CType.textmedia',
-            'textmedia',
-            'content-textmedia'
-        ],
-        'header',
-        'after'
-    );
-    $GLOBALS['TCA']['tt_content']['columns']['CType']['config']['default'] = 'textmedia';
-
-    $GLOBALS['TCA']['tt_content']['ctrl']['typeicon_classes']['textmedia'] = 'mimetypes-x-content-text-media';
-    $GLOBALS['TCA']['tt_content']['palettes']['mediaAdjustments'] = [
-        'showitem' => '
-			imagewidth;' . $languageFilePrefix . 'tt_content.palette.textmedia.imagewidth,
-			imageheight;' . $languageFilePrefix . 'tt_content.palette.textmedia.imageheight,
-			imageborder;' . $languageFilePrefix . 'tt_content.palette.textmedia.imageborder
-		'
-    ];
-    $GLOBALS['TCA']['tt_content']['palettes']['gallerySettings'] = [
-        'showitem' => '
-			imageorient;' . $frontendLanguageFilePrefix . 'imageorient_formlabel,
-			imagecols;' . $frontendLanguageFilePrefix . 'imagecols_formlabel
-		'
-    ];
-    $GLOBALS['TCA']['tt_content']['types']['textmedia']['showitem'] = '
-        --div--;LLL:EXT:core/Resources/Private/Language/Form/locallang_tabs.xlf:general,
-            --palette--;' . $frontendLanguageFilePrefix . 'palette.general;general,
-            --palette--;' . $frontendLanguageFilePrefix . 'palette.header;header,
-            bodytext;' . $frontendLanguageFilePrefix . 'bodytext_formlabel,
-        --div--;' . $frontendLanguageFilePrefix . 'tabs.media,
-            assets,
-            --palette--;' . $frontendLanguageFilePrefix . 'palette.imagelinks;imagelinks,
-        --div--;' . $frontendLanguageFilePrefix . 'tabs.appearance,
-            layout;' . $frontendLanguageFilePrefix . 'layout_formlabel,
-            --palette--;' . $languageFilePrefix . 'tt_content.palette.mediaAdjustments;mediaAdjustments,
-            --palette--;' . $languageFilePrefix . 'tt_content.palette.gallerySettings;gallerySettings,
-            --palette--;' . $frontendLanguageFilePrefix . 'palette.appearanceLinks;appearanceLinks,
-        --div--;LLL:EXT:core/Resources/Private/Language/Form/locallang_tabs.xlf:language,
-            --palette--;;language,
-        --div--;LLL:EXT:core/Resources/Private/Language/Form/locallang_tabs.xlf:access,
-            --palette--;;hidden,
-            --palette--;' . $frontendLanguageFilePrefix . 'palette.access;access,
-        --div--;LLL:EXT:core/Resources/Private/Language/Form/locallang_tabs.xlf:categories,
-            categories,
-        --div--;LLL:EXT:core/Resources/Private/Language/Form/locallang_tabs.xlf:notes,
-            rowDescription,
-        --div--;LLL:EXT:core/Resources/Private/Language/Form/locallang_tabs.xlf:extended,
-    ';
-
-    if (!isset($GLOBALS['TCA']['tt_content']['types']['textmedia']['columnsOverrides']['bodytext']['config'])
-        || !is_array($GLOBALS['TCA']['tt_content']['types']['textmedia']['columnsOverrides']['bodytext']['config'])
-    ) {
-        $GLOBALS['TCA']['tt_content']['types']['textmedia']['columnsOverrides']['bodytext']['config'] = [];
-    }
-    $GLOBALS['TCA']['tt_content']['types']['textmedia']['columnsOverrides']['bodytext']['config']['enableRichtext'] = true;
-    $GLOBALS['TCA']['tt_content']['types']['textmedia']['columnsOverrides']['bodytext']['config']['richtextConfiguration'] = 'default';
-
-    $GLOBALS['TCA']['tt_content']['columns']['bodytext']['config']['search']['andWhere'] .= ' OR CType=\'textmedia\'';
-
-    // Add table wizard
-    $GLOBALS['TCA']['tt_content']['types']['table']['columnsOverrides']['bodytext']['config']['renderType'] = 'textTable';
-    $GLOBALS['TCA']['tt_content']['types']['table']['columnsOverrides']['bodytext']['config']['wrap'] = 'off';
-
-    // Add additional fields for bullets + upload CTypes
-    $additionalColumns = [
-        'bullets_type' => [
-            'exclude' => true,
-            'label' => $languageFilePrefix . 'tt_content.bullets_type',
-            'config' => [
-                'type' => 'select',
-                'renderType' => 'selectSingle',
-                'items' => [
-                    [$languageFilePrefix . 'tt_content.bullets_type.0', 0],
-                    [$languageFilePrefix . 'tt_content.bullets_type.1', 1],
-                    [$languageFilePrefix . 'tt_content.bullets_type.2', 2]
-                ],
-                'default' => 0
-            ]
-        ],
-        'uploads_description' => [
-            'exclude' => true,
-            'label' => $languageFilePrefix . 'tt_content.uploads_description',
-            'config' => [
-                'type' => 'check',
-                'default' => 0,
-                'items' => [
-                    ['LLL:EXT:lang/Resources/Private/Language/locallang_core.xml:labels.enabled', 1]
-                ]
-            ]
-        ],
-        'uploads_type' => [
-            'exclude' => true,
-            'label' => $languageFilePrefix . 'tt_content.uploads_type',
-            'config' => [
-                'type' => 'select',
-                'renderType' => 'selectSingle',
-                'items' => [
-                    [$languageFilePrefix . 'tt_content.uploads_type.0', 0],
-                    [$languageFilePrefix . 'tt_content.uploads_type.1', 1],
-                    [$languageFilePrefix . 'tt_content.uploads_type.2', 2]
-                ],
-                'default' => 0
-            ]
-        ],
-        'assets' => [
-            'label' => $languageFilePrefix . 'tt_content.asset_references',
-            'config' => \TYPO3\CMS\Core\Utility\ExtensionManagementUtility::getFileFieldTCAConfig('assets', [
-                'appearance' => [
-                    'createNewRelationLinkTitle' => $languageFilePrefix . 'tt_content.asset_references.addFileReference'
-                ],
-                // custom configuration for displaying fields in the overlay/reference table
-                // behaves the same as the image field.
-                'foreign_types' => $GLOBALS['TCA']['tt_content']['columns']['image']['config']['foreign_types']
-            ], $GLOBALS['TYPO3_CONF_VARS']['SYS']['mediafile_ext'])
-        ],
-    ];
-
-    $GLOBALS['TCA']['tt_content']['ctrl']['thumbnail'] = 'assets';
-
-    \TYPO3\CMS\Core\Utility\ExtensionManagementUtility::addTCAcolumns('tt_content', $additionalColumns);
-    \TYPO3\CMS\Core\Utility\ExtensionManagementUtility::addToAllTCAtypes('tt_content', 'bullets_type', 'bullets', 'after:layout');
-    \TYPO3\CMS\Core\Utility\ExtensionManagementUtility::addFieldsToPalette('tt_content', 'uploadslayout', 'uploads_description,uploads_type');
-});
diff --git a/typo3/sysext/fluid_styled_content/Configuration/TypoScript/ContentElement/Default.txt b/typo3/sysext/fluid_styled_content/Configuration/TypoScript/ContentElement/Default.txt
deleted file mode 100644
index b23a57f78cafc0d08f97a217cbfdf95b7190e0dd..0000000000000000000000000000000000000000
--- a/typo3/sysext/fluid_styled_content/Configuration/TypoScript/ContentElement/Default.txt
+++ /dev/null
@@ -1,7 +0,0 @@
-# Default:
-# The "default" content element, which will be called when no rendering definition can be found
-
-tt_content.default =< lib.fluidContent
-tt_content.default {
-    templateName = Default
-}
diff --git a/typo3/sysext/fluid_styled_content/Configuration/TypoScript/ContentElement/Image.txt b/typo3/sysext/fluid_styled_content/Configuration/TypoScript/ContentElement/Image.txt
new file mode 100644
index 0000000000000000000000000000000000000000..75c29cf84ee71db7941140bad8883114726dd0b8
--- /dev/null
+++ b/typo3/sysext/fluid_styled_content/Configuration/TypoScript/ContentElement/Image.txt
@@ -0,0 +1,29 @@
+# Image:
+# ...
+#
+# CType: image
+
+tt_content.image =< lib.fluidContent
+tt_content.image {
+    templateName = Image
+    dataProcessing {
+        10 = TYPO3\CMS\Frontend\DataProcessing\FilesProcessor
+        10 {
+            references.fieldName = image
+        }
+        20 = TYPO3\CMS\Frontend\DataProcessing\GalleryProcessor
+        20 {
+            maxGalleryWidth = {$styles.content.textmedia.maxW}
+            maxGalleryWidthInText = {$styles.content.textmedia.maxWInText}
+            columnSpacing = {$styles.content.textmedia.columnSpacing}
+            borderWidth = {$styles.content.textmedia.borderWidth}
+            borderPadding = {$styles.content.textmedia.borderPadding}
+        }
+    }
+    stdWrap {
+        editIcons = tt_content : image [imageorient|imagewidth|imageheight], [imagecols|imageborder], image_zoom
+        editIcons {
+            iconTitle.data = LLL:EXT:fluid_styled_content/Resources/Private/Language/FrontendEditing.xlf:editIcon.image
+        }
+    }
+}
diff --git a/typo3/sysext/fluid_styled_content/Configuration/TypoScript/ContentElement/MenuAbstract.txt b/typo3/sysext/fluid_styled_content/Configuration/TypoScript/ContentElement/MenuAbstract.txt
new file mode 100644
index 0000000000000000000000000000000000000000..a4fa2e4b2f5ba7ecc0e23467000f9768ace2f4fb
--- /dev/null
+++ b/typo3/sysext/fluid_styled_content/Configuration/TypoScript/ContentElement/MenuAbstract.txt
@@ -0,0 +1,28 @@
+# Menu of subpages of selected pages including abstracts:
+# ...
+#
+# CType: menu_abstract
+
+tt_content.menu_abstract =< lib.fluidContent
+tt_content.menu_abstract {
+    templateName = MenuAbstract
+    dataProcessing {
+        10 = TYPO3\CMS\Frontend\DataProcessing\MenuProcessor
+        10 {
+            special = directory
+            special.value.field = pages
+            dataProcessing {
+                10 = TYPO3\CMS\Frontend\DataProcessing\FilesProcessor
+                10 {
+                    references.fieldName = media
+                }
+            }
+        }
+    }
+    stdWrap {
+        editIcons = tt_content: header [header_layout], pages
+        editIcons {
+            iconTitle.data = LLL:EXT:fluid_styled_content/Resources/Private/Language/FrontendEditing.xlf:editIcon.menu
+        }
+    }
+}
diff --git a/typo3/sysext/fluid_styled_content/Configuration/TypoScript/ContentElement/MenuCategorizedContent.txt b/typo3/sysext/fluid_styled_content/Configuration/TypoScript/ContentElement/MenuCategorizedContent.txt
new file mode 100644
index 0000000000000000000000000000000000000000..c3dadfd8ea1ecb464807f73c4f7b847e511762ee
--- /dev/null
+++ b/typo3/sysext/fluid_styled_content/Configuration/TypoScript/ContentElement/MenuCategorizedContent.txt
@@ -0,0 +1,36 @@
+# Content elements for selected categories:
+# ...
+#
+# CType: menu_categorized_content
+
+tt_content.menu_categorized_content =< lib.fluidContent
+tt_content.menu_categorized_content {
+    templateName = MenuCategorizedContent
+    dataProcessing {
+        10 = TYPO3\CMS\Frontend\DataProcessing\DatabaseQueryProcessor
+        10 {
+            table = tt_content
+            selectFields = tt_content.*
+            groupBy = uid
+            pidInList.data = leveluid : 0
+            recursive = 99
+            join.data = field:selected_categories
+            join.wrap = sys_category_record_mm ON uid = sys_category_record_mm.uid_foreign AND sys_category_record_mm.uid_local IN(|)
+            where.data = field:category_field
+            where.wrap = tablenames='tt_content' and fieldname='|'
+            as = content
+            dataProcessing {
+                10 = TYPO3\CMS\Frontend\DataProcessing\FilesProcessor
+                10 {
+                    references.fieldName = image
+                }
+            }
+        }
+    }
+    stdWrap {
+        editIcons = tt_content: header [header_layout], selected_categories, category_field
+        editIcons {
+            iconTitle.data = LLL:EXT:fluid_styled_content/Resources/Private/Language/FrontendEditing.xlf:editIcon.menu
+        }
+    }
+}
diff --git a/typo3/sysext/fluid_styled_content/Configuration/TypoScript/ContentElement/MenuCategorizedPages.txt b/typo3/sysext/fluid_styled_content/Configuration/TypoScript/ContentElement/MenuCategorizedPages.txt
new file mode 100644
index 0000000000000000000000000000000000000000..cc86f477e2764810207573205821c0b767258f58
--- /dev/null
+++ b/typo3/sysext/fluid_styled_content/Configuration/TypoScript/ContentElement/MenuCategorizedPages.txt
@@ -0,0 +1,33 @@
+# Pages for selected categories:
+# ...
+#
+# CType: menu_categorized_pages
+
+tt_content.menu_categorized_pages =< lib.fluidContent
+tt_content.menu_categorized_pages {
+    templateName = MenuCategorizedPages
+    dataProcessing {
+        10 = TYPO3\CMS\Frontend\DataProcessing\MenuProcessor
+        10 {
+            special = categories
+            special {
+                value.field = selected_categories
+                relation.field = category_field
+                sorting = title
+                order = asc
+            }
+            dataProcessing {
+                10 = TYPO3\CMS\Frontend\DataProcessing\FilesProcessor
+                10 {
+                    references.fieldName = media
+                }
+            }
+        }
+    }
+    stdWrap {
+        editIcons = tt_content: header [header_layout], selected_categories, category_field
+        editIcons {
+            iconTitle.data = LLL:EXT:fluid_styled_content/Resources/Private/Language/FrontendEditing.xlf:editIcon.menu
+        }
+    }
+}
diff --git a/typo3/sysext/fluid_styled_content/Configuration/TypoScript/ContentElement/MenuPages.txt b/typo3/sysext/fluid_styled_content/Configuration/TypoScript/ContentElement/MenuPages.txt
new file mode 100644
index 0000000000000000000000000000000000000000..71d5497693eab554fb6b3dafbea6a4ae88534d05
--- /dev/null
+++ b/typo3/sysext/fluid_styled_content/Configuration/TypoScript/ContentElement/MenuPages.txt
@@ -0,0 +1,28 @@
+# Menu of selected pages:
+# ...
+#
+# CType: menu_pages
+
+tt_content.menu_pages =< lib.fluidContent
+tt_content.menu_pages {
+    templateName = MenuPages
+    dataProcessing {
+        10 = TYPO3\CMS\Frontend\DataProcessing\MenuProcessor
+        10 {
+            special = list
+            special.value.field = pages
+            dataProcessing {
+                10 = TYPO3\CMS\Frontend\DataProcessing\FilesProcessor
+                10 {
+                    references.fieldName = media
+                }
+            }
+        }
+    }
+    stdWrap {
+        editIcons = tt_content: header [header_layout], pages
+        editIcons {
+            iconTitle.data = LLL:EXT:fluid_styled_content/Resources/Private/Language/FrontendEditing.xlf:editIcon.menu
+        }
+    }
+}
diff --git a/typo3/sysext/fluid_styled_content/Configuration/TypoScript/ContentElement/MenuRecentlyUpdated.txt b/typo3/sysext/fluid_styled_content/Configuration/TypoScript/ContentElement/MenuRecentlyUpdated.txt
new file mode 100644
index 0000000000000000000000000000000000000000..fa2c53d592f3dc3e1efc4584f981a772d4463647
--- /dev/null
+++ b/typo3/sysext/fluid_styled_content/Configuration/TypoScript/ContentElement/MenuRecentlyUpdated.txt
@@ -0,0 +1,32 @@
+# Recently updated pages:
+# ...
+#
+# CType: menu_recently_updated
+
+tt_content.menu_recently_updated =< lib.fluidContent
+tt_content.menu_recently_updated {
+    templateName = MenuRecentlyUpdated
+    dataProcessing {
+        10 = TYPO3\CMS\Frontend\DataProcessing\MenuProcessor
+        10 {
+            special = updated
+            special {
+                value.field = pages
+                maxAge = 3600*24*7
+                excludeNoSearchPages = 1
+            }
+            dataProcessing {
+                10 = TYPO3\CMS\Frontend\DataProcessing\FilesProcessor
+                10 {
+                    references.fieldName = media
+                }
+            }
+        }
+    }
+    stdWrap {
+        editIcons = tt_content: header [header_layout], pages
+        editIcons {
+            iconTitle.data = LLL:EXT:fluid_styled_content/Resources/Private/Language/FrontendEditing.xlf:editIcon.menu
+        }
+    }
+}
diff --git a/typo3/sysext/fluid_styled_content/Configuration/TypoScript/ContentElement/MenuRelatedPages.txt b/typo3/sysext/fluid_styled_content/Configuration/TypoScript/ContentElement/MenuRelatedPages.txt
new file mode 100644
index 0000000000000000000000000000000000000000..0d96093f449df47df6dbfeb4ddb4f878db591012
--- /dev/null
+++ b/typo3/sysext/fluid_styled_content/Configuration/TypoScript/ContentElement/MenuRelatedPages.txt
@@ -0,0 +1,32 @@
+# Related pages (based on keywords):
+# ...
+#
+# CType: menu_related_pages
+
+tt_content.menu_related_pages =< lib.fluidContent
+tt_content.menu_related_pages {
+    templateName = MenuRelatedPages
+    dataProcessing {
+        10 = TYPO3\CMS\Frontend\DataProcessing\MenuProcessor
+        10 {
+            special = keywords
+            special {
+                value.field = pages
+                excludeNoSearchPages = 1
+            }
+            alternativeSortingField = title
+            dataProcessing {
+                10 = TYPO3\CMS\Frontend\DataProcessing\FilesProcessor
+                10 {
+                    references.fieldName = media
+                }
+            }
+        }
+    }
+    stdWrap {
+        editIcons = tt_content: header [header_layout], pages
+        editIcons {
+            iconTitle.data = LLL:EXT:fluid_styled_content/Resources/Private/Language/FrontendEditing.xlf:editIcon.menu
+        }
+    }
+}
diff --git a/typo3/sysext/fluid_styled_content/Configuration/TypoScript/ContentElement/MenuSection.txt b/typo3/sysext/fluid_styled_content/Configuration/TypoScript/ContentElement/MenuSection.txt
new file mode 100644
index 0000000000000000000000000000000000000000..2c611fc1d19de4eb8621d9fa9b118a2cbb6e9b27
--- /dev/null
+++ b/typo3/sysext/fluid_styled_content/Configuration/TypoScript/ContentElement/MenuSection.txt
@@ -0,0 +1,51 @@
+# Section index (page content marked for section menus):
+# ...
+#
+# CType: menu_section
+
+tt_content.menu_section =< lib.fluidContent
+tt_content.menu_section {
+    templateName = MenuSection
+    dataProcessing {
+        10 = TYPO3\CMS\Frontend\DataProcessing\MenuProcessor
+        10 {
+            special = list
+            special {
+                value {
+                    field = pages
+                    override {
+                        data = page:uid
+                        if {
+                            isFalse.field = pages
+                        }
+                    }
+                }
+            }
+            dataProcessing {
+                10 = TYPO3\CMS\Frontend\DataProcessing\FilesProcessor
+                10 {
+                    references.fieldName = media
+                }
+                20 = TYPO3\CMS\Frontend\DataProcessing\DatabaseQueryProcessor
+                20 {
+                    table = tt_content
+                    pidInList.field = uid
+                    as = content
+                    where = sectionIndex = 1
+                    dataProcessing {
+                        10 = TYPO3\CMS\Frontend\DataProcessing\FilesProcessor
+                        10 {
+                            references.fieldName = image
+                        }
+                    }
+                }
+            }
+        }
+    }
+    stdWrap {
+        editIcons = tt_content: header [header_layout], pages
+        editIcons {
+            iconTitle.data = LLL:EXT:fluid_styled_content/Resources/Private/Language/FrontendEditing.xlf:editIcon.menu
+        }
+    }
+}
diff --git a/typo3/sysext/fluid_styled_content/Configuration/TypoScript/ContentElement/MenuSectionPages.txt b/typo3/sysext/fluid_styled_content/Configuration/TypoScript/ContentElement/MenuSectionPages.txt
new file mode 100644
index 0000000000000000000000000000000000000000..6016887029c42220364035f23cdfb4a80acf6a57
--- /dev/null
+++ b/typo3/sysext/fluid_styled_content/Configuration/TypoScript/ContentElement/MenuSectionPages.txt
@@ -0,0 +1,40 @@
+# Menu of subpages of selected pages including sections:
+# ...
+#
+# CType: menu_section_pages
+
+tt_content.menu_section_pages =< lib.fluidContent
+tt_content.menu_section_pages {
+    templateName = MenuSectionPages
+    dataProcessing {
+        10 = TYPO3\CMS\Frontend\DataProcessing\MenuProcessor
+        10 {
+            special = directory
+            special.value.field = pages
+            dataProcessing {
+                10 = TYPO3\CMS\Frontend\DataProcessing\FilesProcessor
+                10 {
+                    references.fieldName = media
+                }
+                20 = TYPO3\CMS\Frontend\DataProcessing\DatabaseQueryProcessor
+                20 {
+                    table = tt_content
+                    pidInList.field = uid
+                    as = content
+                    dataProcessing {
+                        10 = TYPO3\CMS\Frontend\DataProcessing\FilesProcessor
+                        10 {
+                            references.fieldName = image
+                        }
+                    }
+                }
+            }
+        }
+    }
+    stdWrap {
+        editIcons = tt_content: header [header_layout], pages
+        editIcons {
+            iconTitle.data = LLL:EXT:fluid_styled_content/Resources/Private/Language/FrontendEditing.xlf:editIcon.menu
+        }
+    }
+}
diff --git a/typo3/sysext/fluid_styled_content/Configuration/TypoScript/ContentElement/MenuSitemap.txt b/typo3/sysext/fluid_styled_content/Configuration/TypoScript/ContentElement/MenuSitemap.txt
new file mode 100644
index 0000000000000000000000000000000000000000..f23c46d44265e4adb68d76d0fdf03ac1fe7c65d4
--- /dev/null
+++ b/typo3/sysext/fluid_styled_content/Configuration/TypoScript/ContentElement/MenuSitemap.txt
@@ -0,0 +1,29 @@
+# Sitemap:
+# ...
+#
+# CType: menu_sitemap
+
+tt_content.menu_sitemap =< lib.fluidContent
+tt_content.menu_sitemap {
+    templateName = MenuSitemap
+    dataProcessing {
+        10 = TYPO3\CMS\Frontend\DataProcessing\MenuProcessor
+        10 {
+            special = list
+            special.value.field = pages
+            levels = 7
+            dataProcessing {
+                10 = TYPO3\CMS\Frontend\DataProcessing\FilesProcessor
+                10 {
+                    references.fieldName = media
+                }
+            }
+        }
+    }
+    stdWrap {
+        editIcons = tt_content: header [header_layout], pages
+        editIcons {
+            iconTitle.data = LLL:EXT:fluid_styled_content/Resources/Private/Language/FrontendEditing.xlf:editIcon.menu
+        }
+    }
+}
diff --git a/typo3/sysext/fluid_styled_content/Configuration/TypoScript/ContentElement/MenuSitemapPages.txt b/typo3/sysext/fluid_styled_content/Configuration/TypoScript/ContentElement/MenuSitemapPages.txt
new file mode 100644
index 0000000000000000000000000000000000000000..6ebbd7e5f6d44d06410f1cf9bcef99bcff35e2cf
--- /dev/null
+++ b/typo3/sysext/fluid_styled_content/Configuration/TypoScript/ContentElement/MenuSitemapPages.txt
@@ -0,0 +1,29 @@
+# Sitemaps of selected pages:
+# ...
+#
+# CType: menu_sitemap_pages
+
+tt_content.menu_sitemap_pages =< lib.fluidContent
+tt_content.menu_sitemap_pages {
+    templateName = MenuSitemapPages
+    dataProcessing {
+        10 = TYPO3\CMS\Frontend\DataProcessing\MenuProcessor
+        10 {
+            special = directory
+            special.value.field = pages
+            levels = 7
+            dataProcessing {
+                10 = TYPO3\CMS\Frontend\DataProcessing\FilesProcessor
+                10 {
+                    references.fieldName = media
+                }
+            }
+        }
+    }
+    stdWrap {
+        editIcons = tt_content: header [header_layout], pages
+        editIcons {
+            iconTitle.data = LLL:EXT:fluid_styled_content/Resources/Private/Language/FrontendEditing.xlf:editIcon.menu
+        }
+    }
+}
diff --git a/typo3/sysext/fluid_styled_content/Configuration/TypoScript/ContentElement/MenuSubpages.txt b/typo3/sysext/fluid_styled_content/Configuration/TypoScript/ContentElement/MenuSubpages.txt
new file mode 100644
index 0000000000000000000000000000000000000000..9243b7c6d5a3bb8aa75afba7364bdf0a3716ea01
--- /dev/null
+++ b/typo3/sysext/fluid_styled_content/Configuration/TypoScript/ContentElement/MenuSubpages.txt
@@ -0,0 +1,28 @@
+# Menu of subpages of selected pages:
+# ...
+#
+# CType: menu_subpages
+
+tt_content.menu_subpages =< lib.fluidContent
+tt_content.menu_subpages {
+    templateName = MenuSubpages
+    dataProcessing {
+        10 = TYPO3\CMS\Frontend\DataProcessing\MenuProcessor
+        10 {
+            special = directory
+            special.value.field = pages
+            dataProcessing {
+                10 = TYPO3\CMS\Frontend\DataProcessing\FilesProcessor
+                10 {
+                    references.fieldName = media
+                }
+            }
+        }
+    }
+    stdWrap {
+        editIcons = tt_content: header [header_layout], pages
+        editIcons {
+            iconTitle.data = LLL:EXT:fluid_styled_content/Resources/Private/Language/FrontendEditing.xlf:editIcon.menu
+        }
+    }
+}
diff --git a/typo3/sysext/fluid_styled_content/Configuration/TypoScript/ContentElement/Text.txt b/typo3/sysext/fluid_styled_content/Configuration/TypoScript/ContentElement/Text.txt
new file mode 100644
index 0000000000000000000000000000000000000000..e764144f673314e6cb7f3634d593e5b2dab5f9d3
--- /dev/null
+++ b/typo3/sysext/fluid_styled_content/Configuration/TypoScript/ContentElement/Text.txt
@@ -0,0 +1,16 @@
+# Regular Text Element:
+# A regular text element with header and bodytext fields.
+#
+# CType: text
+
+tt_content.text =< lib.fluidContent
+tt_content.text {
+    templateName = Text
+    stdWrap {
+        editIcons = tt_content: bodytext
+        editIcons {
+            beforeLastTag = 1
+            iconTitle.data = LLL:EXT:fluid_styled_content/Resources/Private/Language/FrontendEditing.xlf:editIcon.html
+        }
+    }
+}
diff --git a/typo3/sysext/fluid_styled_content/Configuration/TypoScript/ContentElement/Textpic.txt b/typo3/sysext/fluid_styled_content/Configuration/TypoScript/ContentElement/Textpic.txt
new file mode 100644
index 0000000000000000000000000000000000000000..778b9cb63675177ab76cc8d6c8f39423cb95772b
--- /dev/null
+++ b/typo3/sysext/fluid_styled_content/Configuration/TypoScript/ContentElement/Textpic.txt
@@ -0,0 +1,29 @@
+# Text and Images:
+# Text with images.
+#
+# CType: textpic
+
+tt_content.textpic =< lib.fluidContent
+tt_content.textpic {
+    templateName = Textpic
+    dataProcessing {
+        10 = TYPO3\CMS\Frontend\DataProcessing\FilesProcessor
+        10 {
+            references.fieldName = image
+        }
+        20 = TYPO3\CMS\Frontend\DataProcessing\GalleryProcessor
+        20 {
+            maxGalleryWidth = {$styles.content.textmedia.maxW}
+            maxGalleryWidthInText = {$styles.content.textmedia.maxWInText}
+            columnSpacing = {$styles.content.textmedia.columnSpacing}
+            borderWidth = {$styles.content.textmedia.borderWidth}
+            borderPadding = {$styles.content.textmedia.borderPadding}
+        }
+    }
+    stdWrap {
+        editIcons = tt_content: header [header_layout], bodytext, image [imageorient|imagewidth|imageheight], [imagecols|imageborder], image_zoom
+        editIcons {
+            iconTitle.data = LLL:EXT:fluid_styled_content/Resources/Private/Language/FrontendEditing.xlf:editIcon.textpic
+        }
+    }
+}
diff --git a/typo3/sysext/fluid_styled_content/Configuration/TypoScript/Helper/FluidContent.txt b/typo3/sysext/fluid_styled_content/Configuration/TypoScript/Helper/FluidContent.txt
new file mode 100644
index 0000000000000000000000000000000000000000..e61ad46aa6bf4390fee09c7aaa80f00c97fc5c47
--- /dev/null
+++ b/typo3/sysext/fluid_styled_content/Configuration/TypoScript/Helper/FluidContent.txt
@@ -0,0 +1,37 @@
+# Default configuration for content elements which are using FLUIDTEMPLATE directly
+lib.fluidContent >
+lib.fluidContent = FLUIDTEMPLATE
+lib.fluidContent {
+    templateName = Default
+    templateRootPaths {
+        0 = EXT:fluid_styled_content/Resources/Private/Templates/
+        10 = {$styles.templates.templateRootPath}
+    }
+    partialRootPaths {
+        0 = EXT:fluid_styled_content/Resources/Private/Partials/
+        10 = {$styles.templates.partialRootPath}
+    }
+    layoutRootPaths {
+        0 = EXT:fluid_styled_content/Resources/Private/Layouts/
+        10 = {$styles.templates.layoutRootPath}
+    }
+    settings {
+        defaultHeaderType = {$styles.content.defaultHeaderType}
+        media {
+            popup {
+                bodyTag = <body style="margin:0; background:#fff;">
+                wrap = <a href="javascript:close();"> | </a>
+                width = {$styles.content.textmedia.linkWrap.width}
+                height = {$styles.content.textmedia.linkWrap.height}
+                crop.data = file:current:crop
+                JSwindow = 1
+                JSwindow {
+                    newWindow = {$styles.content.textmedia.linkWrap.newWindow}
+                    if.isFalse = {$styles.content.textmedia.linkWrap.lightboxEnabled}
+                }
+                directImageLink = {$styles.content.textmedia.linkWrap.lightboxEnabled}
+                linkParams.ATagParams.dataWrap =  class="{$styles.content.textmedia.linkWrap.lightboxCssClass}" rel="{$styles.content.textmedia.linkWrap.lightboxRelAttribute}"
+            }
+        }
+    }
+}
diff --git a/typo3/sysext/fluid_styled_content/Configuration/TypoScript/Helper/ParseFunc.txt b/typo3/sysext/fluid_styled_content/Configuration/TypoScript/Helper/ParseFunc.txt
new file mode 100644
index 0000000000000000000000000000000000000000..c7cdec7faeaecc7ed343a28df4d8ea62cd3ff168
--- /dev/null
+++ b/typo3/sysext/fluid_styled_content/Configuration/TypoScript/Helper/ParseFunc.txt
@@ -0,0 +1,126 @@
+# Creates persistent ParseFunc setup for non-HTML content.
+lib.parseFunc {
+    makelinks = 1
+    makelinks {
+        http {
+            keep = {$styles.content.links.keep}
+            extTarget = {$styles.content.links.extTarget}
+        }
+        mailto {
+            keep = path
+        }
+    }
+    tags {
+        link = TEXT
+        link {
+            current = 1
+            typolink {
+                parameter.data = parameters : allParams
+                extTarget = {$styles.content.links.extTarget}
+            }
+            parseFunc.constants = 1
+        }
+        a = TEXT
+        a {
+            current = 1
+            typolink {
+                parameter.data = parameters:href
+                title.data = parameters:title
+                aTagParams.data = parameters:allParams
+                target.data = parameters:target
+                extTarget = {$styles.content.links.extTarget}
+                extTarget.override.data = parameters:target
+            }
+        }
+    }
+    allowTags = {$styles.content.allowTags}
+    denyTags = *
+    sword = <span class="ce-sword">|</span>
+    constants = 1
+    nonTypoTagStdWrap {
+        HTMLparser = 1
+        HTMLparser {
+            keepNonMatchedTags = 1
+            htmlSpecialChars = 2
+        }
+    }
+}
+
+
+# Creates persistent ParseFunc setup for RTE content (which is mainly HTML) based on the "ts_css" transformation.
+lib.parseFunc_RTE < lib.parseFunc
+lib.parseFunc_RTE {
+    # Processing <table> and <blockquote> blocks separately
+    externalBlocks = article, aside, blockquote, div, dd, dl, footer, header, nav, ol, section, table, ul, pre
+    externalBlocks {
+        # The blockquote content is passed into parseFunc again...
+        blockquote {
+            stripNL = 1
+            callRecursive = 1
+            callRecursive {
+                tagStdWrap {
+                    HTMLparser = 1
+                    HTMLparser.tags.blockquote.overrideAttribs = style="margin-bottom:0;margin-top:0;"
+                }
+            }
+        }
+        ol {
+            stripNL = 1
+            stdWrap.parseFunc = < lib.parseFunc
+        }
+        ul {
+            stripNL = 1
+            stdWrap.parseFunc = < lib.parseFunc
+        }
+        table {
+            stripNL = 1
+            stdWrap {
+                HTMLparser = 1
+                HTMLparser {
+                    tags.table.fixAttrib.class {
+                        default = contenttable
+                        always = 1
+                        list = contenttable
+                    }
+                    keepNonMatchedTags = 1
+                }
+            }
+            HTMLtableCells = 1
+            HTMLtableCells {
+                # Recursive call to self but without wrapping non-wrapped cell content
+                default.stdWrap {
+                    parseFunc = < lib.parseFunc_RTE
+                    parseFunc.nonTypoTagStdWrap.encapsLines.nonWrappedTag =
+                }
+                addChr10BetweenParagraphs = 1
+            }
+        }
+        div {
+            stripNL = 1
+            callRecursive = 1
+        }
+        article < .div
+        aside < .div
+        footer < .div
+        header < .div
+        nav < .div
+        section < .div
+        dl < .div
+        dd < .div
+    }
+    nonTypoTagStdWrap {
+        encapsLines {
+            encapsTagList = p,pre,h1,h2,h3,h4,h5,h6,hr,dt
+            remapTag.DIV = P
+            nonWrappedTag = P
+            innerStdWrap_all.ifBlank = &nbsp;
+        }
+    }
+    nonTypoTagStdWrap {
+        HTMLparser = 1
+        HTMLparser {
+            keepNonMatchedTags = 1
+            htmlSpecialChars = 2
+        }
+    }
+}
diff --git a/typo3/sysext/fluid_styled_content/Configuration/TypoScript/Static/Setup/lib.fluidContent.ts b/typo3/sysext/fluid_styled_content/Configuration/TypoScript/Static/Setup/lib.fluidContent.ts
deleted file mode 100644
index 00308ef3d1dcbc979cb4c2aa842c3b6a6493a5e6..0000000000000000000000000000000000000000
--- a/typo3/sysext/fluid_styled_content/Configuration/TypoScript/Static/Setup/lib.fluidContent.ts
+++ /dev/null
@@ -1,41 +0,0 @@
-# Default configuration for content elements which are using FLUIDTEMPLATE directly
-lib.fluidContent >
-lib.fluidContent = FLUIDTEMPLATE
-lib.fluidContent {
-	templateName = Default
-	templateRootPaths {
-		0 = EXT:fluid_styled_content/Resources/Private/Templates/
-		10 = {$styles.templates.templateRootPath}
-	}
-	partialRootPaths {
-		0 = EXT:fluid_styled_content/Resources/Private/Partials/
-		10 = {$styles.templates.partialRootPath}
-	}
-	layoutRootPaths {
-		0 = EXT:fluid_styled_content/Resources/Private/Layouts/
-		10 = {$styles.templates.layoutRootPath}
-	}
-	settings {
-		defaultHeaderType = {$styles.content.defaultHeaderType}
-
-		media {
-			popup {
-				bodyTag = <body style="margin:0; background:#fff;">
-				wrap = <a href="javascript:close();"> | </a>
-				width = {$styles.content.textmedia.linkWrap.width}
-				height = {$styles.content.textmedia.linkWrap.height}
-				crop.data = file:current:crop
-
-				JSwindow = 1
-				JSwindow {
-					newWindow = {$styles.content.textmedia.linkWrap.newWindow}
-					if.isFalse = {$styles.content.textmedia.linkWrap.lightboxEnabled}
-				}
-
-				directImageLink = {$styles.content.textmedia.linkWrap.lightboxEnabled}
-
-				linkParams.ATagParams.dataWrap =  class="{$styles.content.textmedia.linkWrap.lightboxCssClass}" rel="{$styles.content.textmedia.linkWrap.lightboxRelAttribute}"
-			}
-		}
-	}
-}
diff --git a/typo3/sysext/fluid_styled_content/Configuration/TypoScript/Static/Setup/lib.parseFunc.ts b/typo3/sysext/fluid_styled_content/Configuration/TypoScript/Static/Setup/lib.parseFunc.ts
deleted file mode 100644
index 9f8527678903162fcaea66242a2ab93e972ec866..0000000000000000000000000000000000000000
--- a/typo3/sysext/fluid_styled_content/Configuration/TypoScript/Static/Setup/lib.parseFunc.ts
+++ /dev/null
@@ -1,131 +0,0 @@
-# Creates persistent ParseFunc setup for non-HTML content.
-lib.parseFunc {
-	makelinks = 1
-	makelinks {
-		http {
-			keep = {$styles.content.links.keep}
-			extTarget = {$styles.content.links.extTarget}
-		}
-		mailto {
-			keep = path
-		}
-	}
-	tags {
-		link = TEXT
-		link {
-			current = 1
-			typolink {
-				parameter.data = parameters : allParams
-				extTarget = {$styles.content.links.extTarget}
-			}
-			parseFunc.constants = 1
-		}
-		a = TEXT
-		a {
-			current = 1
-			typolink {
-				parameter.data = parameters:href
-				title.data = parameters:title
-				aTagParams.data = parameters:allParams
-				target.data = parameters:target
-				extTarget = {$styles.content.links.extTarget}
-				extTarget.override.data = parameters:target
-			}
-		}
-	}
-	allowTags = {$styles.content.allowTags}
-	denyTags = *
-	sword = <span class="ce-sword">|</span>
-	constants = 1
-	nonTypoTagStdWrap {
-		HTMLparser = 1
-		HTMLparser {
-			keepNonMatchedTags = 1
-			htmlSpecialChars = 2
-		}
-	}
-}
-
-
-# Creates persistent ParseFunc setup for RTE content (which is mainly HTML) based on the "ts_css" transformation.
-lib.parseFunc_RTE < lib.parseFunc
-lib.parseFunc_RTE {
-	# Processing <table> and <blockquote> blocks separately
-	externalBlocks = article, aside, blockquote, div, dd, dl, footer, header, nav, ol, section, table, ul, pre
-	externalBlocks {
-		# The blockquote content is passed into parseFunc again...
-		blockquote {
-			stripNL = 1
-			callRecursive = 1
-			callRecursive {
-				tagStdWrap {
-					HTMLparser = 1
-					HTMLparser.tags.blockquote.overrideAttribs = style="margin-bottom:0;margin-top:0;"
-				}
-			}
-		}
-
-		ol {
-			stripNL = 1
-			stdWrap.parseFunc = < lib.parseFunc
-		}
-
-		ul {
-			stripNL = 1
-			stdWrap.parseFunc = < lib.parseFunc
-		}
-
-		table {
-			stripNL = 1
-			stdWrap {
-				HTMLparser = 1
-				HTMLparser {
-					tags.table.fixAttrib.class {
-						default = contenttable
-						always = 1
-						list = contenttable
-					}
-					keepNonMatchedTags = 1
-				}
-			}
-			HTMLtableCells = 1
-			HTMLtableCells {
-				# Recursive call to self but without wrapping non-wrapped cell content
-				default.stdWrap {
-					parseFunc = < lib.parseFunc_RTE
-					parseFunc.nonTypoTagStdWrap.encapsLines.nonWrappedTag =
-				}
-				addChr10BetweenParagraphs = 1
-			}
-		}
-
-		div {
-			stripNL = 1
-			callRecursive = 1
-		}
-
-		article < .div
-		aside < .div
-		footer < .div
-		header < .div
-		nav < .div
-		section < .div
-		dl < .div
-		dd < .div
-	}
-	nonTypoTagStdWrap {
-		encapsLines {
-			encapsTagList = p,pre,h1,h2,h3,h4,h5,h6,hr,dt
-			remapTag.DIV = P
-			nonWrappedTag = P
-			innerStdWrap_all.ifBlank = &nbsp;
-		}
-	}
-	nonTypoTagStdWrap {
-		HTMLparser = 1
-		HTMLparser {
-			keepNonMatchedTags = 1
-			htmlSpecialChars = 2
-		}
-	}
-}
diff --git a/typo3/sysext/fluid_styled_content/Configuration/TypoScript/Static/Setup/lib.stdheader.ts b/typo3/sysext/fluid_styled_content/Configuration/TypoScript/Static/Setup/lib.stdheader.ts
deleted file mode 100644
index 80b81d0d0858eec170c0790b681390a0f7c1587e..0000000000000000000000000000000000000000
--- a/typo3/sysext/fluid_styled_content/Configuration/TypoScript/Static/Setup/lib.stdheader.ts
+++ /dev/null
@@ -1,4 +0,0 @@
-# Default configuration for content elements which still use a default header (e.g. all Extbase CTypes, or EXT:felogin)
-lib.stdheader >
-lib.stdheader =< lib.fluidContent
-lib.stdheader.templateName = HeaderOnly
\ No newline at end of file
diff --git a/typo3/sysext/fluid_styled_content/Configuration/TypoScript/Static/Setup/styles.content.get.ts b/typo3/sysext/fluid_styled_content/Configuration/TypoScript/Static/Setup/styles.content.get.ts
deleted file mode 100644
index 15ad4beb7b364baeb0927fcb4653c2384262af42..0000000000000000000000000000000000000000
--- a/typo3/sysext/fluid_styled_content/Configuration/TypoScript/Static/Setup/styles.content.get.ts
+++ /dev/null
@@ -1,6 +0,0 @@
-styles.content.get = CONTENT
-styles.content.get {
-	table = tt_content
-	select.orderBy = sorting
-	select.where = colPos=0
-}
\ No newline at end of file
diff --git a/typo3/sysext/fluid_styled_content/Configuration/TypoScript/Static/constants.txt b/typo3/sysext/fluid_styled_content/Configuration/TypoScript/Static/constants.txt
deleted file mode 100644
index 2ff22abfe38663659d0fd083b02da49951a199bd..0000000000000000000000000000000000000000
--- a/typo3/sysext/fluid_styled_content/Configuration/TypoScript/Static/constants.txt
+++ /dev/null
@@ -1,60 +0,0 @@
-styles.templates {
-	# cat=content/templates/b1; type=string; label= Path of Fluid Templates for all defined content elements
-	templateRootPath =
-	# cat=content/templates/b2; type=string; label= Path of Fluid Partials for all defined content elements
-	partialRootPath =
-	# cat=content/templates/b3; type=string; label= Path of Fluid Layouts for all defined content elements
-	layoutRootPath =
-}
-
-styles.content {
-	# cat=content/cHeader/h0; type=int[1-5]; label=Default Header type: Enter the number of the header layout to be used by default
-	defaultHeaderType = 2
-
-	# cat=content/cShortcut/t0; type=string; label=List of accepted tables
-	shortcut.tables = tt_content
-
-	# cat=content/parseFunc/a0; type=string; label=List of allowed HTML tags when rendering RTE content
-	allowTags = a, abbr, acronym, address, article, aside, b, bdo, big, blockquote, br, caption, center, cite, code, col, colgroup, dd, del, dfn, dl, div, dt, em, font, footer, header, h1, h2, h3, h4, h5, h6, hr, i, img, ins, kbd, label, li, link, meta, nav, ol, p, pre, q, samp, sdfield, section, small, span, strike, strong, style, sub, sup, table, thead, tbody, tfoot, td, th, tr, title, tt, u, ul, var
-
-	textmedia {
-		# cat=content/cTextmedia/b1; type=int+; label= Max Image/Media Width: This indicates that maximum number of pixels (width) a block of media elements inserted as content is allowed to consume
-		maxW = 600
-		# cat=content/cTextmedia/b2; type=int+; label= Max Image/Media Width (Text): Same as above, but this is the maximum width when text is wrapped around an block of media elements. Default is 50% of the normal Max Media Item Width
-		maxWInText = 300
-
-		# cat=content/cTextmedia/g1; type=int[0-100]; label= Advanced, Column space: Horizontal distance between media elements in a block in content elements of type "Media & Images". If you change this manually in your CSS, you need to adjust this setting accordingly
-		columnSpacing = 10
-		# cat=content/cTextmedia/g2; type=int[0-100]; label= Advanced, Row space: Vertical distance after each media elements row in content elements of type ""Text & Media". If you change this manually in your CSS, you need to adjust this setting accordingly
-		rowSpacing = 10
-		# cat=content/cTextmedia/g3; type=int[0-100]; label= Advanced, Margin to text: Horizontal distance between an imageblock and text in content elements of type "Text & Images"
-		textMargin = 10
-
-		# cat=content/cTextmedia/i1; type=color; label= Media element border, color: Bordercolor of media elements in content elements when "Border"-option for an element is set
-		borderColor = #000000
-		# cat=content/cTextmedia/i2; type=int[0-100]; label= Media element border, thickness: Thickness of border around media elements in content elements when "Border"-option for element is set
-		borderWidth = 2
-		# cat=content/cTextmedia/i3; type=int+; label= Media element border, padding: Padding left and right to the media element, around the border
-		borderPadding = 0
-
-		# cat=content/cTextmedia/c1; type=string; label= Click-enlarge Media Width: This specifies the width of the enlarged media element when click-enlarge is enabled
-		linkWrap.width = 800m
-		# cat=content/cTextmedia/c2; type=string; label= Click-enlarge Media Height: This specifies the height of the enlarged media element when click-enlarge is enabled
-		linkWrap.height = 600m
-		# cat=content/cTextmedia/c3; type=boolean; label= Advanced, New window: If set, every click-enlarged media element will open in it's own popup window and not the current popup window (which may have a wrong size for the media element to fit in)
-		linkWrap.newWindow = 0
-		# cat=content/cTextmedia/c4; type=boolean; label= Lightbox click-enlarge rendering: Whether media elements with click-enlarge checked should be rendered lightbox-compliant
-		linkWrap.lightboxEnabled = 0
-		# cat=content/cTextmedia/c5; type=string; label= Lightbox CSS class: Which CSS class to use for lightbox links (only applicable if lightbox rendering is enabled)
-		linkWrap.lightboxCssClass = lightbox
-		# cat=content/cTextmedia/c6; type=string; label= Lightbox rel="" attribute: Which rel="" attribute to use for lightbox links (only applicable if lightbox rendering is enabled)
-		linkWrap.lightboxRelAttribute = lightbox[{field:uid}]
-	}
-
-	links {
-		# cat=content/links/l2; type=small; label= Target for external links
-		extTarget = _blank
-		# cat=content/links/l3; type=string; label= Parts to keep when building links: Comma separated list of the link parts to show when building the link-text: scheme,path,query. Example: "" (empty) => www.example.com, "scheme,path" => http://www.example.com
-		keep = path
-	}
-}
diff --git a/typo3/sysext/fluid_styled_content/Configuration/TypoScript/Static/setup.txt b/typo3/sysext/fluid_styled_content/Configuration/TypoScript/Static/setup.txt
deleted file mode 100644
index aed77fe9d2eb09d69d23e6de04dc991781c01a7d..0000000000000000000000000000000000000000
--- a/typo3/sysext/fluid_styled_content/Configuration/TypoScript/Static/setup.txt
+++ /dev/null
@@ -1,36 +0,0 @@
-# Include setup
-<INCLUDE_TYPOSCRIPT: source="FILE:./Setup/lib.parseFunc.ts">
-<INCLUDE_TYPOSCRIPT: source="FILE:./Setup/lib.fluidContent.ts">
-<INCLUDE_TYPOSCRIPT: source="FILE:./Setup/lib.stdheader.ts">
-<INCLUDE_TYPOSCRIPT: source="FILE:./Setup/styles.content.get.ts">
-
-
-# Content element rendering
-tt_content = CASE
-tt_content {
-    key {
-        field = CType
-    }
-    stdWrap {
-        # Setup the edit panel for all content elements
-        editPanel = 1
-        editPanel {
-            allow = move, new, edit, hide, delete
-            label = %s
-            onlyCurrentPid = 1
-            previewBorder = 1
-            edit.displayRecord = 1
-        }
-    }
-}
-<INCLUDE_TYPOSCRIPT: source="FILE:EXT:fluid_styled_content/Configuration/TypoScript/ContentElement/Bullets.txt">
-<INCLUDE_TYPOSCRIPT: source="FILE:EXT:fluid_styled_content/Configuration/TypoScript/ContentElement/Div.txt">
-<INCLUDE_TYPOSCRIPT: source="FILE:EXT:fluid_styled_content/Configuration/TypoScript/ContentElement/Header.txt">
-<INCLUDE_TYPOSCRIPT: source="FILE:EXT:fluid_styled_content/Configuration/TypoScript/ContentElement/Html.txt">
-<INCLUDE_TYPOSCRIPT: source="FILE:EXT:fluid_styled_content/Configuration/TypoScript/ContentElement/List.txt">
-<INCLUDE_TYPOSCRIPT: source="FILE:EXT:fluid_styled_content/Configuration/TypoScript/ContentElement/Menu.txt">
-<INCLUDE_TYPOSCRIPT: source="FILE:EXT:fluid_styled_content/Configuration/TypoScript/ContentElement/Shortcut.txt">
-<INCLUDE_TYPOSCRIPT: source="FILE:EXT:fluid_styled_content/Configuration/TypoScript/ContentElement/Table.txt">
-<INCLUDE_TYPOSCRIPT: source="FILE:EXT:fluid_styled_content/Configuration/TypoScript/ContentElement/Textmedia.txt">
-<INCLUDE_TYPOSCRIPT: source="FILE:EXT:fluid_styled_content/Configuration/TypoScript/ContentElement/Uploads.txt">
-<INCLUDE_TYPOSCRIPT: source="FILE:EXT:fluid_styled_content/Configuration/TypoScript/ContentElement/Default.txt">
diff --git a/typo3/sysext/fluid_styled_content/Configuration/TypoScript/Styling/setup.txt b/typo3/sysext/fluid_styled_content/Configuration/TypoScript/Styling/setup.txt
index 58628a7478d016ab13e4e7062cb548c936a0f40e..e6d411cfe95d53d7abe067496fa86cccc0fa3562 100644
--- a/typo3/sysext/fluid_styled_content/Configuration/TypoScript/Styling/setup.txt
+++ b/typo3/sysext/fluid_styled_content/Configuration/TypoScript/Styling/setup.txt
@@ -1,46 +1,79 @@
 plugin.tx_frontend._CSS_DEFAULT_STYLE (
-	.ce-align-left { text-align: left; }
-	.ce-align-center { text-align: center; }
-	.ce-align-right { text-align: right; }
-
-	.ce-table td, .ce-table th { vertical-align: top; }
-
-	.ce-textpic, .ce-nowrap .ce-bodytext, .ce-gallery, .ce-row, .ce-uploads li, .ce-uploads div { overflow: hidden; }
-
-	.ce-left .ce-gallery, .ce-column { float: left; }
-	.ce-center .ce-outer { position: relative; float: right; right: 50%; }
-	.ce-center .ce-inner { position: relative; float: right; right: -50%; }
-	.ce-right .ce-gallery { float: right; }
-
-	.ce-gallery figure { display: table; margin: 0; }
-	.ce-gallery figcaption { display: table-caption; caption-side: bottom; }
-	.ce-gallery img { display: block; }
-	.ce-gallery iframe { border-width: 0; }
-	.ce-border img,
-	.ce-border iframe {
-		border: {$styles.content.textmedia.borderWidth}px solid {$styles.content.textmedia.borderColor};
-		padding: {$styles.content.textmedia.borderPadding}px;
-	}
-
-	.ce-intext.ce-right .ce-gallery, .ce-intext.ce-left .ce-gallery, .ce-above .ce-gallery {
-		margin-bottom: {$styles.content.textmedia.textMargin}px;
-	}
-	.ce-intext.ce-right .ce-gallery { margin-left: {$styles.content.textmedia.textMargin}px; }
-	.ce-intext.ce-left .ce-gallery { margin-right: {$styles.content.textmedia.textMargin}px; }
-	.ce-below .ce-gallery { margin-top: {$styles.content.textmedia.textMargin}px; }
-
-	.ce-column { margin-right: {$styles.content.textmedia.columnSpacing}px; }
-	.ce-column:last-child { margin-right: 0; }
-
-	.ce-row { margin-bottom: {$styles.content.textmedia.rowSpacing}px; }
-	.ce-row:last-child { margin-bottom: 0; }
-
-	.ce-above .ce-bodytext { clear: both; }
-
-	.ce-intext.ce-left ol, .ce-intext.ce-left ul { padding-left: 40px; overflow: auto; }
-
-	.ce-uploads { margin: 0; padding: 0; }
-	.ce-uploads li { list-style: none outside none; margin: 1em 0; }
-	.ce-uploads img { float: left; padding-right: 1em; vertical-align: top; }
-	.ce-uploads span { display: block; }
-)
\ No newline at end of file
+    .ce-align-left { text-align: left; }
+    .ce-align-center { text-align: center; }
+    .ce-align-right { text-align: right; }
+
+    .ce-table td, .ce-table th { vertical-align: top; }
+
+    .ce-textpic, .ce-nowrap .ce-bodytext, .ce-gallery, .ce-row, .ce-uploads li, .ce-uploads div { overflow: hidden; }
+
+    .ce-left .ce-gallery, .ce-column { float: left; }
+    .ce-center .ce-outer { position: relative; float: right; right: 50%; }
+    .ce-center .ce-inner { position: relative; float: right; right: -50%; }
+    .ce-right .ce-gallery { float: right; }
+
+    .ce-gallery figure { display: table; margin: 0; }
+    .ce-gallery figcaption { display: table-caption; caption-side: bottom; }
+    .ce-gallery img { display: block; }
+    .ce-gallery iframe { border-width: 0; }
+    .ce-border img,
+    .ce-border iframe {
+        border: {$styles.content.textmedia.borderWidth}px solid {$styles.content.textmedia.borderColor};
+        padding: {$styles.content.textmedia.borderPadding}px;
+    }
+
+    .ce-intext.ce-right .ce-gallery, .ce-intext.ce-left .ce-gallery, .ce-above .ce-gallery {
+        margin-bottom: {$styles.content.textmedia.textMargin}px;
+    }
+    .ce-intext.ce-right .ce-gallery { margin-left: {$styles.content.textmedia.textMargin}px; }
+    .ce-intext.ce-left .ce-gallery { margin-right: {$styles.content.textmedia.textMargin}px; }
+    .ce-below .ce-gallery { margin-top: {$styles.content.textmedia.textMargin}px; }
+
+    .ce-column { margin-right: {$styles.content.textmedia.columnSpacing}px; }
+    .ce-column:last-child { margin-right: 0; }
+
+    .ce-row { margin-bottom: {$styles.content.textmedia.rowSpacing}px; }
+    .ce-row:last-child { margin-bottom: 0; }
+
+    .ce-above .ce-bodytext { clear: both; }
+
+    .ce-intext.ce-left ol, .ce-intext.ce-left ul { padding-left: 40px; overflow: auto; }
+
+    /* Headline */
+    .ce-headline-left { text-align: left; }
+    .ce-headline-center { text-align: center; }
+    .ce-headline-right { text-align: right; }
+
+    /* Uploads */
+    .ce-uploads { margin: 0; padding: 0; }
+    .ce-uploads li { list-style: none outside none; margin: 1em 0; }
+    .ce-uploads img { float: left; padding-right: 1em; vertical-align: top; }
+    .ce-uploads span { display: block; }
+
+    /* Table */
+    .ce-table { width: 100%; max-width: 100%; }
+    .ce-table th, .ce-table td { padding: 0.5em 0.75em; vertical-align: top; }
+    .ce-table thead th { border-bottom: 2px solid #dadada; }
+    .ce-table th, .ce-table td { border-top: 1px solid #dadada; }
+    .ce-table-striped tbody tr:nth-of-type(odd) { background-color: rgba(0,0,0,.05); }
+    .ce-table-bordered th, .ce-table-bordered td { border: 1px solid #dadada; }
+
+    /* Space */
+    .frame-space-before-extra-small { margin-top: 1em; }
+    .frame-space-before-small { margin-top: 2em; }
+    .frame-space-before-medium { margin-top: 3em; }
+    .frame-space-before-large { margin-top: 4em; }
+    .frame-space-before-extra-large { margin-top: 5em; }
+    .frame-space-after-extra-small { margin-bottom: 1em; }
+    .frame-space-after-small { margin-bottom: 2em; }
+    .frame-space-after-medium { margin-bottom: 3em; }
+    .frame-space-after-large { margin-bottom: 4em; }
+    .frame-space-after-extra-large { margin-bottom: 5em; }
+
+    /* Frame */
+    .frame-ruler-before:before { content: ''; display: block; border-top: 1px solid rgba(0,0,0,0.25); margin-bottom: 2em; }
+    .frame-ruler-after:after { content: ''; display: block; border-bottom: 1px solid rgba(0,0,0,0.25); margin-top: 2em; }
+    .frame-indent { margin-left: 15%; margin-right: 15%; }
+    .frame-indent-left { margin-left: 33%; }
+    .frame-indent-right { margin-right: 33%; }
+)
diff --git a/typo3/sysext/fluid_styled_content/Configuration/TypoScript/constants.txt b/typo3/sysext/fluid_styled_content/Configuration/TypoScript/constants.txt
new file mode 100644
index 0000000000000000000000000000000000000000..90fb339348d3ebf00448b596294150c5044a5959
--- /dev/null
+++ b/typo3/sysext/fluid_styled_content/Configuration/TypoScript/constants.txt
@@ -0,0 +1,60 @@
+styles.templates {
+    # cat=content/templates/b1; type=string; label= Path of Fluid Templates for all defined content elements
+    templateRootPath =
+    # cat=content/templates/b2; type=string; label= Path of Fluid Partials for all defined content elements
+    partialRootPath =
+    # cat=content/templates/b3; type=string; label= Path of Fluid Layouts for all defined content elements
+    layoutRootPath =
+}
+
+styles.content {
+    # cat=content/cHeader/h0; type=int[1-5]; label=Default Header type: Enter the number of the header layout to be used by default
+    defaultHeaderType = 2
+
+    # cat=content/cShortcut/t0; type=string; label=List of accepted tables
+    shortcut.tables = tt_content
+
+    # cat=content/parseFunc/a0; type=string; label=List of allowed HTML tags when rendering RTE content
+    allowTags = a, abbr, acronym, address, article, aside, b, bdo, big, blockquote, br, caption, center, cite, code, col, colgroup, dd, del, dfn, dl, div, dt, em, font, footer, header, h1, h2, h3, h4, h5, h6, hr, i, img, ins, kbd, label, li, link, meta, nav, ol, p, pre, q, samp, sdfield, section, small, span, strike, strong, style, sub, sup, table, thead, tbody, tfoot, td, th, tr, title, tt, u, ul, var
+
+    textmedia {
+        # cat=content/cTextmedia/b1; type=int+; label= Max Image/Media Width: This indicates that maximum number of pixels (width) a block of media elements inserted as content is allowed to consume
+        maxW = 600
+        # cat=content/cTextmedia/b2; type=int+; label= Max Image/Media Width (Text): Same as above, but this is the maximum width when text is wrapped around an block of media elements. Default is 50% of the normal Max Media Item Width
+        maxWInText = 300
+
+        # cat=content/cTextmedia/g1; type=int[0-100]; label= Advanced, Column space: Horizontal distance between media elements in a block in content elements of type "Media & Images". If you change this manually in your CSS, you need to adjust this setting accordingly
+        columnSpacing = 10
+        # cat=content/cTextmedia/g2; type=int[0-100]; label= Advanced, Row space: Vertical distance after each media elements row in content elements of type ""Text & Media". If you change this manually in your CSS, you need to adjust this setting accordingly
+        rowSpacing = 10
+        # cat=content/cTextmedia/g3; type=int[0-100]; label= Advanced, Margin to text: Horizontal distance between an imageblock and text in content elements of type "Text & Images"
+        textMargin = 10
+
+        # cat=content/cTextmedia/i1; type=color; label= Media element border, color: Bordercolor of media elements in content elements when "Border"-option for an element is set
+        borderColor = #000000
+        # cat=content/cTextmedia/i2; type=int[0-100]; label= Media element border, thickness: Thickness of border around media elements in content elements when "Border"-option for element is set
+        borderWidth = 2
+        # cat=content/cTextmedia/i3; type=int+; label= Media element border, padding: Padding left and right to the media element, around the border
+        borderPadding = 0
+
+        # cat=content/cTextmedia/c1; type=string; label= Click-enlarge Media Width: This specifies the width of the enlarged media element when click-enlarge is enabled
+        linkWrap.width = 800m
+        # cat=content/cTextmedia/c2; type=string; label= Click-enlarge Media Height: This specifies the height of the enlarged media element when click-enlarge is enabled
+        linkWrap.height = 600m
+        # cat=content/cTextmedia/c3; type=boolean; label= Advanced, New window: If set, every click-enlarged media element will open in it's own popup window and not the current popup window (which may have a wrong size for the media element to fit in)
+        linkWrap.newWindow = 0
+        # cat=content/cTextmedia/c4; type=boolean; label= Lightbox click-enlarge rendering: Whether media elements with click-enlarge checked should be rendered lightbox-compliant
+        linkWrap.lightboxEnabled = 0
+        # cat=content/cTextmedia/c5; type=string; label= Lightbox CSS class: Which CSS class to use for lightbox links (only applicable if lightbox rendering is enabled)
+        linkWrap.lightboxCssClass = lightbox
+        # cat=content/cTextmedia/c6; type=string; label= Lightbox rel="" attribute: Which rel="" attribute to use for lightbox links (only applicable if lightbox rendering is enabled)
+        linkWrap.lightboxRelAttribute = lightbox[{field:uid}]
+    }
+
+    links {
+        # cat=content/links/l2; type=small; label= Target for external links
+        extTarget = _blank
+        # cat=content/links/l3; type=string; label= Parts to keep when building links: Comma separated list of the link parts to show when building the link-text: scheme,path,query. Example: "" (empty) => www.example.com, "scheme,path" => http://www.example.com
+        keep = path
+    }
+}
diff --git a/typo3/sysext/fluid_styled_content/Configuration/TypoScript/setup.txt b/typo3/sysext/fluid_styled_content/Configuration/TypoScript/setup.txt
new file mode 100644
index 0000000000000000000000000000000000000000..eaca2c97580ee3b7521a354ed9705e6f0c8851b3
--- /dev/null
+++ b/typo3/sysext/fluid_styled_content/Configuration/TypoScript/setup.txt
@@ -0,0 +1,48 @@
+# Include setup
+<INCLUDE_TYPOSCRIPT: source="FILE:EXT:fluid_styled_content/Configuration/TypoScript/Helper/ParseFunc.txt">
+<INCLUDE_TYPOSCRIPT: source="FILE:EXT:fluid_styled_content/Configuration/TypoScript/Helper/FluidContent.txt">
+
+
+# Content element rendering
+tt_content {
+    stdWrap {
+        # Setup the edit panel for all content elements
+        editPanel = 1
+        editPanel {
+            allow = move, new, edit, hide, delete
+            label = %s
+            onlyCurrentPid = 1
+            previewBorder = 1
+            edit.displayRecord = 1
+        }
+    }
+}
+
+
+# Typical content elements
+<INCLUDE_TYPOSCRIPT: source="FILE:EXT:fluid_styled_content/Configuration/TypoScript/ContentElement/Bullets.txt">
+<INCLUDE_TYPOSCRIPT: source="FILE:EXT:fluid_styled_content/Configuration/TypoScript/ContentElement/Div.txt">
+<INCLUDE_TYPOSCRIPT: source="FILE:EXT:fluid_styled_content/Configuration/TypoScript/ContentElement/Header.txt">
+<INCLUDE_TYPOSCRIPT: source="FILE:EXT:fluid_styled_content/Configuration/TypoScript/ContentElement/Html.txt">
+<INCLUDE_TYPOSCRIPT: source="FILE:EXT:fluid_styled_content/Configuration/TypoScript/ContentElement/Image.txt">
+<INCLUDE_TYPOSCRIPT: source="FILE:EXT:fluid_styled_content/Configuration/TypoScript/ContentElement/List.txt">
+<INCLUDE_TYPOSCRIPT: source="FILE:EXT:fluid_styled_content/Configuration/TypoScript/ContentElement/Shortcut.txt">
+<INCLUDE_TYPOSCRIPT: source="FILE:EXT:fluid_styled_content/Configuration/TypoScript/ContentElement/Table.txt">
+<INCLUDE_TYPOSCRIPT: source="FILE:EXT:fluid_styled_content/Configuration/TypoScript/ContentElement/Text.txt">
+<INCLUDE_TYPOSCRIPT: source="FILE:EXT:fluid_styled_content/Configuration/TypoScript/ContentElement/Textmedia.txt">
+<INCLUDE_TYPOSCRIPT: source="FILE:EXT:fluid_styled_content/Configuration/TypoScript/ContentElement/Textpic.txt">
+<INCLUDE_TYPOSCRIPT: source="FILE:EXT:fluid_styled_content/Configuration/TypoScript/ContentElement/Uploads.txt">
+
+
+# Menu content elements
+<INCLUDE_TYPOSCRIPT: source="FILE:EXT:fluid_styled_content/Configuration/TypoScript/ContentElement/MenuAbstract.txt">
+<INCLUDE_TYPOSCRIPT: source="FILE:EXT:fluid_styled_content/Configuration/TypoScript/ContentElement/MenuCategorizedContent.txt">
+<INCLUDE_TYPOSCRIPT: source="FILE:EXT:fluid_styled_content/Configuration/TypoScript/ContentElement/MenuCategorizedPages.txt">
+<INCLUDE_TYPOSCRIPT: source="FILE:EXT:fluid_styled_content/Configuration/TypoScript/ContentElement/MenuPages.txt">
+<INCLUDE_TYPOSCRIPT: source="FILE:EXT:fluid_styled_content/Configuration/TypoScript/ContentElement/MenuSubpages.txt">
+<INCLUDE_TYPOSCRIPT: source="FILE:EXT:fluid_styled_content/Configuration/TypoScript/ContentElement/MenuSection.txt">
+<INCLUDE_TYPOSCRIPT: source="FILE:EXT:fluid_styled_content/Configuration/TypoScript/ContentElement/MenuSectionPages.txt">
+<INCLUDE_TYPOSCRIPT: source="FILE:EXT:fluid_styled_content/Configuration/TypoScript/ContentElement/MenuRecentlyUpdated.txt">
+<INCLUDE_TYPOSCRIPT: source="FILE:EXT:fluid_styled_content/Configuration/TypoScript/ContentElement/MenuRelatedPages.txt">
+<INCLUDE_TYPOSCRIPT: source="FILE:EXT:fluid_styled_content/Configuration/TypoScript/ContentElement/MenuSitemap.txt">
+<INCLUDE_TYPOSCRIPT: source="FILE:EXT:fluid_styled_content/Configuration/TypoScript/ContentElement/MenuSitemapPages.txt">
diff --git a/typo3/sysext/fluid_styled_content/Documentation/Configuration/Index.rst b/typo3/sysext/fluid_styled_content/Documentation/Configuration/Index.rst
index 40e8507557cac43a875c7cc8f3b329d715d8c063..032d0a1ef559a7f567f944876e9a7b844f627eb6 100644
--- a/typo3/sysext/fluid_styled_content/Documentation/Configuration/Index.rst
+++ b/typo3/sysext/fluid_styled_content/Documentation/Configuration/Index.rst
@@ -27,6 +27,6 @@ the fields an editor is allowed to use. Configuration like this is done using
 
    ConstantEditor/Index
    TypoScript/Index
-   PageTsConfig/Index
+   PageTs/Index
    OverridingFluidTemplates/Index
 
diff --git a/typo3/sysext/fluid_styled_content/Documentation/Configuration/PageTsConfig/Index.rst b/typo3/sysext/fluid_styled_content/Documentation/Configuration/PageTs/Index.rst
similarity index 67%
rename from typo3/sysext/fluid_styled_content/Documentation/Configuration/PageTsConfig/Index.rst
rename to typo3/sysext/fluid_styled_content/Documentation/Configuration/PageTs/Index.rst
index 2656b60a6554063da71c9bb3ad5fb43a5999679d..20c022450f6069fa753c3aa29aad76a359d30feb 100644
--- a/typo3/sysext/fluid_styled_content/Documentation/Configuration/PageTsConfig/Index.rst
+++ b/typo3/sysext/fluid_styled_content/Documentation/Configuration/PageTs/Index.rst
@@ -7,5 +7,5 @@ Page TSconfig
 =============
 
 Page TSconfig can be found in the directory
-:file:`EXT:fluid_styled_content/Configuration/PageTSconfig/`. The file :file:`NewContentElementWizard.ts`
+:file:`EXT:fluid_styled_content/Configuration/PageTS/Mod/Wizards/`. The file :file:`NewContentElement.txt`
 is included. It contains the configuration of the "New Content Element Wizard".
diff --git a/typo3/sysext/fluid_styled_content/Documentation/Configuration/TypoScript/Index.rst b/typo3/sysext/fluid_styled_content/Documentation/Configuration/TypoScript/Index.rst
index fe3565e78b9c896483832f36c0a8383bd4e71b4b..8b9e83e48b834629c1dc188b7a3b136615ab735e 100644
--- a/typo3/sysext/fluid_styled_content/Documentation/Configuration/TypoScript/Index.rst
+++ b/typo3/sysext/fluid_styled_content/Documentation/Configuration/TypoScript/Index.rst
@@ -36,14 +36,14 @@ In this folder there are two files:
     need to activate the extension "Frontend Editing (feedit)" in the Extension Manager to
     see this in action.
 
-In the folder :file:`Setup` there are files which are included by the file
+In the folder :file:`Helper` there are files which are included by the file
 :file:`setup.txt` as mentioned above. These are:
 
-- :file:`lib.parseFunc.ts` - Creates persistent ParseFunc setup for non-HTML content
+- :file:`ParseFunc.txt` - Creates persistent ParseFunc setup for non-HTML content
 
-- :file:`lib.stdheader.ts` - Copies the "Header only" content element into the `lib.stdheader`.
+- :file:`StandardHeader.txt` - Copies the "Header only" content element into the `lib.stdheader`.
 
-- :file:`styles.content.get.ts` - Defines `styles.content.get` as a `CONTENT` object for `colPos = 0`.
+- :file:`StylesContentGet.txt` - Defines `styles.content.get` as a `CONTENT` object for `colPos = 0`.
 
-- :file:`lib.fluidContent.ts` - Default configuration for content elements using
+- :file:`FluidContent.txt` - Default configuration for content elements using
   FLUIDTEMPLATE
diff --git a/typo3/sysext/fluid_styled_content/Resources/Private/Language/Database.xlf b/typo3/sysext/fluid_styled_content/Resources/Private/Language/Database.xlf
deleted file mode 100644
index 138c578e7cb020be06e53a8228a6bfb0bb591dd9..0000000000000000000000000000000000000000
--- a/typo3/sysext/fluid_styled_content/Resources/Private/Language/Database.xlf
+++ /dev/null
@@ -1,59 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<xliff version="1.0" xmlns:t3="http://typo3.org/schemas/xliff">
-	<file t3:id="1427834041" source-language="en" datatype="plaintext" original="messages" date="2014-02-07T20:22:32Z" product-name="fluid_styled_content">
-		<header/>
-		<body>
-			<trans-unit id="tt_content.CType.textmedia">
-				<source>Text &amp; Media</source>
-			</trans-unit>
-			<trans-unit id="tt_content.bullets_type">
-				<source>Type of bullets</source>
-			</trans-unit>
-			<trans-unit id="tt_content.bullets_type.0">
-				<source>Unordered list (bullets)</source>
-			</trans-unit>
-			<trans-unit id="tt_content.bullets_type.1">
-				<source>Ordered list (numbers)</source>
-			</trans-unit>
-			<trans-unit id="tt_content.bullets_type.2">
-				<source>Definition list</source>
-			</trans-unit>
-			<trans-unit id="tt_content.uploads_description">
-				<source>Display description</source>
-			</trans-unit>
-			<trans-unit id="tt_content.uploads_type">
-				<source>Display file/icon/thumbnail</source>
-			</trans-unit>
-			<trans-unit id="tt_content.uploads_type.0">
-				<source>Only file name</source>
-			</trans-unit>
-			<trans-unit id="tt_content.uploads_type.1">
-				<source>File name and file extension icon</source>
-			</trans-unit>
-			<trans-unit id="tt_content.uploads_type.2">
-				<source>File name and thumbnail (if possible)</source>
-			</trans-unit>
-			<trans-unit id="tt_content.palette.textmedia.imagewidth">
-				<source>Width of each element (px)</source>
-			</trans-unit>
-			<trans-unit id="tt_content.palette.textmedia.imageheight">
-				<source>Height of each element (px)</source>
-			</trans-unit>
-			<trans-unit id="tt_content.palette.textmedia.imageborder">
-				<source>Border around each element</source>
-			</trans-unit>
-			<trans-unit id="tt_content.palette.gallerySettings">
-				<source>Gallery Settings</source>
-			</trans-unit>
-			<trans-unit id="tt_content.palette.mediaAdjustments">
-				<source>Media Adjustments</source>
-			</trans-unit>
-			<trans-unit id="tt_content.asset_references">
-				<source>Media elements</source>
-			</trans-unit>
-			<trans-unit id="tt_content.asset_references.addFileReference">
-				<source>Add media file</source>
-			</trans-unit>
-		</body>
-	</file>
-</xliff>
diff --git a/typo3/sysext/fluid_styled_content/Resources/Private/Language/FrontendEditing.xlf b/typo3/sysext/fluid_styled_content/Resources/Private/Language/FrontendEditing.xlf
index 8a9cf18451e7d03a2a3a9e5cd1d1084095c54bf2..471f236c3f2bca279ca08bac61262626d5237338 100644
--- a/typo3/sysext/fluid_styled_content/Resources/Private/Language/FrontendEditing.xlf
+++ b/typo3/sysext/fluid_styled_content/Resources/Private/Language/FrontendEditing.xlf
@@ -24,9 +24,15 @@
 			<trans-unit id="editIcon.table">
 				<source>Edit table</source>
 			</trans-unit>
+			<trans-unit id="editIcon.image">
+				<source>Edit image</source>
+			</trans-unit>
 			<trans-unit id="editIcon.textmedia">
 				<source>Edit text &amp; media</source>
 			</trans-unit>
+			<trans-unit id="editIcon.textpic">
+				<source>Edit text &amp; images</source>
+			</trans-unit>
 			<trans-unit id="editIcon.uploads">
 				<source>Edit file list</source>
 			</trans-unit>
diff --git a/typo3/sysext/fluid_styled_content/Resources/Private/Language/locallang_em.xlf b/typo3/sysext/fluid_styled_content/Resources/Private/Language/locallang_em.xlf
deleted file mode 100644
index b70cc1276853ee2fe7fe3f65e00ed39101bfb9d0..0000000000000000000000000000000000000000
--- a/typo3/sysext/fluid_styled_content/Resources/Private/Language/locallang_em.xlf
+++ /dev/null
@@ -1,11 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<xliff version="1.0" xmlns:t3="http://typo3.org/schemas/xliff">
-	<file t3:id="1443455370" source-language="en" datatype="plaintext" original="messages" date="2014-02-07T20:22:32Z" product-name="fluid_styled_content">
-		<header/>
-		<body>
-			<trans-unit id="fluid_styled_content.config.loadContentElementWizardTsConfig">
-				<source>Load Page TSconfig with "New Content Element Wizard" definitions. The definitions can also be loaded manually by including it in a page.</source>
-			</trans-unit>
-		</body>
-	</file>
-</xliff>
diff --git a/typo3/sysext/fluid_styled_content/Resources/Private/Layouts/ContentFooter.html b/typo3/sysext/fluid_styled_content/Resources/Private/Layouts/ContentFooter.html
deleted file mode 100644
index e11fcd3e8e92891884fdc4f351725edc94b1b2ec..0000000000000000000000000000000000000000
--- a/typo3/sysext/fluid_styled_content/Resources/Private/Layouts/ContentFooter.html
+++ /dev/null
@@ -1,6 +0,0 @@
-<html xmlns:f="http://typo3.org/ns/TYPO3/CMS/Fluid/ViewHelpers" data-namespace-typo3-fluid="true">
-<div id="c{data.uid}">
-	<f:render section="content" />
-	<f:render partial="Footer" arguments="{_all}" />
-</div>
-</html>
\ No newline at end of file
diff --git a/typo3/sysext/fluid_styled_content/Resources/Private/Layouts/Default.html b/typo3/sysext/fluid_styled_content/Resources/Private/Layouts/Default.html
new file mode 100644
index 0000000000000000000000000000000000000000..bbea64ff937d110addd3acb55be764c4de7af159
--- /dev/null
+++ b/typo3/sysext/fluid_styled_content/Resources/Private/Layouts/Default.html
@@ -0,0 +1,55 @@
+<html xmlns:f="http://typo3.org/ns/TYPO3/CMS/Fluid/ViewHelpers" data-namespace-typo3-fluid="true">
+<f:spaceless>
+	<f:if condition="{data.frame_class} != none">
+		<f:then>
+
+			<div id="c{data.uid}" class="frame frame-{data.frame_class} frame-type-{data.CType} frame-layout-{data.layout}{f:if(condition: data.space_before_class, then: ' frame-space-before-{data.space_before_class}')}{f:if(condition: data.space_after_class, then: ' frame-space-after-{data.space_after_class}')}">
+				<f:if condition="{data._LOCALIZED_UID}">
+					<a id="c{data._LOCALIZED_UID}"></a>
+				</f:if>
+				<f:render section="Before" optional="true">
+					<f:render partial="DropIn/Before/All" arguments="{_all}" />
+				</f:render>
+				<f:render section="Header" optional="true">
+					<f:render partial="Header/All" arguments="{_all}" />
+				</f:render>
+				<f:render section="Main" optional="true" />
+				<f:render section="Footer" optional="true">
+					<f:render partial="Footer/All" arguments="{_all}" />
+				</f:render>
+				<f:render section="After" optional="true">
+					<f:render partial="DropIn/After/All" arguments="{_all}" />
+				</f:render>
+			</div>
+
+		</f:then>
+		<f:else>
+
+			<a id="c{data.uid}"></a>
+			<f:if condition="{data._LOCALIZED_UID}">
+				<a id="c{data._LOCALIZED_UID}"></a>
+			</f:if>
+			<f:if condition="{data.space_before_class}">
+				<div class="frame-space-before-{data.space_before_class}"></div>
+			</f:if>
+			<f:render section="Before" optional="true">
+				<f:render partial="DropIn/Before/All" arguments="{_all}" />
+			</f:render>
+			<f:render section="Header" optional="true">
+				<f:render partial="Header/All" arguments="{_all}" />
+			</f:render>
+			<f:render section="Main" optional="true" />
+			<f:render section="Footer" optional="true">
+				<f:render partial="Footer/All" arguments="{_all}" />
+			</f:render>
+			<f:render section="After" optional="true">
+				<f:render partial="DropIn/After/All" arguments="{_all}" />
+			</f:render>
+			<f:if condition="{data.space_after_class}">
+				<div class="frame-space-after-{data.space_after_class}"></div>
+			</f:if>
+
+		</f:else>
+	</f:if>
+</f:spaceless>
+</html>
diff --git a/typo3/sysext/fluid_styled_content/Resources/Private/Layouts/HeaderContentFooter.html b/typo3/sysext/fluid_styled_content/Resources/Private/Layouts/HeaderContentFooter.html
deleted file mode 100644
index 3d25eeec5c46c454e1612cfbca85ea1a43605ef9..0000000000000000000000000000000000000000
--- a/typo3/sysext/fluid_styled_content/Resources/Private/Layouts/HeaderContentFooter.html
+++ /dev/null
@@ -1,7 +0,0 @@
-<html xmlns:f="http://typo3.org/ns/TYPO3/CMS/Fluid/ViewHelpers" data-namespace-typo3-fluid="true">
-<div id="c{data.uid}">
-	<f:render partial="Header" arguments="{_all}" />
-	<f:render section="content" />
-	<f:render partial="Footer" arguments="{_all}" />
-</div>
-</html>
\ No newline at end of file
diff --git a/typo3/sysext/fluid_styled_content/Resources/Private/Layouts/HeaderFooter.html b/typo3/sysext/fluid_styled_content/Resources/Private/Layouts/HeaderFooter.html
deleted file mode 100644
index cb7d20e843f4fbc60e228c477014ce07b3c27819..0000000000000000000000000000000000000000
--- a/typo3/sysext/fluid_styled_content/Resources/Private/Layouts/HeaderFooter.html
+++ /dev/null
@@ -1,6 +0,0 @@
-<html xmlns:f="http://typo3.org/ns/TYPO3/CMS/Fluid/ViewHelpers" data-namespace-typo3-fluid="true">
-<div id="c{data.uid}">
-	<f:render partial="Header" arguments="{_all}" />
-	<f:render partial="Footer" arguments="{_all}" />
-</div>
-</html>
\ No newline at end of file
diff --git a/typo3/sysext/fluid_styled_content/Resources/Private/Partials/DropIn/After/All.html b/typo3/sysext/fluid_styled_content/Resources/Private/Partials/DropIn/After/All.html
new file mode 100644
index 0000000000000000000000000000000000000000..e54a2b03a9851e6c2d7129bd36cedf0774af730a
--- /dev/null
+++ b/typo3/sysext/fluid_styled_content/Resources/Private/Partials/DropIn/After/All.html
@@ -0,0 +1,2 @@
+<html xmlns:f="http://typo3.org/ns/TYPO3/CMS/Fluid/ViewHelpers" data-namespace-typo3-fluid="true">
+<f:comment>DropIn Placeholder. Will be rendered after all other output inside the wrapping container.</f:comment>
diff --git a/typo3/sysext/fluid_styled_content/Resources/Private/Partials/DropIn/Before/All.html b/typo3/sysext/fluid_styled_content/Resources/Private/Partials/DropIn/Before/All.html
new file mode 100644
index 0000000000000000000000000000000000000000..2cbef0c3c99edd11a9b262f5b3579e6b15221e7a
--- /dev/null
+++ b/typo3/sysext/fluid_styled_content/Resources/Private/Partials/DropIn/Before/All.html
@@ -0,0 +1,2 @@
+<html xmlns:f="http://typo3.org/ns/TYPO3/CMS/Fluid/ViewHelpers" data-namespace-typo3-fluid="true">
+<f:comment>DropIn Placeholder. Will be rendered before any other output inside the wrapping container.</f:comment>
diff --git a/typo3/sysext/fluid_styled_content/Resources/Private/Partials/Footer.html b/typo3/sysext/fluid_styled_content/Resources/Private/Partials/Footer.html
deleted file mode 100644
index f6b1a7924be146dce7af099eb7599128c502feb2..0000000000000000000000000000000000000000
--- a/typo3/sysext/fluid_styled_content/Resources/Private/Partials/Footer.html
+++ /dev/null
@@ -1,7 +0,0 @@
-<html xmlns:f="http://typo3.org/ns/TYPO3/CMS/Fluid/ViewHelpers" xmlns:ce="http://typo3.org/ns/TYPO3/CMS/FluidStyledContent/ViewHelpers" data-namespace-typo3-fluid="true">
-<f:if condition="{data.linkToTop}">
-<p>
-	<ce:link.section name="top"><f:translate key="toTop" extensionName="fluid_styled_content" /></ce:link.section>
-</p>
-</f:if>
-</html>
\ No newline at end of file
diff --git a/typo3/sysext/fluid_styled_content/Resources/Private/Partials/Footer/All.html b/typo3/sysext/fluid_styled_content/Resources/Private/Partials/Footer/All.html
new file mode 100644
index 0000000000000000000000000000000000000000..833d07e2b7c8561ec63cfbd9ee6bd135af16241c
--- /dev/null
+++ b/typo3/sysext/fluid_styled_content/Resources/Private/Partials/Footer/All.html
@@ -0,0 +1,7 @@
+<html xmlns:f="http://typo3.org/ns/TYPO3/CMS/Fluid/ViewHelpers" data-namespace-typo3-fluid="true">
+<f:if condition="{data.linkToTop}">
+	<p>
+		<a href="#top"><f:translate key="toTop" extensionName="fluid_styled_content" /></a>
+	</p>
+</f:if>
+</html>
diff --git a/typo3/sysext/fluid_styled_content/Resources/Private/Partials/Header.html b/typo3/sysext/fluid_styled_content/Resources/Private/Partials/Header.html
deleted file mode 100644
index bb3c416d711c90e8ecdfe709b1b4e7330192fa18..0000000000000000000000000000000000000000
--- a/typo3/sysext/fluid_styled_content/Resources/Private/Partials/Header.html
+++ /dev/null
@@ -1,42 +0,0 @@
-<html xmlns:f="http://typo3.org/ns/TYPO3/CMS/Fluid/ViewHelpers" data-namespace-typo3-fluid="true">
-<f:if condition="{data.header_layout} != 100">
-	<f:if condition="{data.header}">
-		<f:if condition="{data.subheader}">
-			<f:then>
-				<header>
-			</f:then>
-			<f:else>
-				<f:if condition="{data.date}">
-					<header>
-				</f:if>
-			</f:else>
-		</f:if>
-
-		<f:render partial="Header/Header" arguments="{
-			header: data.header,
-			layout: data.header_layout,
-			link: data.header_link,
-			default: settings.defaultHeaderType}" />
-
-		<f:if condition="{data.subheader}">
-			<f:render partial="Header/SubHeader" arguments="{
-				subheader: data.subheader,
-				layout: data.header_layout,
-				default: settings.defaultHeaderType}" />
-		</f:if>
-
-		<f:render partial="Header/Date" arguments="{_all}" />
-
-		<f:if condition="{data.subheader}">
-			<f:then>
-				</header>
-			</f:then>
-			<f:else>
-				<f:if condition="{data.date}">
-					</header>
-				</f:if>
-			</f:else>
-		</f:if>
-	</f:if>
-</f:if>
-</html>
\ No newline at end of file
diff --git a/typo3/sysext/fluid_styled_content/Resources/Private/Partials/Header/All.html b/typo3/sysext/fluid_styled_content/Resources/Private/Partials/Header/All.html
new file mode 100644
index 0000000000000000000000000000000000000000..681711be779c037c509f604698b48f8441617c14
--- /dev/null
+++ b/typo3/sysext/fluid_styled_content/Resources/Private/Partials/Header/All.html
@@ -0,0 +1,22 @@
+<html xmlns:f="http://typo3.org/ns/TYPO3/CMS/Fluid/ViewHelpers" data-namespace-typo3-fluid="true">
+<f:if condition="{data.header_layout} != 100">
+	<f:if condition="{data.header} || {data.subheader} || {data.date}">
+		<header>
+			<f:render partial="Header/Header" arguments="{
+				header: data.header,
+				layout: data.header_layout,
+				positionClass: '{f:if(condition: data.header_position, then: \'ce-headline-{data.header_position}\')}',
+				link: data.header_link,
+				default: settings.defaultHeaderType}" />
+			<f:render partial="Header/SubHeader" arguments="{
+				subheader: data.subheader,
+				layout: data.header_layout,
+				positionClass: '{f:if(condition: data.header_position, then: \'ce-headline-{data.header_position}\')}',
+				default: settings.defaultHeaderType}" />
+			<f:render partial="Header/Date" arguments="{
+				date: data.date,
+				positionClass: '{f:if(condition: data.header_position, then: \'ce-headline-{data.header_position}\')}'}" />
+		</header>
+	</f:if>
+</f:if>
+</html>
diff --git a/typo3/sysext/fluid_styled_content/Resources/Private/Partials/Header/Date.html b/typo3/sysext/fluid_styled_content/Resources/Private/Partials/Header/Date.html
index 0e5081f611f670ca16ce3e47fec4ad8636ea741b..d205a871054d7ae8ebea5f766ead44b327388911 100644
--- a/typo3/sysext/fluid_styled_content/Resources/Private/Partials/Header/Date.html
+++ b/typo3/sysext/fluid_styled_content/Resources/Private/Partials/Header/Date.html
@@ -1,8 +1,8 @@
 <html xmlns:f="http://typo3.org/ns/TYPO3/CMS/Fluid/ViewHelpers" data-namespace-typo3-fluid="true">
-<f:if condition="{data.date}">
-	<p>
-		<time datetime="{data.date -> f:format.date(format: '%Y-%m-%d')}">
-			<f:format.date format="%B %e, %Y">{data.date}</f:format.date>
+<f:if condition="{date}">
+	<p class="{positionClass}">
+		<time datetime="{date -> f:format.date(format: '%Y-%m-%d')}">
+			<f:format.date format="%B %e, %Y">{date}</f:format.date>
 		</time>
 	</p>
 </f:if>
diff --git a/typo3/sysext/fluid_styled_content/Resources/Private/Partials/Header/Header.html b/typo3/sysext/fluid_styled_content/Resources/Private/Partials/Header/Header.html
index b9b02ed01d2516f55b51de21d1634da7b557688b..c9fa8a8ccc6d4ca0c5879bd81fb7ff1ae01413cc 100644
--- a/typo3/sysext/fluid_styled_content/Resources/Private/Partials/Header/Header.html
+++ b/typo3/sysext/fluid_styled_content/Resources/Private/Partials/Header/Header.html
@@ -1,33 +1,48 @@
 <html xmlns:f="http://typo3.org/ns/TYPO3/CMS/Fluid/ViewHelpers" data-namespace-typo3-fluid="true">
-<f:switch expression="{layout}">
-	<f:case value="1">
-		<h1><f:link.typolink parameter="{link}">{header}</f:link.typolink></h1>
-	</f:case>
-	<f:case value="2">
-		<h2><f:link.typolink parameter="{link}">{header}</f:link.typolink></h2>
-	</f:case>
-	<f:case value="3">
-		<h3><f:link.typolink parameter="{link}">{header}</f:link.typolink></h3>
-	</f:case>
-	<f:case value="4">
-		<h4><f:link.typolink parameter="{link}">{header}</f:link.typolink></h4>
-	</f:case>
-	<f:case value="5">
-		<h5><f:link.typolink parameter="{link}">{header}</f:link.typolink></h5>
-	</f:case>
-	<f:case value="6">
-		<h6><f:link.typolink parameter="{link}">{header}</f:link.typolink></h6>
-	</f:case>
-	<f:case value="100">
-		<f:comment> -- do not show header -- </f:comment>
-	</f:case>
-	<f:defaultCase>
-		<f:if condition="{default}">
-			<f:render partial="Header/Header" arguments="{
-				header: header,
-				layout: default,
-				link: link}" />
-		</f:if>
-	</f:defaultCase>
-</f:switch>
+<f:if condition="{header}">
+	<f:switch expression="{layout}">
+		<f:case value="1">
+			<h1 class="{positionClass}">
+				<f:link.typolink parameter="{link}">{header}</f:link.typolink>
+			</h1>
+		</f:case>
+		<f:case value="2">
+			<h2 class="{positionClass}">
+				<f:link.typolink parameter="{link}">{header}</f:link.typolink>
+			</h2>
+		</f:case>
+		<f:case value="3">
+			<h3 class="{positionClass}">
+				<f:link.typolink parameter="{link}">{header}</f:link.typolink>
+			</h3>
+		</f:case>
+		<f:case value="4">
+			<h4 class="{positionClass}">
+				<f:link.typolink parameter="{link}">{header}</f:link.typolink>
+			</h4>
+		</f:case>
+		<f:case value="5">
+			<h5 class="{positionClass}">
+				<f:link.typolink parameter="{link}">{header}</f:link.typolink>
+			</h5>
+		</f:case>
+		<f:case value="6">
+			<h6 class="{positionClass}">
+				<f:link.typolink parameter="{link}">{header}</f:link.typolink>
+			</h6>
+		</f:case>
+		<f:case value="100">
+			<f:comment> -- do not show header -- </f:comment>
+		</f:case>
+		<f:defaultCase>
+			<f:if condition="{default}">
+				<f:render partial="Header/Header" arguments="{
+					header: header,
+					layout: default,
+					positionClass: positionClass,
+					link: link}" />
+			</f:if>
+		</f:defaultCase>
+	</f:switch>
+</f:if>
 </html>
diff --git a/typo3/sysext/fluid_styled_content/Resources/Private/Partials/Header/SubHeader.html b/typo3/sysext/fluid_styled_content/Resources/Private/Partials/Header/SubHeader.html
index dc117ee9ddd0b74af7f2050468d70b5382e116e7..357d2d21ca6b2149fd6c3dca0f63de549de68b14 100644
--- a/typo3/sysext/fluid_styled_content/Resources/Private/Partials/Header/SubHeader.html
+++ b/typo3/sysext/fluid_styled_content/Resources/Private/Partials/Header/SubHeader.html
@@ -1,26 +1,39 @@
 <html xmlns:f="http://typo3.org/ns/TYPO3/CMS/Fluid/ViewHelpers" data-namespace-typo3-fluid="true">
-<f:switch expression="{layout}">
-	<f:case value="1">
-		<h2>{subheader}</h2>
-	</f:case>
-	<f:case value="2">
-		<h3>{subheader}</h3>
-	</f:case>
-	<f:case value="3">
-		<h4>{subheader}</h4>
-	</f:case>
-	<f:case value="4">
-		<h5>{subheader}</h5>
-	</f:case>
-	<f:case value="5">
-		<h6>{subheader}</h6>
-	</f:case>
-	<f:defaultCase>
-		<f:if condition="{default}">
-			<f:render partial="Header/SubHeader" arguments="{
-				subheader: subheader,
-				layout: default}" />
-		</f:if>
-	</f:defaultCase>
-</f:switch>
+<f:if condition="{subheader}">
+	<f:switch expression="{layout}">
+		<f:case value="1">
+			<h2 class="{positionClass}">
+				{subheader}
+			</h2>
+		</f:case>
+		<f:case value="2">
+			<h3 class="{positionClass}">
+				{subheader}
+			</h3>
+		</f:case>
+		<f:case value="3">
+			<h4 class="{positionClass}">
+				{subheader}
+			</h4>
+		</f:case>
+		<f:case value="4">
+			<h5 class="{positionClass}">
+				{subheader}
+			</h5>
+		</f:case>
+		<f:case value="5">
+			<h6 class="{positionClass}">
+				{subheader}
+			</h6>
+		</f:case>
+		<f:defaultCase>
+			<f:if condition="{default}">
+				<f:render partial="Header/SubHeader" arguments="{
+					subheader: subheader,
+					positionClass: positionClass,
+					layout: default}" />
+			</f:if>
+		</f:defaultCase>
+	</f:switch>
+</f:if>
 </html>
diff --git a/typo3/sysext/fluid_styled_content/Resources/Private/Partials/Media/Gallery.html b/typo3/sysext/fluid_styled_content/Resources/Private/Partials/Media/Gallery.html
new file mode 100644
index 0000000000000000000000000000000000000000..33824fc886b94e5f75190bb532a29a80feb2c67a
--- /dev/null
+++ b/typo3/sysext/fluid_styled_content/Resources/Private/Partials/Media/Gallery.html
@@ -0,0 +1,25 @@
+<html xmlns:f="http://typo3.org/ns/TYPO3/CMS/Fluid/ViewHelpers" xmlns:ce="http://typo3.org/ns/TYPO3/CMS/FluidStyledContent/ViewHelpers" data-namespace-typo3-fluid="true">
+<f:if condition="{gallery.rows}">
+	<div class="ce-gallery{f:if(condition: data.imageborder, then: ' ce-border')}" data-ce-columns="{gallery.count.columns}" data-ce-images="{gallery.count.files}">
+		<f:if condition="{gallery.position.horizontal} == 'center'">
+			<div class="ce-outer">
+				<div class="ce-inner">
+		</f:if>
+		<f:for each="{gallery.rows}" as="row">
+			<div class="ce-row">
+				<f:for each="{row.columns}" as="column">
+					<f:if condition="{column.media}">
+						<div class="ce-column">
+							<f:render partial="Media/Type" arguments="{file: column.media, dimensions: column.dimensions, data: data, settings: settings}" />
+						</div>
+					</f:if>
+				</f:for>
+			</div>
+		</f:for>
+		<f:if condition="{gallery.position.horizontal} == 'center'">
+				</div>
+			</div>
+		</f:if>
+	</div>
+</f:if>
+</html>
diff --git a/typo3/sysext/fluid_styled_content/Resources/Private/Partials/Media/Rendering/Audio.html b/typo3/sysext/fluid_styled_content/Resources/Private/Partials/Media/Rendering/Audio.html
new file mode 100644
index 0000000000000000000000000000000000000000..7ba0e3520f64fa97286424d1b1985c6e253e6319
--- /dev/null
+++ b/typo3/sysext/fluid_styled_content/Resources/Private/Partials/Media/Rendering/Audio.html
@@ -0,0 +1,3 @@
+<html xmlns:f="http://typo3.org/ns/TYPO3/CMS/Fluid/ViewHelpers" data-namespace-typo3-fluid="true">
+<f:media class="audio-embed-item" file="{file}" width="{dimensions.width}" height="{dimensions.height}" alt="{file.alternative}" title="{file.title}" />
+</html>
diff --git a/typo3/sysext/fluid_styled_content/Resources/Private/Partials/Media/Rendering/Image.html b/typo3/sysext/fluid_styled_content/Resources/Private/Partials/Media/Rendering/Image.html
new file mode 100644
index 0000000000000000000000000000000000000000..2d384b37fbf65e4e0462895a4b9c20c9e33156da
--- /dev/null
+++ b/typo3/sysext/fluid_styled_content/Resources/Private/Partials/Media/Rendering/Image.html
@@ -0,0 +1,3 @@
+<html xmlns:f="http://typo3.org/ns/TYPO3/CMS/Fluid/ViewHelpers" data-namespace-typo3-fluid="true">
+<f:media class="image-embed-item" file="{file}" width="{dimensions.width}" height="{dimensions.height}" alt="{file.alternative}" title="{file.title}" />
+</html>
diff --git a/typo3/sysext/fluid_styled_content/Resources/Private/Partials/Media/Rendering/Video.html b/typo3/sysext/fluid_styled_content/Resources/Private/Partials/Media/Rendering/Video.html
new file mode 100644
index 0000000000000000000000000000000000000000..37f69f12dea1989584ec9f0e250786f50f265168
--- /dev/null
+++ b/typo3/sysext/fluid_styled_content/Resources/Private/Partials/Media/Rendering/Video.html
@@ -0,0 +1,3 @@
+<html xmlns:f="http://typo3.org/ns/TYPO3/CMS/Fluid/ViewHelpers" data-namespace-typo3-fluid="true">
+<f:media class="video-embed-item" file="{file}" width="{dimensions.width}" height="{dimensions.height}" alt="{file.alternative}" title="{file.title}" />
+</html>
diff --git a/typo3/sysext/fluid_styled_content/Resources/Private/Partials/Media/Type.html b/typo3/sysext/fluid_styled_content/Resources/Private/Partials/Media/Type.html
new file mode 100644
index 0000000000000000000000000000000000000000..1c7161cd49d4ade8004678bd0454b93c0e2777f5
--- /dev/null
+++ b/typo3/sysext/fluid_styled_content/Resources/Private/Partials/Media/Type.html
@@ -0,0 +1,13 @@
+<html xmlns:f="http://typo3.org/ns/TYPO3/CMS/Fluid/ViewHelpers" data-namespace-typo3-fluid="true">
+<f:switch expression="{file.type}">
+	<f:case value="3">
+		<f:render partial="Media/Type/Audio" arguments="{file: file, dimensions: dimensions, data: data, settings: settings}" />
+	</f:case>
+	<f:case value="4">
+		<f:render partial="Media/Type/Video" arguments="{file: file, dimensions: dimensions, data: data, settings: settings}" />
+	</f:case>
+	<f:defaultCase>
+		<f:render partial="Media/Type/Image" arguments="{file: file, dimensions: dimensions, data: data, settings: settings}" />
+	</f:defaultCase>
+</f:switch>
+</html>
diff --git a/typo3/sysext/fluid_styled_content/Resources/Private/Partials/Media/Type/Audio.html b/typo3/sysext/fluid_styled_content/Resources/Private/Partials/Media/Type/Audio.html
new file mode 100644
index 0000000000000000000000000000000000000000..c6124297af49fbd889673c3e9d1614eb495c4e9a
--- /dev/null
+++ b/typo3/sysext/fluid_styled_content/Resources/Private/Partials/Media/Type/Audio.html
@@ -0,0 +1,12 @@
+<html xmlns:f="http://typo3.org/ns/TYPO3/CMS/Fluid/ViewHelpers" data-namespace-typo3-fluid="true">
+<figure class="audio">
+	<div class="audio-embed">
+		<f:render partial="Media/Rendering/Video" arguments="{file: file, dimensions: dimensions, settings: settings}" />
+	</div>
+	<f:if condition="{file.description}">
+		<figcaption class="audio-caption">
+			{file.description}
+		</figcaption>
+	</f:if>
+</figure>
+</html>
diff --git a/typo3/sysext/fluid_styled_content/Resources/Private/Partials/Media/Type/Image.html b/typo3/sysext/fluid_styled_content/Resources/Private/Partials/Media/Type/Image.html
new file mode 100644
index 0000000000000000000000000000000000000000..6824a681a197015b4e934ec4cf7bab4bcb08103d
--- /dev/null
+++ b/typo3/sysext/fluid_styled_content/Resources/Private/Partials/Media/Type/Image.html
@@ -0,0 +1,28 @@
+<html xmlns:f="http://typo3.org/ns/TYPO3/CMS/Fluid/ViewHelpers" xmlns:ce="http://typo3.org/ns/TYPO3/CMS/FluidStyledContent/ViewHelpers" data-namespace-typo3-fluid="true">
+<figure class="image">
+	<f:if condition="{file.link}">
+		<f:then>
+			<f:link.typolink parameter="{file.link}" title="{file.title}">
+				<f:render partial="Media/Rendering/Image" arguments="{file: file, dimensions: dimensions, settings: settings}" />
+			</f:link.typolink>
+		</f:then>
+		<f:else>
+			<f:if condition="{data.image_zoom}">
+				<f:then>
+					<ce:link.clickEnlarge image="{file}" configuration="{settings.media.popup}">
+						<f:render partial="Media/Rendering/Image" arguments="{file: file, dimensions: dimensions, settings: settings}" />
+					</ce:link.clickEnlarge>
+				</f:then>
+				<f:else>
+					<f:render partial="Media/Rendering/Image" arguments="{file: file, dimensions: dimensions, settings: settings}" />
+				</f:else>
+			</f:if>
+		</f:else>
+	</f:if>
+	<f:if condition="{file.description}">
+		<figcaption class="image-caption">
+			{file.description}
+		</figcaption>
+	</f:if>
+</figure>
+</html>
diff --git a/typo3/sysext/fluid_styled_content/Resources/Private/Partials/Media/Type/Video.html b/typo3/sysext/fluid_styled_content/Resources/Private/Partials/Media/Type/Video.html
new file mode 100644
index 0000000000000000000000000000000000000000..0af68bb96adf96ee2b4a7e030737ef27b3f9d122
--- /dev/null
+++ b/typo3/sysext/fluid_styled_content/Resources/Private/Partials/Media/Type/Video.html
@@ -0,0 +1,12 @@
+<html xmlns:f="http://typo3.org/ns/TYPO3/CMS/Fluid/ViewHelpers" data-namespace-typo3-fluid="true">
+<figure class="video">
+	<div class="video-embed">
+		<f:render partial="Media/Rendering/Video" arguments="{file: file, dimensions: dimensions, settings: settings}" />
+	</div>
+	<f:if condition="{file.description}">
+		<figcaption class="video-caption">
+			{file.description}
+		</figcaption>
+	</f:if>
+</figure>
+</html>
diff --git a/typo3/sysext/fluid_styled_content/Resources/Private/Partials/Menu/Directory.html b/typo3/sysext/fluid_styled_content/Resources/Private/Partials/Menu/Directory.html
deleted file mode 100644
index 1da2ec771afde668a8460fa46cf5a82199c2fe03..0000000000000000000000000000000000000000
--- a/typo3/sysext/fluid_styled_content/Resources/Private/Partials/Menu/Directory.html
+++ /dev/null
@@ -1,23 +0,0 @@
-<html xmlns:f="http://typo3.org/ns/TYPO3/CMS/Fluid/ViewHelpers" xmlns:ce="http://typo3.org/ns/TYPO3/CMS/FluidStyledContent/ViewHelpers" data-namespace-typo3-fluid="true">
-<ce:menu.directory pageUids="{pageUids}" as="pages" levelAs="level">
-	<f:if condition="{pages}">
-		<ul>
-			<f:for each="{pages}" as="page">
-				<li>
-					<f:link.page pageUid="{page.uid}" target="{page.target}">
-						<f:if condition="{page.nav_title}">
-							<f:then>
-								{page.nav_title}
-							</f:then>
-							<f:else>
-								{page.title}
-							</f:else>
-						</f:if>
-					</f:link.page>
-					<f:render partial="Menu/Directory" arguments="{pageUids: {0: page.uid}}" />
-				</li>
-			</f:for>
-		</ul>
-	</f:if>
-</ce:menu.directory>
-</html>
diff --git a/typo3/sysext/fluid_styled_content/Resources/Private/Partials/Menu/Type-0.html b/typo3/sysext/fluid_styled_content/Resources/Private/Partials/Menu/Type-0.html
deleted file mode 100644
index 8970b5da188c8ba050e4280bccc9dcbf50ca75c2..0000000000000000000000000000000000000000
--- a/typo3/sysext/fluid_styled_content/Resources/Private/Partials/Menu/Type-0.html
+++ /dev/null
@@ -1,22 +0,0 @@
-<html xmlns:f="http://typo3.org/ns/TYPO3/CMS/Fluid/ViewHelpers" xmlns:ce="http://typo3.org/ns/TYPO3/CMS/FluidStyledContent/ViewHelpers" data-namespace-typo3-fluid="true">
-<ce:menu.list pageUids="{pageUids}" as="pages">
-	<f:if condition="{pages}">
-		<ul class="ce-menu ce-menu-0">
-			<f:for each="{pages}" as="page">
-				<li>
-					<f:link.page pageUid="{page.uid}" target="{page.target}">
-						<f:if condition="{page.nav_title}">
-							<f:then>
-								{page.nav_title}
-							</f:then>
-							<f:else>
-								{page.title}
-							</f:else>
-						</f:if>
-					</f:link.page>
-				</li>
-			</f:for>
-		</ul>
-	</f:if>
-</ce:menu.list>
-</html>
diff --git a/typo3/sysext/fluid_styled_content/Resources/Private/Partials/Menu/Type-1.html b/typo3/sysext/fluid_styled_content/Resources/Private/Partials/Menu/Type-1.html
deleted file mode 100644
index 8b764c88e70ddc93fc722dbf33db98eccc752b2d..0000000000000000000000000000000000000000
--- a/typo3/sysext/fluid_styled_content/Resources/Private/Partials/Menu/Type-1.html
+++ /dev/null
@@ -1,22 +0,0 @@
-<html xmlns:f="http://typo3.org/ns/TYPO3/CMS/Fluid/ViewHelpers" xmlns:ce="http://typo3.org/ns/TYPO3/CMS/FluidStyledContent/ViewHelpers" data-namespace-typo3-fluid="true">
-<ce:menu.directory pageUids="{pageUids}" as="pages">
-	<f:if condition="{pages}">
-		<ul class="ce-menu ce-menu-1">
-			<f:for each="{pages}" as="page">
-				<li>
-					<f:link.page pageUid="{page.uid}" target="{page.target}">
-						<f:if condition="{page.nav_title}">
-							<f:then>
-								{page.nav_title}
-							</f:then>
-							<f:else>
-								{page.title}
-							</f:else>
-						</f:if>
-					</f:link.page>
-				</li>
-			</f:for>
-		</ul>
-	</f:if>
-</ce:menu.directory>
-</html>
diff --git a/typo3/sysext/fluid_styled_content/Resources/Private/Partials/Menu/Type-2.html b/typo3/sysext/fluid_styled_content/Resources/Private/Partials/Menu/Type-2.html
deleted file mode 100644
index e8e0de86299551c2bdf3951396220f2b36e6db63..0000000000000000000000000000000000000000
--- a/typo3/sysext/fluid_styled_content/Resources/Private/Partials/Menu/Type-2.html
+++ /dev/null
@@ -1,23 +0,0 @@
-<html xmlns:f="http://typo3.org/ns/TYPO3/CMS/Fluid/ViewHelpers" xmlns:ce="http://typo3.org/ns/TYPO3/CMS/FluidStyledContent/ViewHelpers" data-namespace-typo3-fluid="true">
-<ce:menu.list entryLevel="0" as="pages" levelAs="level">
-	<f:if condition="{pages}">
-		<ul class="ce-menu ce-menu-2">
-			<f:for each="{pages}" as="page">
-				<li>
-					<f:link.page pageUid="{page.uid}" target="{page.target}">
-						<f:if condition="{page.nav_title}">
-							<f:then>
-								{page.nav_title}
-							</f:then>
-							<f:else>
-								{page.title}
-							</f:else>
-						</f:if>
-					</f:link.page>
-					<f:render partial="Menu/Directory" arguments="{pageUids: {0: page.uid}}" />
-				</li>
-			</f:for>
-		</ul>
-	</f:if>
-</ce:menu.list>
-</html>
diff --git a/typo3/sysext/fluid_styled_content/Resources/Private/Partials/Menu/Type-3.html b/typo3/sysext/fluid_styled_content/Resources/Private/Partials/Menu/Type-3.html
deleted file mode 100644
index d8715f830adb74e80f6dd8d4f00ce1155fe10e48..0000000000000000000000000000000000000000
--- a/typo3/sysext/fluid_styled_content/Resources/Private/Partials/Menu/Type-3.html
+++ /dev/null
@@ -1,21 +0,0 @@
-<html xmlns:f="http://typo3.org/ns/TYPO3/CMS/Fluid/ViewHelpers" xmlns:ce="http://typo3.org/ns/TYPO3/CMS/FluidStyledContent/ViewHelpers" data-namespace-typo3-fluid="true">
-<ce:menu.list pageUids="{pageUids}" as="pages">
-	<f:if condition="{pages}">
-		<ul class="ce-menu ce-menu-3">
-			<f:for each="{pages}" as="page">
-				<ce:menu.section pageUid="{page.uid}" as="contentElements" type="header">
-					<f:if condition="{contentElements}">
-						<f:for each="{contentElements}" as="contentElement">
-							<li>
-								<f:link.page pageUid="{page.uid}" section="c{contentElement.uid}" target="{page.target}">
-									{contentElement.header}
-								</f:link.page>
-							</li>
-						</f:for>
-					</f:if>
-				</ce:menu.section>
-			</f:for>
-		</ul>
-	</f:if>
-</ce:menu.list>
-</html>
diff --git a/typo3/sysext/fluid_styled_content/Resources/Private/Partials/Menu/Type-4.html b/typo3/sysext/fluid_styled_content/Resources/Private/Partials/Menu/Type-4.html
deleted file mode 100644
index 0f54944eedafcc716c5a9b3c7ab512817d5646f9..0000000000000000000000000000000000000000
--- a/typo3/sysext/fluid_styled_content/Resources/Private/Partials/Menu/Type-4.html
+++ /dev/null
@@ -1,46 +0,0 @@
-<html xmlns:f="http://typo3.org/ns/TYPO3/CMS/Fluid/ViewHelpers" xmlns:ce="http://typo3.org/ns/TYPO3/CMS/FluidStyledContent/ViewHelpers" data-namespace-typo3-fluid="true">
-<ce:menu.directory pageUids="{pageUids}" as="pages">
-	<f:if condition="{pages}">
-		<dl class="ce-menu ce-menu-4">
-			<f:for each="{pages}" as="page">
-				<dt>
-					<f:link.page pageUid="{page.uid}" target="{page.target}">
-						<f:if condition="{page.nav_title}">
-							<f:then>
-								{page.nav_title}
-							</f:then>
-							<f:else>
-								{page.title}
-							</f:else>
-						</f:if>
-					</f:link.page>
-				</dt>
-				<dd>
-					<f:if condition="{page.abstract}">
-						<f:then>
-							{page.abstract}
-						</f:then>
-						<f:else>
-							<f:if condition="{page.description}">
-								<f:then>
-									{page.description}
-								</f:then>
-								<f:else>
-									<f:if condition="{page.subtitle}">
-										<f:then>
-											{page.subtitle}
-										</f:then>
-										<f:else>
-											&nbsp;
-										</f:else>
-									</f:if>
-								</f:else>
-							</f:if>
-						</f:else>
-					</f:if>
-				</dd>
-			</f:for>
-		</dl>
-	</f:if>
-</ce:menu.directory>
-</html>
diff --git a/typo3/sysext/fluid_styled_content/Resources/Private/Partials/Menu/Type-5.html b/typo3/sysext/fluid_styled_content/Resources/Private/Partials/Menu/Type-5.html
deleted file mode 100644
index df24f4b9b742b64b00eaaa2c26a1e427a86a0771..0000000000000000000000000000000000000000
--- a/typo3/sysext/fluid_styled_content/Resources/Private/Partials/Menu/Type-5.html
+++ /dev/null
@@ -1,22 +0,0 @@
-<html xmlns:f="http://typo3.org/ns/TYPO3/CMS/Fluid/ViewHelpers" xmlns:ce="http://typo3.org/ns/TYPO3/CMS/FluidStyledContent/ViewHelpers" data-namespace-typo3-fluid="true">
-<ce:menu.updated pageUids="{pageUids}" as="pages" maximumAge="3600*24*7">
-	<f:if condition="{pages}">
-		<ul class="ce-menu ce-menu-5">
-			<f:for each="{pages}" as="page">
-				<li>
-					<f:link.page pageUid="{page.uid}" target="{page.target}">
-						<f:if condition="{page.nav_title}">
-							<f:then>
-								{page.nav_title}
-							</f:then>
-							<f:else>
-								{page.title}
-							</f:else>
-						</f:if>
-					</f:link.page>
-				</li>
-			</f:for>
-		</ul>
-	</f:if>
-</ce:menu.updated>
-</html>
diff --git a/typo3/sysext/fluid_styled_content/Resources/Private/Partials/Menu/Type-6.html b/typo3/sysext/fluid_styled_content/Resources/Private/Partials/Menu/Type-6.html
deleted file mode 100644
index 0e50f4d8020c4a0341e0b6e44349ab5c8fe908f1..0000000000000000000000000000000000000000
--- a/typo3/sysext/fluid_styled_content/Resources/Private/Partials/Menu/Type-6.html
+++ /dev/null
@@ -1,22 +0,0 @@
-<html xmlns:f="http://typo3.org/ns/TYPO3/CMS/Fluid/ViewHelpers" xmlns:ce="http://typo3.org/ns/TYPO3/CMS/FluidStyledContent/ViewHelpers" data-namespace-typo3-fluid="true">
-<ce:menu.keywords pageUids="{pageUids}" as="pages">
-	<f:if condition="{pages}">
-		<ul class="ce-menu ce-menu-6">
-			<f:for each="{pages}" as="page">
-				<li>
-					<f:link.page pageUid="{page.uid}" target="{page.target}">
-						<f:if condition="{page.nav_title}">
-							<f:then>
-								{page.nav_title}
-							</f:then>
-							<f:else>
-								{page.title}
-							</f:else>
-						</f:if>
-					</f:link.page>
-				</li>
-			</f:for>
-		</ul>
-	</f:if>
-</ce:menu.keywords>
-</html>
diff --git a/typo3/sysext/fluid_styled_content/Resources/Private/Partials/Menu/Type-7.html b/typo3/sysext/fluid_styled_content/Resources/Private/Partials/Menu/Type-7.html
deleted file mode 100644
index b9a5027c10e1b695c9c0acdf4dbec20d3b57ec6a..0000000000000000000000000000000000000000
--- a/typo3/sysext/fluid_styled_content/Resources/Private/Partials/Menu/Type-7.html
+++ /dev/null
@@ -1,35 +0,0 @@
-<html xmlns:f="http://typo3.org/ns/TYPO3/CMS/Fluid/ViewHelpers" xmlns:ce="http://typo3.org/ns/TYPO3/CMS/FluidStyledContent/ViewHelpers" data-namespace-typo3-fluid="true">
-<ce:menu.directory pageUids="{pageUids}" as="pages">
-	<f:if condition="{pages}">
-		<ul class="ce-menu ce-menu-7">
-			<f:for each="{pages}" as="page">
-				<li>
-					<f:link.page pageUid="{page.uid}" target="{page.target}">
-						<f:if condition="{page.nav_title}">
-							<f:then>
-								{page.nav_title}
-							</f:then>
-							<f:else>
-								{page.title}
-							</f:else>
-						</f:if>
-					</f:link.page>
-				</li>
-				<ce:menu.section pageUid="{page.uid}" as="contentElements" type="header">
-					<f:if condition="{contentElements}">
-						<ul>
-							<f:for each="{contentElements}" as="contentElement">
-								<li>
-									<f:link.page pageUid="{page.uid}" section="c{contentElement.uid}" target="{page.target}">
-										{contentElement.header}
-									</f:link.page>
-								</li>
-							</f:for>
-						</ul>
-					</f:if>
-				</ce:menu.section>
-			</f:for>
-		</ul>
-	</f:if>
-</ce:menu.directory>
-</html>
diff --git a/typo3/sysext/fluid_styled_content/Resources/Private/Partials/Menu/Type-8.html b/typo3/sysext/fluid_styled_content/Resources/Private/Partials/Menu/Type-8.html
deleted file mode 100644
index 4d308a6a84fb5bd692a224fc334e2880e9ab4c4a..0000000000000000000000000000000000000000
--- a/typo3/sysext/fluid_styled_content/Resources/Private/Partials/Menu/Type-8.html
+++ /dev/null
@@ -1,23 +0,0 @@
-<html xmlns:f="http://typo3.org/ns/TYPO3/CMS/Fluid/ViewHelpers" xmlns:ce="http://typo3.org/ns/TYPO3/CMS/FluidStyledContent/ViewHelpers" data-namespace-typo3-fluid="true">
-<ce:menu.directory pageUids="{pageUids}" as="pages" levelAs="level">
-	<f:if condition="{pages}">
-		<ul class="ce-menu ce-menu-8">
-			<f:for each="{pages}" as="page">
-				<li>
-					<f:link.page pageUid="{page.uid}" target="{page.target}">
-						<f:if condition="{page.nav_title}">
-							<f:then>
-								{page.nav_title}
-							</f:then>
-							<f:else>
-								{page.title}
-							</f:else>
-						</f:if>
-					</f:link.page>
-					<f:render partial="Menu/Directory" arguments="{pageUids: {0: page.uid}}" />
-				</li>
-			</f:for>
-		</ul>
-	</f:if>
-</ce:menu.directory>
-</html>
diff --git a/typo3/sysext/fluid_styled_content/Resources/Private/Partials/Menu/Type-categorized_content.html b/typo3/sysext/fluid_styled_content/Resources/Private/Partials/Menu/Type-categorized_content.html
deleted file mode 100644
index 8beb7236563aa81943538da33557d7aec4800df8..0000000000000000000000000000000000000000
--- a/typo3/sysext/fluid_styled_content/Resources/Private/Partials/Menu/Type-categorized_content.html
+++ /dev/null
@@ -1,17 +0,0 @@
-<html xmlns:f="http://typo3.org/ns/TYPO3/CMS/Fluid/ViewHelpers" xmlns:ce="http://typo3.org/ns/TYPO3/CMS/FluidStyledContent/ViewHelpers" data-namespace-typo3-fluid="true">
-<ce:menu.categories categoryUids="{categoryUids}" as="contentElements" relationField="{data.category_field}" table="tt_content">
-	<f:if condition="{contentElements}">
-		<ul class="ce-menu ce-menu-categorized-content">
-			<f:for each="{contentElements}" as="contentElement">
-				<f:if condition="{contentElement.header}">
-					<li>
-						<f:link.page pageUid="{contentElement.pid}" section="c{contentElement.uid}" target="{page.target}">
-							{contentElement.header}
-						</f:link.page>
-					</li>
-				</f:if>
-			</f:for>
-		</ul>
-	</f:if>
-</ce:menu.categories>
-</html>
\ No newline at end of file
diff --git a/typo3/sysext/fluid_styled_content/Resources/Private/Partials/Menu/Type-categorized_pages.html b/typo3/sysext/fluid_styled_content/Resources/Private/Partials/Menu/Type-categorized_pages.html
deleted file mode 100644
index 0b3d9697f069dbf4ae26f8829e74612788341bbe..0000000000000000000000000000000000000000
--- a/typo3/sysext/fluid_styled_content/Resources/Private/Partials/Menu/Type-categorized_pages.html
+++ /dev/null
@@ -1,22 +0,0 @@
-<html xmlns:f="http://typo3.org/ns/TYPO3/CMS/Fluid/ViewHelpers" xmlns:ce="http://typo3.org/ns/TYPO3/CMS/FluidStyledContent/ViewHelpers" data-namespace-typo3-fluid="true">
-<ce:menu.categories categoryUids="{categoryUids}" as="pages" relationField="{data.category_field}" table="pages">
-	<f:if condition="{pages}">
-		<ul class="ce-menu ce-menu-9">
-			<f:for each="{pages}" as="page">
-				<li>
-					<f:link.page pageUid="{page.uid}" target="{page.target}">
-						<f:if condition="{page.nav_title}">
-							<f:then>
-								{page.nav_title}
-							</f:then>
-							<f:else>
-								{page.title}
-							</f:else>
-						</f:if>
-					</f:link.page>
-				</li>
-			</f:for>
-		</ul>
-	</f:if>
-</ce:menu.categories>
-</html>
diff --git a/typo3/sysext/fluid_styled_content/Resources/Private/Partials/Table/Columns.html b/typo3/sysext/fluid_styled_content/Resources/Private/Partials/Table/Columns.html
index a3d55db12c851256107c197908672d4611e5434b..01478d8984810b38dd30c63a1734922fb3ea7a8e 100644
--- a/typo3/sysext/fluid_styled_content/Resources/Private/Partials/Table/Columns.html
+++ b/typo3/sysext/fluid_styled_content/Resources/Private/Partials/Table/Columns.html
@@ -95,4 +95,4 @@
 		</f:if>
 	</f:else>
 </f:if>
-</html>
\ No newline at end of file
+</html>
diff --git a/typo3/sysext/fluid_styled_content/Resources/Private/Templates/Bullets.html b/typo3/sysext/fluid_styled_content/Resources/Private/Templates/Bullets.html
index a465269d8b9774397a7d4a5dcc2be7f3858ea0b7..eed5562e116fac73e54c845cbc33eea600cfd3a3 100644
--- a/typo3/sysext/fluid_styled_content/Resources/Private/Templates/Bullets.html
+++ b/typo3/sysext/fluid_styled_content/Resources/Private/Templates/Bullets.html
@@ -1,7 +1,8 @@
 <html xmlns:f="http://typo3.org/ns/TYPO3/CMS/Fluid/ViewHelpers" data-namespace-typo3-fluid="true">
-<f:layout name="HeaderContentFooter" />
+<f:layout name="Default" />
+<f:section name="Main">
 
-<f:section name="content">
 	<f:render partial="Bullets/Type-{data.bullets_type}" arguments="{_all}" />
+
 </f:section>
 </html>
diff --git a/typo3/sysext/fluid_styled_content/Resources/Private/Templates/Default.html b/typo3/sysext/fluid_styled_content/Resources/Private/Templates/Default.html
deleted file mode 100644
index 4657268e271e7270f2c12b96995dd283a5efe23b..0000000000000000000000000000000000000000
--- a/typo3/sysext/fluid_styled_content/Resources/Private/Templates/Default.html
+++ /dev/null
@@ -1,3 +0,0 @@
-<p style="background-color: yellow;">
-	<strong>ERROR:</strong> Content Element type "{data.CType}" has no rendering definition!
-</p>
\ No newline at end of file
diff --git a/typo3/sysext/fluid_styled_content/Resources/Private/Templates/Div.html b/typo3/sysext/fluid_styled_content/Resources/Private/Templates/Div.html
index 043344dd3869e3a81fd4cc81384a20882eb7e420..ebb5d198a75d4963645c80bf768ab15da0d51f6e 100644
--- a/typo3/sysext/fluid_styled_content/Resources/Private/Templates/Div.html
+++ b/typo3/sysext/fluid_styled_content/Resources/Private/Templates/Div.html
@@ -1,7 +1,9 @@
 <html xmlns:f="http://typo3.org/ns/TYPO3/CMS/Fluid/ViewHelpers" data-namespace-typo3-fluid="true">
-<f:layout name="ContentFooter" />
+<f:layout name="Default" />
+<f:section name="Header" />
+<f:section name="Main">
 
-<f:section name="content">
 	<hr class="ce-div" />
+
 </f:section>
-</html>
\ No newline at end of file
+</html>
diff --git a/typo3/sysext/fluid_styled_content/Resources/Private/Templates/Header.html b/typo3/sysext/fluid_styled_content/Resources/Private/Templates/Header.html
index 1820167c76d902c2c8a9a384b386517d7433b584..3db31a87d887c5df0b6328ba6bf9741a1205735d 100644
--- a/typo3/sysext/fluid_styled_content/Resources/Private/Templates/Header.html
+++ b/typo3/sysext/fluid_styled_content/Resources/Private/Templates/Header.html
@@ -1,3 +1,3 @@
 <html xmlns:f="http://typo3.org/ns/TYPO3/CMS/Fluid/ViewHelpers" data-namespace-typo3-fluid="true">
-<f:layout name="HeaderFooter" />
-</html>
\ No newline at end of file
+<f:layout name="Default" />
+</html>
diff --git a/typo3/sysext/fluid_styled_content/Resources/Private/Templates/HeaderOnly.html b/typo3/sysext/fluid_styled_content/Resources/Private/Templates/HeaderOnly.html
deleted file mode 100644
index b62666b7a6890a52b8864c4ed13327024d913923..0000000000000000000000000000000000000000
--- a/typo3/sysext/fluid_styled_content/Resources/Private/Templates/HeaderOnly.html
+++ /dev/null
@@ -1,4 +0,0 @@
-<html xmlns:f="http://typo3.org/ns/TYPO3/CMS/Fluid/ViewHelpers" data-namespace-typo3-fluid="true">
-<f:comment> Only used for lib.stdheader purposes. </f:comment>
-<f:render partial="Header" arguments="{_all}" />
-</html>
\ No newline at end of file
diff --git a/typo3/sysext/fluid_styled_content/Resources/Private/Templates/Html.html b/typo3/sysext/fluid_styled_content/Resources/Private/Templates/Html.html
index 33c7dbdd5b6551d1dcb19f8451576d6f8dd3c527..a75d6be1532ce25f20d5db1a9bf559289fab53eb 100644
--- a/typo3/sysext/fluid_styled_content/Resources/Private/Templates/Html.html
+++ b/typo3/sysext/fluid_styled_content/Resources/Private/Templates/Html.html
@@ -1,7 +1,9 @@
 <html xmlns:f="http://typo3.org/ns/TYPO3/CMS/Fluid/ViewHelpers" data-namespace-typo3-fluid="true">
-<f:layout name="ContentFooter" />
+<f:layout name="Default" />
+<f:section name="Header" />
+<f:section name="Main">
 
-<f:section name="content">
 	<f:format.raw>{data.bodytext}</f:format.raw>
+
 </f:section>
-</html>
\ No newline at end of file
+</html>
diff --git a/typo3/sysext/fluid_styled_content/Resources/Private/Templates/Image.html b/typo3/sysext/fluid_styled_content/Resources/Private/Templates/Image.html
new file mode 100644
index 0000000000000000000000000000000000000000..f2aaa7173502c4593778b117dce60aaf45315ad9
--- /dev/null
+++ b/typo3/sysext/fluid_styled_content/Resources/Private/Templates/Image.html
@@ -0,0 +1,8 @@
+<html xmlns:f="http://typo3.org/ns/TYPO3/CMS/Fluid/ViewHelpers" data-namespace-typo3-fluid="true">
+<f:layout name="Default" />
+<f:section name="Main">
+
+	<f:render partial="Media/Gallery" arguments="{_all}" />
+
+</f:section>
+</html>
diff --git a/typo3/sysext/fluid_styled_content/Resources/Private/Templates/List.html b/typo3/sysext/fluid_styled_content/Resources/Private/Templates/List.html
index c813eae9b2e14795f42786e9dc187f4bc090deb4..35bac83ff80cc2e92faf7cdea1db04115f625cee 100644
--- a/typo3/sysext/fluid_styled_content/Resources/Private/Templates/List.html
+++ b/typo3/sysext/fluid_styled_content/Resources/Private/Templates/List.html
@@ -1,7 +1,8 @@
 <html xmlns:f="http://typo3.org/ns/TYPO3/CMS/Fluid/ViewHelpers" data-namespace-typo3-fluid="true">
-<f:layout name="HeaderContentFooter" />
+<f:layout name="Default" />
+<f:section name="Main">
+
+	<f:cObject typoscriptObjectPath="tt_content.list.20.{data.list_type}" data="{data}" table="tt_content" />
 
-<f:section name="content">
-	<f:cObject typoscriptObjectPath="tt_content.list.20.{data.list_type}" data="{data}" table="tt_content"/>
 </f:section>
-</html>
\ No newline at end of file
+</html>
diff --git a/typo3/sysext/fluid_styled_content/Resources/Private/Templates/Menu.html b/typo3/sysext/fluid_styled_content/Resources/Private/Templates/Menu.html
deleted file mode 100644
index 02cb426a603bd69648f25f78af6595d42534fd69..0000000000000000000000000000000000000000
--- a/typo3/sysext/fluid_styled_content/Resources/Private/Templates/Menu.html
+++ /dev/null
@@ -1,7 +0,0 @@
-<html xmlns:f="http://typo3.org/ns/TYPO3/CMS/Fluid/ViewHelpers" data-namespace-typo3-fluid="true">
-<f:layout name="HeaderContentFooter" />
-
-<f:section name="content">
-	<f:render partial="Menu/Type-{data.menu_type}" arguments="{_all}" />
-</f:section>
-</html>
\ No newline at end of file
diff --git a/typo3/sysext/fluid_styled_content/Resources/Private/Templates/MenuAbstract.html b/typo3/sysext/fluid_styled_content/Resources/Private/Templates/MenuAbstract.html
new file mode 100644
index 0000000000000000000000000000000000000000..d4883f6070365ee3d959349aa3d8134bf88b30ce
--- /dev/null
+++ b/typo3/sysext/fluid_styled_content/Resources/Private/Templates/MenuAbstract.html
@@ -0,0 +1,21 @@
+<html xmlns:f="http://typo3.org/ns/TYPO3/CMS/Fluid/ViewHelpers" data-namespace-typo3-fluid="true">
+<f:layout name="Default" />
+<f:section name="Main">
+
+	<f:if condition="{menu}">
+		<ul>
+			<f:for each="{menu}" as="page">
+				<li>
+					<a href="{page.link}" target="{page.target}" title="{page.title}">
+						<span>{page.title}</span>
+					</a>
+					<f:if condition="{page.data.abstract}">
+						<f:format.html>{page.data.abstract}</f:format.html>
+					</f:if>
+				</li>
+			</f:for>
+		</ul>
+	</f:if>
+
+</f:section>
+</html>
diff --git a/typo3/sysext/fluid_styled_content/Resources/Private/Templates/MenuCategorizedContent.html b/typo3/sysext/fluid_styled_content/Resources/Private/Templates/MenuCategorizedContent.html
new file mode 100644
index 0000000000000000000000000000000000000000..c25faae4ae419a1c14709facdd1a8d25f1284e65
--- /dev/null
+++ b/typo3/sysext/fluid_styled_content/Resources/Private/Templates/MenuCategorizedContent.html
@@ -0,0 +1,18 @@
+<html xmlns:f="http://typo3.org/ns/TYPO3/CMS/Fluid/ViewHelpers" data-namespace-typo3-fluid="true">
+<f:layout name="Default" />
+<f:section name="Main">
+
+	<f:if condition="{content}">
+		<ul>
+			<f:for each="{content}" as="element">
+				<li>
+					<f:link.page pageUid="{element.data.pid}" section="{element.data.uid}" title="{element.data.header}">
+						<span>{element.data.header}</span>
+					</f:link.page>
+				</li>
+			</f:for>
+		</ul>
+	</f:if>
+
+</f:section>
+</html>
diff --git a/typo3/sysext/fluid_styled_content/Resources/Private/Templates/MenuCategorizedPages.html b/typo3/sysext/fluid_styled_content/Resources/Private/Templates/MenuCategorizedPages.html
new file mode 100644
index 0000000000000000000000000000000000000000..99cbf7e85230ffdb227ef4778212e373ed3ff5a8
--- /dev/null
+++ b/typo3/sysext/fluid_styled_content/Resources/Private/Templates/MenuCategorizedPages.html
@@ -0,0 +1,18 @@
+<html xmlns:f="http://typo3.org/ns/TYPO3/CMS/Fluid/ViewHelpers" data-namespace-typo3-fluid="true">
+<f:layout name="Default" />
+<f:section name="Main">
+
+	<f:if condition="{menu}">
+		<ul>
+			<f:for each="{menu}" as="page">
+				<li>
+					<a href="{page.link}" target="{page.target}" title="{page.title}">
+						<span>{page.title}</span>
+					</a>
+				</li>
+			</f:for>
+		</ul>
+	</f:if>
+
+</f:section>
+</html>
diff --git a/typo3/sysext/fluid_styled_content/Resources/Private/Templates/MenuPages.html b/typo3/sysext/fluid_styled_content/Resources/Private/Templates/MenuPages.html
new file mode 100644
index 0000000000000000000000000000000000000000..99cbf7e85230ffdb227ef4778212e373ed3ff5a8
--- /dev/null
+++ b/typo3/sysext/fluid_styled_content/Resources/Private/Templates/MenuPages.html
@@ -0,0 +1,18 @@
+<html xmlns:f="http://typo3.org/ns/TYPO3/CMS/Fluid/ViewHelpers" data-namespace-typo3-fluid="true">
+<f:layout name="Default" />
+<f:section name="Main">
+
+	<f:if condition="{menu}">
+		<ul>
+			<f:for each="{menu}" as="page">
+				<li>
+					<a href="{page.link}" target="{page.target}" title="{page.title}">
+						<span>{page.title}</span>
+					</a>
+				</li>
+			</f:for>
+		</ul>
+	</f:if>
+
+</f:section>
+</html>
diff --git a/typo3/sysext/fluid_styled_content/Resources/Private/Templates/MenuRecentlyUpdated.html b/typo3/sysext/fluid_styled_content/Resources/Private/Templates/MenuRecentlyUpdated.html
new file mode 100644
index 0000000000000000000000000000000000000000..99cbf7e85230ffdb227ef4778212e373ed3ff5a8
--- /dev/null
+++ b/typo3/sysext/fluid_styled_content/Resources/Private/Templates/MenuRecentlyUpdated.html
@@ -0,0 +1,18 @@
+<html xmlns:f="http://typo3.org/ns/TYPO3/CMS/Fluid/ViewHelpers" data-namespace-typo3-fluid="true">
+<f:layout name="Default" />
+<f:section name="Main">
+
+	<f:if condition="{menu}">
+		<ul>
+			<f:for each="{menu}" as="page">
+				<li>
+					<a href="{page.link}" target="{page.target}" title="{page.title}">
+						<span>{page.title}</span>
+					</a>
+				</li>
+			</f:for>
+		</ul>
+	</f:if>
+
+</f:section>
+</html>
diff --git a/typo3/sysext/fluid_styled_content/Resources/Private/Templates/MenuRelatedPages.html b/typo3/sysext/fluid_styled_content/Resources/Private/Templates/MenuRelatedPages.html
new file mode 100644
index 0000000000000000000000000000000000000000..99cbf7e85230ffdb227ef4778212e373ed3ff5a8
--- /dev/null
+++ b/typo3/sysext/fluid_styled_content/Resources/Private/Templates/MenuRelatedPages.html
@@ -0,0 +1,18 @@
+<html xmlns:f="http://typo3.org/ns/TYPO3/CMS/Fluid/ViewHelpers" data-namespace-typo3-fluid="true">
+<f:layout name="Default" />
+<f:section name="Main">
+
+	<f:if condition="{menu}">
+		<ul>
+			<f:for each="{menu}" as="page">
+				<li>
+					<a href="{page.link}" target="{page.target}" title="{page.title}">
+						<span>{page.title}</span>
+					</a>
+				</li>
+			</f:for>
+		</ul>
+	</f:if>
+
+</f:section>
+</html>
diff --git a/typo3/sysext/fluid_styled_content/Resources/Private/Templates/MenuSection.html b/typo3/sysext/fluid_styled_content/Resources/Private/Templates/MenuSection.html
new file mode 100644
index 0000000000000000000000000000000000000000..93ae6b20b342853d9a550fcbd564bf5487ad25f5
--- /dev/null
+++ b/typo3/sysext/fluid_styled_content/Resources/Private/Templates/MenuSection.html
@@ -0,0 +1,29 @@
+<html xmlns:f="http://typo3.org/ns/TYPO3/CMS/Fluid/ViewHelpers" data-namespace-typo3-fluid="true">
+<f:layout name="Default" />
+<f:section name="Main">
+
+	<f:if condition="{menu}">
+		<ul>
+			<f:for each="{menu}" as="page">
+				<li>
+					<a href="{page.link}" target="{page.target}" title="{page.title}">
+						<span>{page.title}</span>
+					</a>
+					<f:if condition="{page.content}">
+						<ul>
+							<f:for each="{page.content}" as="element">
+								<li>
+									<a href="{page.link}#c{element.data.uid}" target="{page.target}" title="{element.data.header}">
+										<span>{element.data.header}</span>
+									</a>
+								</li>
+							</f:for>
+						</ul>
+					</f:if>
+				</li>
+			</f:for>
+		</ul>
+	</f:if>
+
+</f:section>
+</html>
diff --git a/typo3/sysext/fluid_styled_content/Resources/Private/Templates/MenuSectionPages.html b/typo3/sysext/fluid_styled_content/Resources/Private/Templates/MenuSectionPages.html
new file mode 100644
index 0000000000000000000000000000000000000000..93ae6b20b342853d9a550fcbd564bf5487ad25f5
--- /dev/null
+++ b/typo3/sysext/fluid_styled_content/Resources/Private/Templates/MenuSectionPages.html
@@ -0,0 +1,29 @@
+<html xmlns:f="http://typo3.org/ns/TYPO3/CMS/Fluid/ViewHelpers" data-namespace-typo3-fluid="true">
+<f:layout name="Default" />
+<f:section name="Main">
+
+	<f:if condition="{menu}">
+		<ul>
+			<f:for each="{menu}" as="page">
+				<li>
+					<a href="{page.link}" target="{page.target}" title="{page.title}">
+						<span>{page.title}</span>
+					</a>
+					<f:if condition="{page.content}">
+						<ul>
+							<f:for each="{page.content}" as="element">
+								<li>
+									<a href="{page.link}#c{element.data.uid}" target="{page.target}" title="{element.data.header}">
+										<span>{element.data.header}</span>
+									</a>
+								</li>
+							</f:for>
+						</ul>
+					</f:if>
+				</li>
+			</f:for>
+		</ul>
+	</f:if>
+
+</f:section>
+</html>
diff --git a/typo3/sysext/fluid_styled_content/Resources/Private/Templates/MenuSitemap.html b/typo3/sysext/fluid_styled_content/Resources/Private/Templates/MenuSitemap.html
new file mode 100644
index 0000000000000000000000000000000000000000..dc8f0914645f3554f81b02faae190027349c4000
--- /dev/null
+++ b/typo3/sysext/fluid_styled_content/Resources/Private/Templates/MenuSitemap.html
@@ -0,0 +1,24 @@
+<html xmlns:f="http://typo3.org/ns/TYPO3/CMS/Fluid/ViewHelpers" data-namespace-typo3-fluid="true">
+<f:layout name="Default" />
+<f:section name="Main">
+
+	<f:render section="Menu" arguments="{menu: menu}" />
+
+</f:section>
+<f:section name="Menu">
+
+	<f:if condition="{menu}">
+		<ul>
+			<f:for each="{menu}" as="page">
+				<li>
+					<a href="{page.link}" target="{page.target}" title="{page.title}">
+						<span>{page.title}</span>
+					</a>
+					<f:render section="Menu" arguments="{menu: page.children}" />
+				</li>
+			</f:for>
+		</ul>
+	</f:if>
+
+</f:section>
+</html>
diff --git a/typo3/sysext/fluid_styled_content/Resources/Private/Templates/MenuSitemapPages.html b/typo3/sysext/fluid_styled_content/Resources/Private/Templates/MenuSitemapPages.html
new file mode 100644
index 0000000000000000000000000000000000000000..dc8f0914645f3554f81b02faae190027349c4000
--- /dev/null
+++ b/typo3/sysext/fluid_styled_content/Resources/Private/Templates/MenuSitemapPages.html
@@ -0,0 +1,24 @@
+<html xmlns:f="http://typo3.org/ns/TYPO3/CMS/Fluid/ViewHelpers" data-namespace-typo3-fluid="true">
+<f:layout name="Default" />
+<f:section name="Main">
+
+	<f:render section="Menu" arguments="{menu: menu}" />
+
+</f:section>
+<f:section name="Menu">
+
+	<f:if condition="{menu}">
+		<ul>
+			<f:for each="{menu}" as="page">
+				<li>
+					<a href="{page.link}" target="{page.target}" title="{page.title}">
+						<span>{page.title}</span>
+					</a>
+					<f:render section="Menu" arguments="{menu: page.children}" />
+				</li>
+			</f:for>
+		</ul>
+	</f:if>
+
+</f:section>
+</html>
diff --git a/typo3/sysext/fluid_styled_content/Resources/Private/Templates/MenuSubpages.html b/typo3/sysext/fluid_styled_content/Resources/Private/Templates/MenuSubpages.html
new file mode 100644
index 0000000000000000000000000000000000000000..99cbf7e85230ffdb227ef4778212e373ed3ff5a8
--- /dev/null
+++ b/typo3/sysext/fluid_styled_content/Resources/Private/Templates/MenuSubpages.html
@@ -0,0 +1,18 @@
+<html xmlns:f="http://typo3.org/ns/TYPO3/CMS/Fluid/ViewHelpers" data-namespace-typo3-fluid="true">
+<f:layout name="Default" />
+<f:section name="Main">
+
+	<f:if condition="{menu}">
+		<ul>
+			<f:for each="{menu}" as="page">
+				<li>
+					<a href="{page.link}" target="{page.target}" title="{page.title}">
+						<span>{page.title}</span>
+					</a>
+				</li>
+			</f:for>
+		</ul>
+	</f:if>
+
+</f:section>
+</html>
diff --git a/typo3/sysext/fluid_styled_content/Resources/Private/Templates/Shortcut.html b/typo3/sysext/fluid_styled_content/Resources/Private/Templates/Shortcut.html
index 51670ba3f0692f014a3aa6da605a9b649c96c9c6..fc7e6ff61b77cd402fb4573a63b319ebe11036ce 100644
--- a/typo3/sysext/fluid_styled_content/Resources/Private/Templates/Shortcut.html
+++ b/typo3/sysext/fluid_styled_content/Resources/Private/Templates/Shortcut.html
@@ -1,7 +1,8 @@
 <html xmlns:f="http://typo3.org/ns/TYPO3/CMS/Fluid/ViewHelpers" data-namespace-typo3-fluid="true">
-<f:layout name="ContentFooter" />
+<f:layout name="Default" />
+<f:section name="Main">
 
-<f:section name="content">
 	<f:format.raw>{shortcuts}</f:format.raw>
+
 </f:section>
-</html>
\ No newline at end of file
+</html>
diff --git a/typo3/sysext/fluid_styled_content/Resources/Private/Templates/Table.html b/typo3/sysext/fluid_styled_content/Resources/Private/Templates/Table.html
index e72892e2f43fc85c3911727d736a58c0ba82c3d9..49abe2fad7abaa3e26eaa975e7420bf671cda462 100644
--- a/typo3/sysext/fluid_styled_content/Resources/Private/Templates/Table.html
+++ b/typo3/sysext/fluid_styled_content/Resources/Private/Templates/Table.html
@@ -1,14 +1,13 @@
 <html xmlns:f="http://typo3.org/ns/TYPO3/CMS/Fluid/ViewHelpers" data-namespace-typo3-fluid="true">
-<f:layout name="HeaderContentFooter" />
+<f:layout name="Default" />
+<f:section name="Main">
 
-<f:section name="content">
 	<f:if condition="{table}">
-		<table class="ce-table">
+		<table class="ce-table{f:if(condition: data.table_class, then: ' ce-table-{data.table_class}')}">
 			<f:if condition="{data.table_caption}">
 				<caption>{data.table_caption}</caption>
 			</f:if>
 			<f:for each="{table}" as="row" iteration="rowIterator">
-
 				<f:if condition="{rowIterator.isFirst}">
 					<f:then>
 						<f:if condition="{data.table_header_position} == 1">
@@ -29,13 +28,11 @@
 						</f:if>
 					</f:else>
 				</f:if>
-
 				<tr>
 					<f:for each="{row}" as="cell" iteration="columnIterator">
 						<f:render partial="Table/Columns" arguments="{_all}" />
 					</f:for>
 				</tr>
-
 				<f:if condition="{rowIterator.isFirst}">
 					<f:then>
 						<f:if condition="{data.table_header_position} == 1">
@@ -56,9 +53,9 @@
 						</f:if>
 					</f:else>
 				</f:if>
-
 			</f:for>
 		</table>
 	</f:if>
+
 </f:section>
-</html>
\ No newline at end of file
+</html>
diff --git a/typo3/sysext/fluid_styled_content/Resources/Private/Templates/Text.html b/typo3/sysext/fluid_styled_content/Resources/Private/Templates/Text.html
new file mode 100644
index 0000000000000000000000000000000000000000..82d2103476127e5b9c9f1cc53769a8315fa34b11
--- /dev/null
+++ b/typo3/sysext/fluid_styled_content/Resources/Private/Templates/Text.html
@@ -0,0 +1,8 @@
+<html xmlns:f="http://typo3.org/ns/TYPO3/CMS/Fluid/ViewHelpers" data-namespace-typo3-fluid="true">
+<f:layout name="Default" />
+<f:section name="Main">
+
+	<f:format.html>{data.bodytext}</f:format.html>
+
+</f:section>
+</html>
diff --git a/typo3/sysext/fluid_styled_content/Resources/Private/Templates/Textmedia.html b/typo3/sysext/fluid_styled_content/Resources/Private/Templates/Textmedia.html
index 8bd102d2c147dc3b6203c565534e89d9b792e9fc..d9d0f44f9beea571e826982423fd336d1245471a 100644
--- a/typo3/sysext/fluid_styled_content/Resources/Private/Templates/Textmedia.html
+++ b/typo3/sysext/fluid_styled_content/Resources/Private/Templates/Textmedia.html
@@ -1,19 +1,24 @@
 <html xmlns:f="http://typo3.org/ns/TYPO3/CMS/Fluid/ViewHelpers" data-namespace-typo3-fluid="true">
-<div id="c{data.uid}">
+<f:layout name="Default" />
+<f:section name="Header">
+
 	<f:if condition="{gallery.position.noWrap} != 1">
-		<f:render partial="Header" arguments="{_all}" />
+		<f:render partial="Header/All" arguments="{_all}" />
 	</f:if>
 
+</f:section>
+<f:section name="Main">
+
 	<div class="ce-textpic ce-{gallery.position.horizontal} ce-{gallery.position.vertical}{f:if(condition: gallery.position.noWrap, then: ' ce-nowrap')}">
 		<f:if condition="{gallery.position.vertical} != 'below'">
-			<f:render partial="MediaGallery" arguments="{_all}" />
+			<f:render partial="Media/Gallery" arguments="{_all}" />
 		</f:if>
 
 		<f:if condition="{data.bodytext}">
 			<f:then>
 				<div class="ce-bodytext">
 					<f:if condition="{gallery.position.noWrap}">
-						<f:render partial="Header" arguments="{_all}" />
+						<f:render partial="Header/All" arguments="{_all}" />
 					</f:if>
 					<f:format.html>{data.bodytext}</f:format.html>
 				</div>
@@ -30,10 +35,9 @@
 		</f:if>
 
 		<f:if condition="{gallery.position.vertical} == 'below'">
-			<f:render partial="MediaGallery" arguments="{_all}" />
+			<f:render partial="Media/Gallery" arguments="{_all}" />
 		</f:if>
 	</div>
 
-	<f:render partial="Footer" arguments="{_all}" />
-</div>
-</html>
\ No newline at end of file
+</f:section>
+</html>
diff --git a/typo3/sysext/fluid_styled_content/Resources/Private/Templates/Textpic.html b/typo3/sysext/fluid_styled_content/Resources/Private/Templates/Textpic.html
new file mode 100644
index 0000000000000000000000000000000000000000..d9d0f44f9beea571e826982423fd336d1245471a
--- /dev/null
+++ b/typo3/sysext/fluid_styled_content/Resources/Private/Templates/Textpic.html
@@ -0,0 +1,43 @@
+<html xmlns:f="http://typo3.org/ns/TYPO3/CMS/Fluid/ViewHelpers" data-namespace-typo3-fluid="true">
+<f:layout name="Default" />
+<f:section name="Header">
+
+	<f:if condition="{gallery.position.noWrap} != 1">
+		<f:render partial="Header/All" arguments="{_all}" />
+	</f:if>
+
+</f:section>
+<f:section name="Main">
+
+	<div class="ce-textpic ce-{gallery.position.horizontal} ce-{gallery.position.vertical}{f:if(condition: gallery.position.noWrap, then: ' ce-nowrap')}">
+		<f:if condition="{gallery.position.vertical} != 'below'">
+			<f:render partial="Media/Gallery" arguments="{_all}" />
+		</f:if>
+
+		<f:if condition="{data.bodytext}">
+			<f:then>
+				<div class="ce-bodytext">
+					<f:if condition="{gallery.position.noWrap}">
+						<f:render partial="Header/All" arguments="{_all}" />
+					</f:if>
+					<f:format.html>{data.bodytext}</f:format.html>
+				</div>
+			</f:then>
+			<f:else>
+				<f:if condition="{gallery.position.noWrap}">
+					<f:if condition="{data.header}">
+						<div class="ce-bodytext">
+							<f:render partial="Header" arguments="{_all}" />
+						</div>
+					</f:if>
+				</f:if>
+			</f:else>
+		</f:if>
+
+		<f:if condition="{gallery.position.vertical} == 'below'">
+			<f:render partial="Media/Gallery" arguments="{_all}" />
+		</f:if>
+	</div>
+
+</f:section>
+</html>
diff --git a/typo3/sysext/fluid_styled_content/Resources/Private/Templates/Uploads.html b/typo3/sysext/fluid_styled_content/Resources/Private/Templates/Uploads.html
index 783bb7fde89b728ab206eeb14887a083f5b6d488..bf2b769e40fa088fa12691bfee5c3c6d58d21ca8 100644
--- a/typo3/sysext/fluid_styled_content/Resources/Private/Templates/Uploads.html
+++ b/typo3/sysext/fluid_styled_content/Resources/Private/Templates/Uploads.html
@@ -1,6 +1,7 @@
 <html xmlns:f="http://typo3.org/ns/TYPO3/CMS/Fluid/ViewHelpers" data-namespace-typo3-fluid="true">
-<f:layout name="HeaderContentFooter" />
-<f:section name="content">
+<f:layout name="Default" />
+<f:section name="Main">
+
 	<f:if condition="{files}">
 		<ul class="ce-uploads">
 			<f:for each="{files}" as="file" iteration="fileIterator">
@@ -8,11 +9,10 @@
 					<f:if condition="{data.uploads_type} == 1">
 						<img src="{f:uri.resource(path: 'Icons/FileIcons/{file.extension}.gif', extensionName: 'frontend')}" alt="">
 					</f:if>
-
 					<f:if condition="{data.uploads_type} == 2">
 						<f:if condition="{f:uri.image(src: 'file:{f:if(condition: file.originalFile, then: \'file:{file.originalFile.uid}\', else: \'file:{file.uid}\')}')} != '/'">
 							<f:then>
-								<a href="{file.publicUrl}"{f:if(condition:data.target,then:' target="{data.target}"')}>
+								<a href="{file.publicUrl}" {f:if(condition:data.target,then: ' target="{data.target}"')}>
 									<f:media file="{file}" width="150" alt="{file.properties.alternative}" />
 								</a>
 							</f:then>
@@ -21,38 +21,23 @@
 							</f:else>
 						</f:if>
 					</f:if>
-
 					<div>
-						<a href="{file.publicUrl}"{f:if(condition:data.target,then:' target="{data.target}"')}>
-							<span class="ce-uploads-fileName">
-								<f:if condition="{file.properties.title}">
-									<f:then>
-										{file.properties.title}
-									</f:then>
-									<f:else>
-										{file.name}
-									</f:else>
-								</f:if>
-							</span>
+						<a href="{file.publicUrl}" {f:if(condition:data.target,then: ' target="{data.target}"')}>
+							<span class="ce-uploads-fileName">{f:if(condition: file.properties.title, then: file.properties.title, else: file.name)}</span>
 						</a>
-
 						<f:if condition="{file.properties.description}">
 							<f:if condition="{data.uploads_description}">
-								<span class="ce-uploads-description">
-									{file.properties.description}
-								</span>
+								<span class="ce-uploads-description">{file.properties.description}</span>
 							</f:if>
 						</f:if>
-
 						<f:if condition="{data.filelink_size}">
-							<span class="ce-uploads-filesize">
-								<f:format.bytes value="{file.properties.size}" />
-							</span>
+							<span class="ce-uploads-filesize"><f:format.bytes value="{file.properties.size}" /></span>
 						</f:if>
 					</div>
 				</li>
 			</f:for>
 		</ul>
 	</f:if>
+
 </f:section>
 </html>
diff --git a/typo3/sysext/fluid_styled_content/ext_conf_template.txt b/typo3/sysext/fluid_styled_content/ext_conf_template.txt
deleted file mode 100644
index f22a692f93e84fddc64bebb27becd1079341bac3..0000000000000000000000000000000000000000
--- a/typo3/sysext/fluid_styled_content/ext_conf_template.txt
+++ /dev/null
@@ -1,2 +0,0 @@
-# cat=basic//; type=boolean; label=LLL:EXT:fluid_styled_content/Resources/Private/Language/locallang_em.xlf:fluid_styled_content.config.loadContentElementWizardTsConfig
-loadContentElementWizardTsConfig = 1
diff --git a/typo3/sysext/fluid_styled_content/ext_localconf.php b/typo3/sysext/fluid_styled_content/ext_localconf.php
index 865923604a3697d291dc9b3f82657bf355175ff1..962b8017b6148301ebfb4bfb03c738628d453fd7 100644
--- a/typo3/sysext/fluid_styled_content/ext_localconf.php
+++ b/typo3/sysext/fluid_styled_content/ext_localconf.php
@@ -2,27 +2,4 @@
 defined('TYPO3_MODE') or die();
 
 // Define TypoScript as content rendering template
-$GLOBALS['TYPO3_CONF_VARS']['FE']['contentRenderingTemplates'][] = 'fluidstyledcontent/Configuration/TypoScript/Static/';
-
-// Register for hook to show preview of tt_content element of CType="textmedia" in page module
-$GLOBALS['TYPO3_CONF_VARS']['SC_OPTIONS']['cms/layout/class.tx_cms_layout.php']['tt_content_drawItem']['textmedia'] = \TYPO3\CMS\FluidStyledContent\Hooks\TextmediaPreviewRenderer::class;
-
-if (TYPO3_MODE === 'BE') {
-    call_user_func(function () {
-        // Get the extension configuration
-        $extConf = unserialize($GLOBALS['TYPO3_CONF_VARS']['EXT']['extConf']['fluid_styled_content'], ['allowed_classes' => false]);
-
-        if (!isset($extConf['loadContentElementWizardTsConfig']) || (int)$extConf['loadContentElementWizardTsConfig'] === 1) {
-            // Include new content elements to modWizards
-            \TYPO3\CMS\Core\Utility\ExtensionManagementUtility::addPageTSConfig('<INCLUDE_TYPOSCRIPT: source="FILE:EXT:fluid_styled_content/Configuration/PageTSconfig/NewContentElementWizard.ts">');
-        }
-
-        \TYPO3\CMS\Core\Utility\GeneralUtility::makeInstance(\TYPO3\CMS\Extbase\SignalSlot\Dispatcher::class)
-            ->connect(
-                \TYPO3\CMS\Extensionmanager\Controller\ConfigurationController::class,
-                'afterExtensionConfigurationWrite',
-                \TYPO3\CMS\FluidStyledContent\Hooks\TcaCacheClearing::class,
-                'clearTcaCache'
-            );
-    });
-}
+$GLOBALS['TYPO3_CONF_VARS']['FE']['contentRenderingTemplates'][] = 'fluidstyledcontent/Configuration/TypoScript/';
diff --git a/typo3/sysext/fluid_styled_content/ext_tables.sql b/typo3/sysext/fluid_styled_content/ext_tables.sql
deleted file mode 100644
index 989db10beca47e9cd6bbafe96df25a4e28c76566..0000000000000000000000000000000000000000
--- a/typo3/sysext/fluid_styled_content/ext_tables.sql
+++ /dev/null
@@ -1,9 +0,0 @@
-#
-# Table structure for table 'tt_content'
-#
-CREATE TABLE tt_content (
-	bullets_type tinyint(3) unsigned DEFAULT '0' NOT NULL,
-	uploads_description tinyint(1) unsigned DEFAULT '0' NOT NULL,
-	uploads_type tinyint(3) unsigned DEFAULT '0' NOT NULL,
-	assets int(11) unsigned DEFAULT '0' NOT NULL
-);
diff --git a/typo3/sysext/form/Resources/Public/Css/form.css b/typo3/sysext/form/Resources/Public/Css/form.css
index f1b90a0ce711ca47364ec90d4fb2773b7d0909e2..1bc60dfff4e1841043100c1319030e5cfae2b0fa 100644
--- a/typo3/sysext/form/Resources/Public/Css/form.css
+++ b/typo3/sysext/form/Resources/Public/Css/form.css
@@ -474,7 +474,8 @@
   z-index: 1;
   margin-left: 1em;
   transition: margin 0.3s;
-  filter: grayscale(100%);
+  -webkit-filter: grayscale(100%);
+          filter: grayscale(100%);
 }
 #t3-form-stage-container.t3-form-stage-viewmode-abstract .t3-form-validator-info .t3-form-validator-list {
   position: absolute;
@@ -541,7 +542,8 @@
 }
 #t3-form-stage-container.t3-form-stage-viewmode-abstract #t3-form-stage .t3-form-form-element-selected .t3-form-validator-info .t3-form-icon {
   margin-right: 75px;
-  filter: none;
+  -webkit-filter: none;
+          filter: none;
 }
 #t3-form-stage-container.t3-form-stage-viewmode-abstract #t3-form-stage .t3-form-form-element-selected .btn-toolbar-container {
   position: absolute;
diff --git a/typo3/sysext/frontend/Classes/ContentObject/ContentObjectRenderer.php b/typo3/sysext/frontend/Classes/ContentObject/ContentObjectRenderer.php
index 1b2726c6d25c346ffdf2c107e55924b6483fb0ca..be62268ac1ffb805acd385a1fd5a3c447397afad 100644
--- a/typo3/sysext/frontend/Classes/ContentObject/ContentObjectRenderer.php
+++ b/typo3/sysext/frontend/Classes/ContentObject/ContentObjectRenderer.php
@@ -262,121 +262,6 @@ class ContentObjectRenderer
      */
     protected $contentObjectClassMap = [];
 
-    /**
-     * Holds ImageMagick parameters and extensions used for compression
-     *
-     * @var array
-     * @see IMGTEXT()
-     */
-    public $image_compression = [
-        10 => [
-            'params' => '',
-            'ext' => 'gif'
-        ],
-        11 => [
-            'params' => '-colors 128',
-            'ext' => 'gif'
-        ],
-        12 => [
-            'params' => '-colors 64',
-            'ext' => 'gif'
-        ],
-        13 => [
-            'params' => '-colors 32',
-            'ext' => 'gif'
-        ],
-        14 => [
-            'params' => '-colors 16',
-            'ext' => 'gif'
-        ],
-        15 => [
-            'params' => '-colors 8',
-            'ext' => 'gif'
-        ],
-        20 => [
-            'params' => '-quality 100',
-            'ext' => 'jpg'
-        ],
-        21 => [
-            'params' => '-quality 90',
-            'ext' => 'jpg'
-        ],
-        22 => [
-            'params' => '-quality 80',
-            'ext' => 'jpg'
-        ],
-        23 => [
-            'params' => '-quality 70',
-            'ext' => 'jpg'
-        ],
-        24 => [
-            'params' => '-quality 60',
-            'ext' => 'jpg'
-        ],
-        25 => [
-            'params' => '-quality 50',
-            'ext' => 'jpg'
-        ],
-        26 => [
-            'params' => '-quality 40',
-            'ext' => 'jpg'
-        ],
-        27 => [
-            'params' => '-quality 30',
-            'ext' => 'jpg'
-        ],
-        28 => [
-            'params' => '-quality 20',
-            'ext' => 'jpg'
-        ],
-        30 => [
-            'params' => '-colors 256',
-            'ext' => 'png'
-        ],
-        31 => [
-            'params' => '-colors 128',
-            'ext' => 'png'
-        ],
-        32 => [
-            'params' => '-colors 64',
-            'ext' => 'png'
-        ],
-        33 => [
-            'params' => '-colors 32',
-            'ext' => 'png'
-        ],
-        34 => [
-            'params' => '-colors 16',
-            'ext' => 'png'
-        ],
-        35 => [
-            'params' => '-colors 8',
-            'ext' => 'png'
-        ],
-        39 => [
-            'params' => '',
-            'ext' => 'png'
-        ]
-    ];
-
-    /**
-     * ImageMagick parameters for image effects
-     *
-     * @var array
-     * @see IMGTEXT()
-     */
-    public $image_effects = [
-        1 => '-rotate 90',
-        2 => '-rotate 270',
-        3 => '-rotate 180',
-        10 => '-colorspace GRAY',
-        11 => '-sharpen 70',
-        20 => '-normalize',
-        23 => '-contrast',
-        25 => '-gamma 1.3',
-        26 => '-gamma 0.8'
-    ];
-
     /**
      * Loaded with the current data-record.
      *
diff --git a/typo3/sysext/frontend/Classes/DataProcessing/MenuProcessor.php b/typo3/sysext/frontend/Classes/DataProcessing/MenuProcessor.php
index 0bf08566ee57a2370d4416f6e6788af85b0db107..f13320278ee4fb933a9cbab1ecee015dfcf86165 100644
--- a/typo3/sysext/frontend/Classes/DataProcessing/MenuProcessor.php
+++ b/typo3/sysext/frontend/Classes/DataProcessing/MenuProcessor.php
@@ -93,6 +93,8 @@ class MenuProcessor implements DataProcessorInterface
         'maxItems.',
         'begin',
         'begin.',
+        'alternativeSortingField',
+        'alternativeSortingField.',
         'excludeUidList',
         'excludeUidList.',
         'excludeDoktypes',
@@ -218,6 +220,11 @@ class MenuProcessor implements DataProcessorInterface
      */
     protected $menuTitleField;
 
+    /**
+     * @var string
+     */
+    protected $menuAlternativeSortingField;
+
     /**
      * @var string
      */
@@ -342,6 +349,7 @@ class MenuProcessor implements DataProcessorInterface
                 $this->menuConfig[$i . '.']['stdWrap.']['wrap'] = ',"children": [|]';
             }
             $this->menuConfig[$i . '.']['expAll'] = $this->menuExpandAll;
+            $this->menuConfig[$i . '.']['alternativeSortingField'] = $this->menuAlternativeSortingField;
             $this->menuConfig[$i . '.']['NO'] = '1';
             $this->menuConfig[$i . '.']['NO.'] = $this->menuLevelConfig;
             if ($this->menuIncludeSpacer) {
@@ -390,6 +398,7 @@ class MenuProcessor implements DataProcessorInterface
         $this->menuIncludeSpacer = (int)$this->getConfigurationValue('includeSpacer');
         $this->menuTargetVariableName = $this->getConfigurationValue('as');
         $this->menuTitleField = $this->getConfigurationValue('titleField');
+        $this->menuAlternativeSortingField = $this->getConfigurationValue('alternativeSortingField');
 
         // Validate Configuration
         $this->validateConfiguration();
diff --git a/typo3/sysext/css_styled_content/Classes/Hooks/PageLayoutView/ImagePreviewRenderer.php b/typo3/sysext/frontend/Classes/Hooks/PageLayoutView/ImagePreviewRenderer.php
similarity index 97%
rename from typo3/sysext/css_styled_content/Classes/Hooks/PageLayoutView/ImagePreviewRenderer.php
rename to typo3/sysext/frontend/Classes/Hooks/PageLayoutView/ImagePreviewRenderer.php
index f384e140fbaa106e28de2f1265a033bfc6e1c5a8..10b5c079d80ce7a07b12a0753317608350fdff51 100644
--- a/typo3/sysext/css_styled_content/Classes/Hooks/PageLayoutView/ImagePreviewRenderer.php
+++ b/typo3/sysext/frontend/Classes/Hooks/PageLayoutView/ImagePreviewRenderer.php
@@ -1,5 +1,5 @@
 <?php
-namespace TYPO3\CMS\CssStyledContent\Hooks\PageLayoutView;
+namespace TYPO3\CMS\Frontend\Hooks\PageLayoutView;
 
 /*
  * This file is part of the TYPO3 CMS project.
diff --git a/typo3/sysext/css_styled_content/Classes/Hooks/PageLayoutView/TextPreviewRenderer.php b/typo3/sysext/frontend/Classes/Hooks/PageLayoutView/TextPreviewRenderer.php
similarity index 96%
rename from typo3/sysext/css_styled_content/Classes/Hooks/PageLayoutView/TextPreviewRenderer.php
rename to typo3/sysext/frontend/Classes/Hooks/PageLayoutView/TextPreviewRenderer.php
index d33f3933815b0a61ff69356a1b181e81d9f400d9..a1f2ffa101ac2a4f7d9fa1a4a0ae799d6d672f5c 100644
--- a/typo3/sysext/css_styled_content/Classes/Hooks/PageLayoutView/TextPreviewRenderer.php
+++ b/typo3/sysext/frontend/Classes/Hooks/PageLayoutView/TextPreviewRenderer.php
@@ -1,5 +1,5 @@
 <?php
-namespace TYPO3\CMS\CssStyledContent\Hooks\PageLayoutView;
+namespace TYPO3\CMS\Frontend\Hooks\PageLayoutView;
 
 /*
  * This file is part of the TYPO3 CMS project.
diff --git a/typo3/sysext/fluid_styled_content/Classes/Hooks/TextmediaPreviewRenderer.php b/typo3/sysext/frontend/Classes/Hooks/PageLayoutView/TextmediaPreviewRenderer.php
similarity index 97%
rename from typo3/sysext/fluid_styled_content/Classes/Hooks/TextmediaPreviewRenderer.php
rename to typo3/sysext/frontend/Classes/Hooks/PageLayoutView/TextmediaPreviewRenderer.php
index 207391afaa1733fea731b59400d5e76cfe38ad8e..9010f2339b06459e1dcffd4216761cf9bf8572ea 100644
--- a/typo3/sysext/fluid_styled_content/Classes/Hooks/TextmediaPreviewRenderer.php
+++ b/typo3/sysext/frontend/Classes/Hooks/PageLayoutView/TextmediaPreviewRenderer.php
@@ -1,5 +1,5 @@
 <?php
-namespace TYPO3\CMS\FluidStyledContent\Hooks;
+namespace TYPO3\CMS\Frontend\Hooks\PageLayoutView;
 
 /*
  * This file is part of the TYPO3 CMS project.
diff --git a/typo3/sysext/css_styled_content/Classes/Hooks/PageLayoutView/TextpicPreviewRenderer.php b/typo3/sysext/frontend/Classes/Hooks/PageLayoutView/TextpicPreviewRenderer.php
similarity index 97%
rename from typo3/sysext/css_styled_content/Classes/Hooks/PageLayoutView/TextpicPreviewRenderer.php
rename to typo3/sysext/frontend/Classes/Hooks/PageLayoutView/TextpicPreviewRenderer.php
index bb2f11be8adc2d37f569018882d77c8f6c93f6fb..5639e5478862c2195eb37ae7d8b3a02fe02cc395 100644
--- a/typo3/sysext/css_styled_content/Classes/Hooks/PageLayoutView/TextpicPreviewRenderer.php
+++ b/typo3/sysext/frontend/Classes/Hooks/PageLayoutView/TextpicPreviewRenderer.php
@@ -1,5 +1,5 @@
 <?php
-namespace TYPO3\CMS\CssStyledContent\Hooks\PageLayoutView;
+namespace TYPO3\CMS\Frontend\Hooks\PageLayoutView;
 
 /*
  * This file is part of the TYPO3 CMS project.
diff --git a/typo3/sysext/frontend/Configuration/TCA/tt_content.php b/typo3/sysext/frontend/Configuration/TCA/tt_content.php
index fa32bf33ad5449c8df3ff4d3569877aa4d94bbde..cd31a8520723c1a7c479ab9ca17d9551f727c818 100644
--- a/typo3/sysext/frontend/Configuration/TCA/tt_content.php
+++ b/typo3/sysext/frontend/Configuration/TCA/tt_content.php
@@ -32,19 +32,33 @@ return [
         'typeicon_column' => 'CType',
         'typeicon_classes' => [
             'header' => 'mimetypes-x-content-header',
+            'text' => 'mimetypes-x-content-text',
+            'textpic' => 'mimetypes-x-content-text-picture',
+            'image' => 'mimetypes-x-content-image',
+            'textmedia' => 'mimetypes-x-content-text-media',
             'bullets' => 'mimetypes-x-content-list-bullets',
             'table' => 'mimetypes-x-content-table',
             'uploads' => 'mimetypes-x-content-list-files',
-            'menu' => 'mimetypes-x-content-menu',
             'list' => 'mimetypes-x-content-plugin',
             'login' => 'mimetypes-x-content-login',
             'shortcut' => 'mimetypes-x-content-link',
             'script' => 'mimetypes-x-content-script',
             'div' => 'mimetypes-x-content-divider',
             'html' => 'mimetypes-x-content-html',
-            'default' => 'mimetypes-x-content-text'
-        ],
-        'thumbnail' => 'image',
+            'default' => 'mimetypes-x-content-text',
+            'menu_abstract' => 'content-menu-abstract',
+            'menu_categorized_content' => 'content-menu-categorized',
+            'menu_categorized_pages' => 'content-menu-categorized',
+            'menu_pages' => 'content-menu-pages',
+            'menu_subpages' => 'content-menu-pages',
+            'menu_recently_updated' => 'content-menu-recently-updated',
+            'menu_related_pages' => 'content-menu-related',
+            'menu_sitemap' => 'content-menu-sitemap',
+            'menu_sitemap_pages' => 'content-menu-sitemap-pages',
+            'menu_section' => 'content-menu-section',
+            'menu_section_pages' => 'content-menu-section',
+        ],
+        'requestUpdate' => 'list_type',
         'searchFields' => 'header,header_link,subheader,bodytext,pi_flexform'
     ],
     'interface' => [
@@ -59,60 +73,138 @@ return [
                 'renderType' => 'selectSingle',
                 'items' => [
                     [
-                        'LLL:EXT:backend/Resources/Private/Language/locallang_db_new_content_el.xlf:common',
+                        'LLL:EXT:frontend/Resources/Private/Language/locallang_ttc.xlf:CType.div.standard',
                         '--div--'
                     ],
                     [
-                        'LLL:EXT:backend/Resources/Private/Language/locallang_db_new_content_el.xlf:common_headerOnly_title',
+                        'LLL:EXT:frontend/Resources/Private/Language/locallang_ttc.xlf:CType.I.0',
                         'header',
                         'content-header'
                     ],
                     [
-                        'LLL:EXT:backend/Resources/Private/Language/locallang_db_new_content_el.xlf:common_bulletList_title',
+                        'LLL:EXT:frontend/Resources/Private/Language/locallang_ttc.xlf:CType.I.1',
+                        'text',
+                        'content-text'
+                    ],
+                    [
+                        'LLL:EXT:frontend/Resources/Private/Language/locallang_ttc.xlf:CType.I.2',
+                        'textpic',
+                        'content-textpic'
+                    ],
+                    [
+                        'LLL:EXT:frontend/Resources/Private/Language/locallang_ttc.xlf:CType.I.3',
+                        'image',
+                        'content-image'
+                    ],
+                    [
+                        'LLL:EXT:frontend/Resources/Private/Language/locallang_ttc.xlf:CType.textmedia',
+                        'textmedia',
+                        'content-textmedia'
+                    ],
+                    [
+                        'LLL:EXT:frontend/Resources/Private/Language/locallang_ttc.xlf:CType.div.lists',
+                        '--div--'
+                    ],
+                    [
+                        'LLL:EXT:frontend/Resources/Private/Language/locallang_ttc.xlf:CType.I.4',
                         'bullets',
                         'content-bullets'
                     ],
                     [
-                        'LLL:EXT:backend/Resources/Private/Language/locallang_db_new_content_el.xlf:common_table_title',
+                        'LLL:EXT:frontend/Resources/Private/Language/locallang_ttc.xlf:CType.I.5',
                         'table',
                         'content-table'
                     ],
                     [
-                        'LLL:EXT:backend/Resources/Private/Language/locallang_db_new_content_el.xlf:special_filelinks_title',
+                        'LLL:EXT:frontend/Resources/Private/Language/locallang_ttc.xlf:CType.I.6',
                         'uploads',
                         'content-special-uploads'
                     ],
                     [
-                        'LLL:EXT:backend/Resources/Private/Language/locallang_db_new_content_el.xlf:plugins_general_title',
-                        'list',
-                        'content-plugin'
+                        'LLL:EXT:frontend/Resources/Private/Language/locallang_ttc.xlf:CType.div.menu',
+                        '--div--'
                     ],
                     [
-                        'LLL:EXT:backend/Resources/Private/Language/locallang_db_new_content_el.xlf:special',
-                        '--div--'
+                        'LLL:EXT:frontend/Resources/Private/Language/locallang_ttc.xlf:CType.menu_abstract',
+                        'menu_abstract',
+                        'content-menu-abstract'
                     ],
                     [
-                        'LLL:EXT:frontend/Resources/Private/Language/locallang_ttc.xlf:CType.I.12',
-                        'menu',
-                        'content-special-menu'
+                        'LLL:EXT:frontend/Resources/Private/Language/locallang_ttc.xlf:CType.menu_categorized_content',
+                        'menu_categorized_content',
+                        'content-menu-categorized'
                     ],
                     [
-                        'LLL:EXT:frontend/Resources/Private/Language/locallang_ttc.xlf:CType.I.17',
-                        'html',
-                        'content-special-html'
+                        'LLL:EXT:frontend/Resources/Private/Language/locallang_ttc.xlf:CType.menu_categorized_pages',
+                        'menu_categorized_pages',
+                        'content-menu-categorized'
                     ],
                     [
-                        'LLL:EXT:frontend/Resources/Private/Language/locallang_ttc.xlf:CType.I.16',
-                        'div',
-                        'content-special-div'
+                        'LLL:EXT:frontend/Resources/Private/Language/locallang_ttc.xlf:CType.menu_pages',
+                        'menu_pages',
+                        'content-menu-pages'
+                    ],
+                    [
+                        'LLL:EXT:frontend/Resources/Private/Language/locallang_ttc.xlf:CType.menu_subpages',
+                        'menu_subpages',
+                        'content-menu-pages'
+                    ],
+                    [
+                        'LLL:EXT:frontend/Resources/Private/Language/locallang_ttc.xlf:CType.menu_recently_updated',
+                        'menu_recently_updated',
+                        'content-menu-recently-updated'
+                    ],
+                    [
+                        'LLL:EXT:frontend/Resources/Private/Language/locallang_ttc.xlf:CType.menu_related_pages',
+                        'menu_related_pages',
+                        'content-menu-related'
+                    ],
+                    [
+                        'LLL:EXT:frontend/Resources/Private/Language/locallang_ttc.xlf:CType.menu_section',
+                        'menu_section',
+                        'content-menu-section'
+                    ],
+                    [
+                        'LLL:EXT:frontend/Resources/Private/Language/locallang_ttc.xlf:CType.menu_section_pages',
+                        'menu_section_pages',
+                        'content-menu-section'
+                    ],
+                    [
+                        'LLL:EXT:frontend/Resources/Private/Language/locallang_ttc.xlf:CType.menu_sitemap',
+                        'menu_sitemap',
+                        'content-menu-sitemap'
+                    ],
+                    [
+                        'LLL:EXT:frontend/Resources/Private/Language/locallang_ttc.xlf:CType.menu_sitemap_pages',
+                        'menu_sitemap_pages',
+                        'content-menu-sitemap-pages'
+                    ],
+                    [
+                        'LLL:EXT:frontend/Resources/Private/Language/locallang_ttc.xlf:CType.div.special',
+                        '--div--'
                     ],
                     [
                         'LLL:EXT:frontend/Resources/Private/Language/locallang_ttc.xlf:CType.I.13',
                         'shortcut',
                         'content-special-shortcut'
                     ],
+                    [
+                        'LLL:EXT:frontend/Resources/Private/Language/locallang_ttc.xlf:CType.I.14',
+                        'list',
+                        'content-plugin'
+                    ],
+                    [
+                        'LLL:EXT:frontend/Resources/Private/Language/locallang_ttc.xlf:CType.I.16',
+                        'div',
+                        'content-special-div'
+                    ],
+                    [
+                        'LLL:EXT:frontend/Resources/Private/Language/locallang_ttc.xlf:CType.I.17',
+                        'html',
+                        'content-special-html'
+                    ]
                 ],
-                'default' => 'header',
+                'default' => 'text',
                 'authMode' => $GLOBALS['TYPO3_CONF_VARS']['BE']['explicitADmode'],
                 'authMode_enforce' => 'strict',
             ]
@@ -263,6 +355,72 @@ return [
                 'default' => 0
             ]
         ],
+        'frame_class' => [
+            'exclude' => true,
+            'label' => 'LLL:EXT:frontend/Resources/Private/Language/locallang_ttc.xlf:frame_class',
+            'config' => [
+                'type' => 'select',
+                'renderType' => 'selectSingle',
+                'items' => [
+                    ['LLL:EXT:frontend/Resources/Private/Language/locallang_ttc.xlf:frame_class.default', 'default'],
+                    ['LLL:EXT:frontend/Resources/Private/Language/locallang_ttc.xlf:frame_class.ruler_before', 'ruler-before'],
+                    ['LLL:EXT:frontend/Resources/Private/Language/locallang_ttc.xlf:frame_class.ruler_after', 'ruler-after'],
+                    ['LLL:EXT:frontend/Resources/Private/Language/locallang_ttc.xlf:frame_class.indent', 'indent'],
+                    ['LLL:EXT:frontend/Resources/Private/Language/locallang_ttc.xlf:frame_class.indent_left', 'indent-left'],
+                    ['LLL:EXT:frontend/Resources/Private/Language/locallang_ttc.xlf:frame_class.indent_right', 'indent-right'],
+                    ['LLL:EXT:frontend/Resources/Private/Language/locallang_ttc.xlf:frame_class.none', 'none'],
+                ],
+                'default' => 'default'
+            ]
+        ],
+        'space_before_class' => [
+            'exclude' => true,
+            'label' => 'LLL:EXT:frontend/Resources/Private/Language/locallang_ttc.xlf:space_before_class',
+            'config' => [
+                'type' => 'select',
+                'renderType' => 'selectSingle',
+                'items' => [
+                    ['LLL:EXT:frontend/Resources/Private/Language/locallang_ttc.xlf:space_class_none', ''],
+                    ['LLL:EXT:frontend/Resources/Private/Language/locallang_ttc.xlf:space_class_extra_small', 'extra-small'],
+                    ['LLL:EXT:frontend/Resources/Private/Language/locallang_ttc.xlf:space_class_small', 'small'],
+                    ['LLL:EXT:frontend/Resources/Private/Language/locallang_ttc.xlf:space_class_medium', 'medium'],
+                    ['LLL:EXT:frontend/Resources/Private/Language/locallang_ttc.xlf:space_class_large', 'large'],
+                    ['LLL:EXT:frontend/Resources/Private/Language/locallang_ttc.xlf:space_class_extra_large', 'extra-large'],
+                ],
+                'default' => ''
+            ]
+        ],
+        'space_after_class' => [
+            'exclude' => true,
+            'label' => 'LLL:EXT:frontend/Resources/Private/Language/locallang_ttc.xlf:space_after_class',
+            'config' => [
+                'type' => 'select',
+                'renderType' => 'selectSingle',
+                'items' => [
+                    ['LLL:EXT:frontend/Resources/Private/Language/locallang_ttc.xlf:space_class_none', ''],
+                    ['LLL:EXT:frontend/Resources/Private/Language/locallang_ttc.xlf:space_class_extra_small', 'extra-small'],
+                    ['LLL:EXT:frontend/Resources/Private/Language/locallang_ttc.xlf:space_class_small', 'small'],
+                    ['LLL:EXT:frontend/Resources/Private/Language/locallang_ttc.xlf:space_class_medium', 'medium'],
+                    ['LLL:EXT:frontend/Resources/Private/Language/locallang_ttc.xlf:space_class_large', 'large'],
+                    ['LLL:EXT:frontend/Resources/Private/Language/locallang_ttc.xlf:space_class_extra_large', 'extra-large'],
+                ],
+                'default' => ''
+            ]
+        ],
+        'bullets_type' => [
+            'exclude' => true,
+            'label' => 'LLL:EXT:frontend/Resources/Private/Language/locallang_ttc.xlf:bullets_type',
+            'config' => [
+                'type' => 'select',
+                'renderType' => 'selectSingle',
+                'items' => [
+                    ['LLL:EXT:frontend/Resources/Private/Language/locallang_ttc.xlf:bullets_type.0', 0],
+                    ['LLL:EXT:frontend/Resources/Private/Language/locallang_ttc.xlf:bullets_type.1', 1],
+                    ['LLL:EXT:frontend/Resources/Private/Language/locallang_ttc.xlf:bullets_type.2', 2]
+                ],
+                'default' => 0
+            ]
+        ],
         'colPos' => [
             'exclude' => true,
             'label' => 'LLL:EXT:frontend/Resources/Private/Language/locallang_ttc.xlf:colPos',
@@ -311,34 +469,6 @@ return [
                 'max' => 255
             ]
         ],
-        'rowDescription' => [
-            'exclude' => true,
-            'label' => 'LLL:EXT:lang/Resources/Private/Language/locallang_general.xlf:LGL.description',
-            'config' => [
-                'type' => 'text',
-                'rows' => 5,
-                'cols' => 30
-            ]
-        ],
-        'header_link' => [
-            'exclude' => true,
-            'label' => 'LLL:EXT:frontend/Resources/Private/Language/locallang_ttc.xlf:header_link',
-            'config' => [
-                'type' => 'input',
-                'renderType' => 'inputLink',
-                'size' => 50,
-                'max' => 1024,
-                'eval' => 'trim',
-                'fieldControl' => [
-                    'linkPopup' => [
-                        'options' => [
-                            'title' => 'LLL:EXT:frontend/Resources/Private/Language/locallang_ttc.xlf:header_link_formlabel',
-                        ],
-                    ],
-                ],
-                'softref' => 'typolink'
-            ]
-        ],
         'header_layout' => [
             'exclude' => true,
             'label' => 'LLL:EXT:lang/Resources/Private/Language/locallang_general.xlf:LGL.type',
@@ -378,6 +508,61 @@ return [
                 'default' => 0
             ]
         ],
+        'header_position' => [
+            'label' => 'LLL:EXT:frontend/Resources/Private/Language/locallang_ttc.xlf:header_position',
+            'exclude' => true,
+            'config' => [
+                'type' => 'select',
+                'renderType' => 'selectSingle',
+                'items' => [
+                    [
+                        'LLL:EXT:lang/Resources/Private/Language/locallang_general.xlf:LGL.default_value',
+                        ''
+                    ],
+                    [
+                        'LLL:EXT:frontend/Resources/Private/Language/locallang_ttc.xlf:header_position.I.1',
+                        'center'
+                    ],
+                    [
+                        'LLL:EXT:frontend/Resources/Private/Language/locallang_ttc.xlf:header_position.I.2',
+                        'right'
+                    ],
+                    [
+                        'LLL:EXT:frontend/Resources/Private/Language/locallang_ttc.xlf:header_position.I.3',
+                        'left'
+                    ]
+                ],
+                'default' => ''
+            ]
+        ],
+        'header_link' => [
+            'exclude' => true,
+            'label' => 'LLL:EXT:frontend/Resources/Private/Language/locallang_ttc.xlf:header_link',
+            'config' => [
+                'type' => 'input',
+                'renderType' => 'inputLink',
+                'size' => 50,
+                'max' => 1024,
+                'eval' => 'trim',
+                'fieldControl' => [
+                    'linkPopup' => [
+                        'options' => [
+                            'title' => 'LLL:EXT:frontend/Resources/Private/Language/locallang_ttc.xlf:header_link_formlabel',
+                        ],
+                    ],
+                ],
+                'softref' => 'typolink'
+            ]
+        ],
+        'rowDescription' => [
+            'exclude' => true,
+            'label' => 'LLL:EXT:lang/Resources/Private/Language/locallang_general.xlf:LGL.description',
+            'config' => [
+                'type' => 'text',
+                'rows' => 5,
+                'cols' => 30
+            ]
+        ],
         'subheader' => [
             'exclude' => true,
             'label' => 'LLL:EXT:lang/Resources/Private/Language/locallang_general.xlf:LGL.subheader',
@@ -398,7 +583,7 @@ return [
                 'rows' => '15',
                 'softref' => 'typolink_tag,images,email[subst],url',
                 'search' => [
-                    'andWhere' => 'CType=\'text\' OR CType=\'textpic\''
+                    'andWhere' => 'CType=\'text\' OR CType=\'textpic\' OR CType=\'textmedia\''
                 ]
             ]
         ],
@@ -444,6 +629,48 @@ return [
                 ]
             ], $GLOBALS['TYPO3_CONF_VARS']['GFX']['imagefile_ext'])
         ],
+        'assets' => [
+            'label' => 'LLL:EXT:frontend/Resources/Private/Language/Database.xlf:tt_content.asset_references',
+            'config' => \TYPO3\CMS\Core\Utility\ExtensionManagementUtility::getFileFieldTCAConfig('assets', [
+                'appearance' => [
+                    'createNewRelationLinkTitle' => 'LLL:EXT:frontend/Resources/Private/Language/Database.xlf:tt_content.asset_references.addFileReference'
+                ],
+                // custom configuration for displaying fields in the overlay/reference table
+                // behaves the same as the image field.
+                'foreign_types' => [
+                    '0' => [
+                        'showitem' => '
+                            --palette--;LLL:EXT:lang/Resources/Private/Language/locallang_tca.xlf:sys_file_reference.imageoverlayPalette;imageoverlayPalette,
+                            --palette--;;filePalette'
+                    ],
+                    \TYPO3\CMS\Core\Resource\File::FILETYPE_TEXT => [
+                        'showitem' => '
+                            --palette--;LLL:EXT:lang/Resources/Private/Language/locallang_tca.xlf:sys_file_reference.imageoverlayPalette;imageoverlayPalette,
+                            --palette--;;filePalette'
+                    ],
+                    \TYPO3\CMS\Core\Resource\File::FILETYPE_IMAGE => [
+                        'showitem' => '
+                            --palette--;LLL:EXT:lang/Resources/Private/Language/locallang_tca.xlf:sys_file_reference.imageoverlayPalette;imageoverlayPalette,
+                            --palette--;;filePalette'
+                    ],
+                    \TYPO3\CMS\Core\Resource\File::FILETYPE_AUDIO => [
+                        'showitem' => '
+                            --palette--;LLL:EXT:lang/Resources/Private/Language/locallang_tca.xlf:sys_file_reference.audioOverlayPalette;audioOverlayPalette,
+                            --palette--;;filePalette'
+                    ],
+                    \TYPO3\CMS\Core\Resource\File::FILETYPE_VIDEO => [
+                        'showitem' => '
+                            --palette--;LLL:EXT:lang/Resources/Private/Language/locallang_tca.xlf:sys_file_reference.videoOverlayPalette;videoOverlayPalette,
+                            --palette--;;filePalette'
+                    ],
+                    \TYPO3\CMS\Core\Resource\File::FILETYPE_APPLICATION => [
+                        'showitem' => '
+                            --palette--;LLL:EXT:lang/Resources/Private/Language/locallang_tca.xlf:sys_file_reference.imageoverlayPalette;imageoverlayPalette,
+                            --palette--;;filePalette'
+                    ]
+                ]
+            ], $GLOBALS['TYPO3_CONF_VARS']['SYS']['mediafile_ext'])
+        ],
         'imagewidth' => [
             'exclude' => true,
             'label' => 'LLL:EXT:frontend/Resources/Private/Language/locallang_ttc.xlf:imagewidth',
@@ -670,7 +897,7 @@ return [
                 'allowed' => 'pages',
                 'size' => 3,
                 'maxitems' => 50,
-                'minitems' => 0,
+                'minitems' => 0
             ]
         ],
         'recursive' => [
@@ -708,61 +935,6 @@ return [
                 'default' => 0
             ]
         ],
-        'menu_type' => [
-            'label' => 'LLL:EXT:frontend/Resources/Private/Language/locallang_ttc.xlf:menu_type',
-            'onChange' => 'reload',
-            'config' => [
-                'type' => 'select',
-                'renderType' => 'selectSingle',
-                'items' => [
-                    [
-                        'LLL:EXT:frontend/Resources/Private/Language/locallang_ttc.xlf:menu_type.I.0',
-                        '0'
-                    ],
-                    [
-                        'LLL:EXT:frontend/Resources/Private/Language/locallang_ttc.xlf:menu_type.I.1',
-                        '1'
-                    ],
-                    [
-                        'LLL:EXT:frontend/Resources/Private/Language/locallang_ttc.xlf:menu_type.I.2',
-                        '4'
-                    ],
-                    [
-                        'LLL:EXT:frontend/Resources/Private/Language/locallang_ttc.xlf:menu_type.I.3',
-                        '7'
-                    ],
-                    [
-                        'LLL:EXT:frontend/Resources/Private/Language/locallang_ttc.xlf:menu_type.I.4',
-                        '2'
-                    ],
-                    [
-                        'LLL:EXT:frontend/Resources/Private/Language/locallang_ttc.xlf:menu_type.I.8',
-                        '8'
-                    ],
-                    [
-                        'LLL:EXT:frontend/Resources/Private/Language/locallang_ttc.xlf:menu_type.I.5',
-                        '3'
-                    ],
-                    [
-                        'LLL:EXT:frontend/Resources/Private/Language/locallang_ttc.xlf:menu_type.I.6',
-                        '5'
-                    ],
-                    [
-                        'LLL:EXT:frontend/Resources/Private/Language/locallang_ttc.xlf:menu_type.I.7',
-                        '6'
-                    ],
-                    [
-                        'LLL:EXT:frontend/Resources/Private/Language/locallang_ttc.xlf:menu_type.I.categorized_pages',
-                        'categorized_pages'
-                    ],
-                    [
-                        'LLL:EXT:frontend/Resources/Private/Language/locallang_ttc.xlf:menu_type.I.categorized_content',
-                        'categorized_content'
-                    ]
-                ],
-                'default' => 0
-            ]
-        ],
         'list_type' => [
             'label' => 'LLL:EXT:frontend/Resources/Private/Language/locallang_ttc.xlf:list_type',
             'onChange' => 'reload',
@@ -791,7 +963,7 @@ return [
                 'allowed' => 'sys_file_collection',
                 'foreign_table' => 'sys_file_collection',
                 'minitems' => 0,
-                'size' => 5,
+                'size' => 5
             ]
         ],
         'media' => [
@@ -849,7 +1021,7 @@ return [
                 'allowed' => 'tt_content',
                 'size' => 5,
                 'maxitems' => 200,
-                'minitems' => 0,
+                'minitems' => 0
             ]
         ],
         'sectionIndex' => [
@@ -978,6 +1150,23 @@ return [
                 'minitems' => 0,
                 'maxitems' => 1,
                 'itemsProcFunc' => \TYPO3\CMS\Core\Category\CategoryRegistry::class . '->getCategoryFieldsForTable',
+                'itemsProcConfig' => [
+                    'table' => 'tt_content'
+                ],
+            ]
+        ],
+        'table_class' => [
+            'exclude' => true,
+            'label' => 'LLL:EXT:frontend/Resources/Private/Language/Database.xlf:tt_content.table_class',
+            'config' => [
+                'type' => 'select',
+                'renderType' => 'selectSingle',
+                'items' => [
+                    ['LLL:EXT:frontend/Resources/Private/Language/Database.xlf:tt_content.table_class.default', ''],
+                    ['LLL:EXT:frontend/Resources/Private/Language/Database.xlf:tt_content.table_class.striped', 'striped'],
+                    ['LLL:EXT:frontend/Resources/Private/Language/Database.xlf:tt_content.table_class.bordered', 'bordered']
+                ],
+                'default' => ''
             ]
         ],
         'table_caption' => [
@@ -1042,19 +1231,45 @@ return [
                 ]
             ]
         ],
-    ],
-    'types' => [
-        '1' => [
-            'showitem' => 'CType'
+        'uploads_description' => [
+            'exclude' => true,
+            'label' => 'LLL:EXT:frontend/Resources/Private/Language/Database.xlf:tt_content.uploads_description',
+            'config' => [
+                'type' => 'check',
+                'default' => 0,
+                'items' => [
+                    ['LLL:EXT:lang/Resources/Private/Language/locallang_core.xml:labels.enabled', 1]
+                ]
+            ]
+        ],
+        'uploads_type' => [
+            'exclude' => true,
+            'label' => 'LLL:EXT:frontend/Resources/Private/Language/Database.xlf:tt_content.uploads_type',
+            'config' => [
+                'type' => 'select',
+                'renderType' => 'selectSingle',
+                'items' => [
+                    ['LLL:EXT:frontend/Resources/Private/Language/Database.xlf:tt_content.uploads_type.0', 0],
+                    ['LLL:EXT:frontend/Resources/Private/Language/Database.xlf:tt_content.uploads_type.1', 1],
+                    ['LLL:EXT:frontend/Resources/Private/Language/Database.xlf:tt_content.uploads_type.2', 2]
+                ],
+                'default' => 0
+            ]
+        ],
+    ],
+    'types' => [
+        '1' => [
+            'showitem' => 'CType'
         ],
         'bullets' => [
             'showitem' => '
                 --div--;LLL:EXT:core/Resources/Private/Language/Form/locallang_tabs.xlf:general,
                     --palette--;LLL:EXT:frontend/Resources/Private/Language/locallang_ttc.xlf:palette.general;general,
-                    --palette--;LLL:EXT:frontend/Resources/Private/Language/locallang_ttc.xlf:palette.header;header,
+                    --palette--;LLL:EXT:frontend/Resources/Private/Language/locallang_ttc.xlf:palette.headers;headers,
+                    bullets_type,
                     bodytext;LLL:EXT:frontend/Resources/Private/Language/locallang_ttc.xlf:bodytext.ALT.bulletlist_formlabel,
                 --div--;LLL:EXT:frontend/Resources/Private/Language/locallang_ttc.xlf:tabs.appearance,
-                    layout;LLL:EXT:frontend/Resources/Private/Language/locallang_ttc.xlf:layout_formlabel,
+                    --palette--;LLL:EXT:frontend/Resources/Private/Language/locallang_ttc.xlf:palette.frames;frames,
                     --palette--;LLL:EXT:frontend/Resources/Private/Language/locallang_ttc.xlf:palette.appearanceLinks;appearanceLinks,
                 --div--;LLL:EXT:core/Resources/Private/Language/Form/locallang_tabs.xlf:language,
                     --palette--;;language,
@@ -1081,7 +1296,7 @@ return [
                     --palette--;LLL:EXT:frontend/Resources/Private/Language/locallang_ttc.xlf:palette.general;general,
                     header;LLL:EXT:frontend/Resources/Private/Language/locallang_ttc.xlf:header.ALT.div_formlabel,
                 --div--;LLL:EXT:frontend/Resources/Private/Language/locallang_ttc.xlf:tabs.appearance,
-                    layout;LLL:EXT:frontend/Resources/Private/Language/locallang_ttc.xlf:layout_formlabel,
+                    --palette--;LLL:EXT:frontend/Resources/Private/Language/locallang_ttc.xlf:palette.frames;frames,
                     --palette--;LLL:EXT:frontend/Resources/Private/Language/locallang_ttc.xlf:palette.appearanceLinks;appearanceLinks,
                 --div--;LLL:EXT:core/Resources/Private/Language/Form/locallang_tabs.xlf:language,
                     --palette--;;language,
@@ -1101,7 +1316,129 @@ return [
                     --palette--;LLL:EXT:frontend/Resources/Private/Language/locallang_ttc.xlf:palette.general;general,
                     --palette--;LLL:EXT:frontend/Resources/Private/Language/locallang_ttc.xlf:palette.headers;headers,
                 --div--;LLL:EXT:frontend/Resources/Private/Language/locallang_ttc.xlf:tabs.appearance,
-                    layout;LLL:EXT:frontend/Resources/Private/Language/locallang_ttc.xlf:layout_formlabel,
+                    --palette--;LLL:EXT:frontend/Resources/Private/Language/locallang_ttc.xlf:palette.frames;frames,
+                    --palette--;LLL:EXT:frontend/Resources/Private/Language/locallang_ttc.xlf:palette.appearanceLinks;appearanceLinks,
+                --div--;LLL:EXT:core/Resources/Private/Language/Form/locallang_tabs.xlf:language,
+                    --palette--;;language,
+                --div--;LLL:EXT:core/Resources/Private/Language/Form/locallang_tabs.xlf:access,
+                    --palette--;;hidden,
+                    --palette--;LLL:EXT:frontend/Resources/Private/Language/locallang_ttc.xlf:palette.access;access,
+                --div--;LLL:EXT:core/Resources/Private/Language/Form/locallang_tabs.xlf:categories,
+                    categories,
+                --div--;LLL:EXT:core/Resources/Private/Language/Form/locallang_tabs.xlf:notes,
+                    rowDescription,
+                --div--;LLL:EXT:core/Resources/Private/Language/Form/locallang_tabs.xlf:extended,
+            '
+        ],
+        'text' => [
+            'showitem' => '
+                --div--;LLL:EXT:core/Resources/Private/Language/Form/locallang_tabs.xlf:general,
+                    --palette--;LLL:EXT:frontend/Resources/Private/Language/locallang_ttc.xlf:palette.general;general,
+                    --palette--;LLL:EXT:frontend/Resources/Private/Language/locallang_ttc.xlf:palette.headers;headers,
+                    bodytext;LLL:EXT:frontend/Resources/Private/Language/locallang_ttc.xlf:bodytext_formlabel,
+                --div--;LLL:EXT:frontend/Resources/Private/Language/locallang_ttc.xlf:tabs.appearance,
+                    --palette--;LLL:EXT:frontend/Resources/Private/Language/locallang_ttc.xlf:palette.frames;frames,
+                    --palette--;LLL:EXT:frontend/Resources/Private/Language/locallang_ttc.xlf:palette.appearanceLinks;appearanceLinks,
+                --div--;LLL:EXT:core/Resources/Private/Language/Form/locallang_tabs.xlf:language,
+                    --palette--;;language,
+                --div--;LLL:EXT:core/Resources/Private/Language/Form/locallang_tabs.xlf:access,
+                    --palette--;;hidden,
+                    --palette--;LLL:EXT:frontend/Resources/Private/Language/locallang_ttc.xlf:palette.access;access,
+                --div--;LLL:EXT:core/Resources/Private/Language/Form/locallang_tabs.xlf:categories,
+                    categories,
+                --div--;LLL:EXT:core/Resources/Private/Language/Form/locallang_tabs.xlf:notes,
+                    rowDescription,
+                --div--;LLL:EXT:core/Resources/Private/Language/Form/locallang_tabs.xlf:extended,
+            ',
+            'columnsOverrides' => [
+                'bodytext' => [
+                    'config' => [
+                        'enableRichtext' => true,
+                        'richtextConfiguration' => 'default'
+                    ]
+                ]
+            ]
+        ],
+        'textpic' => [
+            'showitem' => '
+                --div--;LLL:EXT:core/Resources/Private/Language/Form/locallang_tabs.xlf:general,
+                    --palette--;LLL:EXT:frontend/Resources/Private/Language/locallang_ttc.xlf:palette.general;general,
+                    --palette--;LLL:EXT:frontend/Resources/Private/Language/locallang_ttc.xlf:palette.headers;headers,
+                    bodytext;Text,
+                --div--;LLL:EXT:frontend/Resources/Private/Language/locallang_ttc.xlf:tabs.images,
+                    image,
+                    --palette--;LLL:EXT:frontend/Resources/Private/Language/Database.xlf:tt_content.palette.mediaAdjustments;mediaAdjustments,
+                    --palette--;LLL:EXT:frontend/Resources/Private/Language/Database.xlf:tt_content.palette.gallerySettings;gallerySettings,
+                    --palette--;LLL:EXT:frontend/Resources/Private/Language/locallang_ttc.xlf:palette.imagelinks;imagelinks,
+                --div--;LLL:EXT:frontend/Resources/Private/Language/locallang_ttc.xlf:tabs.appearance,
+                    --palette--;LLL:EXT:frontend/Resources/Private/Language/locallang_ttc.xlf:palette.frames;frames,
+                    --palette--;LLL:EXT:frontend/Resources/Private/Language/locallang_ttc.xlf:palette.appearanceLinks;appearanceLinks,
+                --div--;LLL:EXT:core/Resources/Private/Language/Form/locallang_tabs.xlf:language,
+                    --palette--;;language,
+                --div--;LLL:EXT:core/Resources/Private/Language/Form/locallang_tabs.xlf:access,
+                    --palette--;;hidden,
+                    --palette--;LLL:EXT:frontend/Resources/Private/Language/locallang_ttc.xlf:palette.access;access,
+                --div--;LLL:EXT:core/Resources/Private/Language/Form/locallang_tabs.xlf:categories,
+                    categories,
+                --div--;LLL:EXT:core/Resources/Private/Language/Form/locallang_tabs.xlf:notes,
+                    rowDescription,
+                --div--;LLL:EXT:core/Resources/Private/Language/Form/locallang_tabs.xlf:extended,
+            ',
+            'columnsOverrides' => [
+                'bodytext' => [
+                    'config' => [
+                        'enableRichtext' => true,
+                        'richtextConfiguration' => 'default'
+                    ]
+                ]
+            ]
+        ],
+        'textmedia' => [
+            'showitem' => '
+                --div--;LLL:EXT:core/Resources/Private/Language/Form/locallang_tabs.xlf:general,
+                    --palette--;LLL:EXT:frontend/Resources/Private/Language/locallang_ttc.xlf:palette.general;general,
+                    --palette--;LLL:EXT:frontend/Resources/Private/Language/locallang_ttc.xlf:palette.headers;headers,
+                    bodytext;LLL:EXT:frontend/Resources/Private/Language/locallang_ttc.xlf:bodytext_formlabel,
+                --div--;LLL:EXT:frontend/Resources/Private/Language/locallang_ttc.xlf:tabs.media,
+                    assets,
+                    --palette--;LLL:EXT:frontend/Resources/Private/Language/Database.xlf:tt_content.palette.mediaAdjustments;mediaAdjustments,
+                    --palette--;LLL:EXT:frontend/Resources/Private/Language/Database.xlf:tt_content.palette.gallerySettings;gallerySettings,
+                    --palette--;LLL:EXT:frontend/Resources/Private/Language/locallang_ttc.xlf:palette.imagelinks;imagelinks,
+                --div--;LLL:EXT:frontend/Resources/Private/Language/locallang_ttc.xlf:tabs.appearance,
+                    --palette--;LLL:EXT:frontend/Resources/Private/Language/locallang_ttc.xlf:palette.frames;frames,
+                    --palette--;LLL:EXT:frontend/Resources/Private/Language/locallang_ttc.xlf:palette.appearanceLinks;appearanceLinks,
+                --div--;LLL:EXT:core/Resources/Private/Language/Form/locallang_tabs.xlf:language,
+                    --palette--;;language,
+                --div--;LLL:EXT:core/Resources/Private/Language/Form/locallang_tabs.xlf:access,
+                    --palette--;;hidden,
+                    --palette--;LLL:EXT:frontend/Resources/Private/Language/locallang_ttc.xlf:palette.access;access,
+                --div--;LLL:EXT:core/Resources/Private/Language/Form/locallang_tabs.xlf:categories,
+                    categories,
+                --div--;LLL:EXT:core/Resources/Private/Language/Form/locallang_tabs.xlf:notes,
+                    rowDescription,
+                --div--;LLL:EXT:core/Resources/Private/Language/Form/locallang_tabs.xlf:extended,
+            ',
+            'columnsOverrides' => [
+                'bodytext' => [
+                    'config' => [
+                        'enableRichtext' => true,
+                        'richtextConfiguration' => 'default'
+                    ]
+                ]
+            ]
+        ],
+        'image' => [
+            'showitem' => '
+                --div--;LLL:EXT:core/Resources/Private/Language/Form/locallang_tabs.xlf:general,
+                    --palette--;LLL:EXT:frontend/Resources/Private/Language/locallang_ttc.xlf:palette.general;general,
+                    --palette--;LLL:EXT:frontend/Resources/Private/Language/locallang_ttc.xlf:palette.headers;headers,
+                --div--;LLL:EXT:frontend/Resources/Private/Language/locallang_ttc.xlf:tabs.images,
+                    image,
+                    --palette--;LLL:EXT:frontend/Resources/Private/Language/Database.xlf:tt_content.palette.mediaAdjustments;mediaAdjustments,
+                    --palette--;LLL:EXT:frontend/Resources/Private/Language/Database.xlf:tt_content.palette.gallerySettings;gallerySettings,
+                    --palette--;LLL:EXT:frontend/Resources/Private/Language/locallang_ttc.xlf:palette.imagelinks;imagelinks,
+                --div--;LLL:EXT:frontend/Resources/Private/Language/locallang_ttc.xlf:tabs.appearance,
+                    --palette--;LLL:EXT:frontend/Resources/Private/Language/locallang_ttc.xlf:palette.frames;frames,
                     --palette--;LLL:EXT:frontend/Resources/Private/Language/locallang_ttc.xlf:palette.appearanceLinks;appearanceLinks,
                 --div--;LLL:EXT:core/Resources/Private/Language/Form/locallang_tabs.xlf:language,
                     --palette--;;language,
@@ -1122,7 +1459,7 @@ return [
                     header;LLL:EXT:frontend/Resources/Private/Language/locallang_ttc.xlf:header.ALT.html_formlabel,
                     bodytext;LLL:EXT:frontend/Resources/Private/Language/locallang_ttc.xlf:bodytext.ALT.html_formlabel,
                 --div--;LLL:EXT:frontend/Resources/Private/Language/locallang_ttc.xlf:tabs.appearance,
-                    layout;LLL:EXT:frontend/Resources/Private/Language/locallang_ttc.xlf:layout_formlabel,
+                    --palette--;LLL:EXT:frontend/Resources/Private/Language/locallang_ttc.xlf:palette.frames;frames,
                     --palette--;LLL:EXT:frontend/Resources/Private/Language/locallang_ttc.xlf:palette.appearanceLinks;appearanceLinks,
                 --div--;LLL:EXT:core/Resources/Private/Language/Form/locallang_tabs.xlf:language,
                     --palette--;;language,
@@ -1140,15 +1477,39 @@ return [
             'showitem' => '
                 --div--;LLL:EXT:core/Resources/Private/Language/Form/locallang_tabs.xlf:general,
                     --palette--;LLL:EXT:frontend/Resources/Private/Language/locallang_ttc.xlf:palette.general;general,
-                    --palette--;LLL:EXT:frontend/Resources/Private/Language/locallang_ttc.xlf:palette.header;header,
+                    --palette--;LLL:EXT:frontend/Resources/Private/Language/locallang_ttc.xlf:palette.headers;headers,
                 --div--;LLL:EXT:frontend/Resources/Private/Language/locallang_ttc.xlf:tabs.plugin,
                     list_type;LLL:EXT:frontend/Resources/Private/Language/locallang_ttc.xlf:list_type_formlabel,
-                    select_key;LLL:EXT:frontend/Resources/Private/Language/locallang_ttc.xlf:select_key_formlabel,
                     pages;LLL:EXT:frontend/Resources/Private/Language/locallang_ttc.xlf:pages.ALT.list_formlabel,
                     recursive,
                 --div--;LLL:EXT:frontend/Resources/Private/Language/locallang_ttc.xlf:tabs.appearance,
-                    layout;LLL:EXT:frontend/Resources/Private/Language/locallang_ttc.xlf:layout_formlabel,
+                    --palette--;LLL:EXT:frontend/Resources/Private/Language/locallang_ttc.xlf:palette.frames;frames,
+                    --palette--;LLL:EXT:frontend/Resources/Private/Language/locallang_ttc.xlf:palette.appearanceLinks;appearanceLinks,
+                --div--;LLL:EXT:core/Resources/Private/Language/Form/locallang_tabs.xlf:language,
+                    --palette--;;language,
+                --div--;LLL:EXT:core/Resources/Private/Language/Form/locallang_tabs.xlf:access,
+                    --palette--;;hidden,
+                    --palette--;LLL:EXT:frontend/Resources/Private/Language/locallang_ttc.xlf:palette.access;access,
+                --div--;LLL:EXT:core/Resources/Private/Language/Form/locallang_tabs.xlf:categories,
+                    categories,
+                --div--;LLL:EXT:core/Resources/Private/Language/Form/locallang_tabs.xlf:notes,
+                    rowDescription,
+                --div--;LLL:EXT:core/Resources/Private/Language/Form/locallang_tabs.xlf:extended,
+            ',
+            'subtype_value_field' => 'list_type'
+        ],
+        'menu_categorized_pages' => [
+            'showitem' => '
+                --div--;LLL:EXT:core/Resources/Private/Language/Form/locallang_tabs.xlf:general,
+                    --palette--;LLL:EXT:frontend/Resources/Private/Language/locallang_ttc.xlf:palette.general;general,
+                    --palette--;LLL:EXT:frontend/Resources/Private/Language/locallang_ttc.xlf:palette.headers;headers,
+                    selected_categories,
+                    category_field,
+                --div--;LLL:EXT:frontend/Resources/Private/Language/locallang_ttc.xlf:tabs.appearance,
+                    --palette--;LLL:EXT:frontend/Resources/Private/Language/locallang_ttc.xlf:palette.frames;frames,
                     --palette--;LLL:EXT:frontend/Resources/Private/Language/locallang_ttc.xlf:palette.appearanceLinks;appearanceLinks,
+                --div--;LLL:EXT:frontend/Resources/Private/Language/locallang_ttc.xlf:tabs.accessibility,
+                    --palette--;LLL:EXT:frontend/Resources/Private/Language/locallang_ttc.xlf:palette.menu_accessibility;menu_accessibility,
                 --div--;LLL:EXT:core/Resources/Private/Language/Form/locallang_tabs.xlf:language,
                     --palette--;;language,
                 --div--;LLL:EXT:core/Resources/Private/Language/Form/locallang_tabs.xlf:access,
@@ -1160,30 +1521,25 @@ return [
                     rowDescription,
                 --div--;LLL:EXT:core/Resources/Private/Language/Form/locallang_tabs.xlf:extended,
             ',
-            'subtype_value_field' => 'list_type',
-            'subtypes_excludelist' => [
-                '3' => 'layout',
-                '2' => 'layout',
-                '5' => 'layout',
-                '9' => 'layout',
-                '0' => 'layout',
-                '6' => 'layout',
-                '7' => 'layout',
-                '1' => 'layout',
-                '8' => 'layout',
-                '11' => 'layout',
-                '20' => 'layout',
-                '21' => 'layout'
+            'columnsOverrides' => [
+                'category_field' => [
+                    'config' => [
+                        'itemsProcConfig' => [
+                            'table' => 'pages'
+                        ]
+                    ]
+                ]
             ]
         ],
-        'menu' => [
+        'menu_categorized_content' => [
             'showitem' => '
                 --div--;LLL:EXT:core/Resources/Private/Language/Form/locallang_tabs.xlf:general,
                     --palette--;LLL:EXT:frontend/Resources/Private/Language/locallang_ttc.xlf:palette.general;general,
-                    --palette--;LLL:EXT:frontend/Resources/Private/Language/locallang_ttc.xlf:palette.header;header,
-                    --palette--;LLL:EXT:frontend/Resources/Private/Language/locallang_ttc.xlf:palette.menu;menu,
+                    --palette--;LLL:EXT:frontend/Resources/Private/Language/locallang_ttc.xlf:palette.headers;headers,
+                    selected_categories,
+                    category_field,
                 --div--;LLL:EXT:frontend/Resources/Private/Language/locallang_ttc.xlf:tabs.appearance,
-                    layout;LLL:EXT:frontend/Resources/Private/Language/locallang_ttc.xlf:layout_formlabel,
+                    --palette--;LLL:EXT:frontend/Resources/Private/Language/locallang_ttc.xlf:palette.frames;frames,
                     --palette--;LLL:EXT:frontend/Resources/Private/Language/locallang_ttc.xlf:palette.appearanceLinks;appearanceLinks,
                 --div--;LLL:EXT:frontend/Resources/Private/Language/locallang_ttc.xlf:tabs.accessibility,
                     --palette--;LLL:EXT:frontend/Resources/Private/Language/locallang_ttc.xlf:palette.menu_accessibility;menu_accessibility,
@@ -1198,17 +1554,222 @@ return [
                     rowDescription,
                 --div--;LLL:EXT:core/Resources/Private/Language/Form/locallang_tabs.xlf:extended,
             ',
-            'subtype_value_field' => 'menu_type',
-            'subtypes_excludelist' => [
-                '2' => 'pages',
-                'categorized_pages' => 'pages',
-                'categorized_content' => 'pages',
-            ],
-            'subtypes_addlist' => [
-                'categorized_pages' => 'selected_categories, category_field',
-                'categorized_content' => 'selected_categories, category_field',
+            'columnsOverrides' => [
+                'category_field' => [
+                    'config' => [
+                        'itemsProcConfig' => [
+                            'table' => 'tt_content'
+                        ]
+                    ]
+                ]
             ]
         ],
+        'menu_pages' => [
+            'showitem' => '
+                --div--;LLL:EXT:core/Resources/Private/Language/Form/locallang_tabs.xlf:general,
+                    --palette--;LLL:EXT:frontend/Resources/Private/Language/locallang_ttc.xlf:palette.general;general,
+                    --palette--;LLL:EXT:frontend/Resources/Private/Language/locallang_ttc.xlf:palette.headers;headers,
+                    pages;LLL:EXT:frontend/Resources/Private/Language/locallang_ttc.xlf:pages.ALT.menu_formlabel,
+                --div--;LLL:EXT:frontend/Resources/Private/Language/locallang_ttc.xlf:tabs.appearance,
+                    --palette--;LLL:EXT:frontend/Resources/Private/Language/locallang_ttc.xlf:palette.frames;frames,
+                    --palette--;LLL:EXT:frontend/Resources/Private/Language/locallang_ttc.xlf:palette.appearanceLinks;appearanceLinks,
+                --div--;LLL:EXT:frontend/Resources/Private/Language/locallang_ttc.xlf:tabs.accessibility,
+                    --palette--;LLL:EXT:frontend/Resources/Private/Language/locallang_ttc.xlf:palette.menu_accessibility;menu_accessibility,
+                --div--;LLL:EXT:core/Resources/Private/Language/Form/locallang_tabs.xlf:language,
+                    --palette--;;language,
+                --div--;LLL:EXT:core/Resources/Private/Language/Form/locallang_tabs.xlf:access,
+                    --palette--;;hidden,
+                    --palette--;LLL:EXT:frontend/Resources/Private/Language/locallang_ttc.xlf:palette.access;access,
+                --div--;LLL:EXT:core/Resources/Private/Language/Form/locallang_tabs.xlf:categories,
+                    categories,
+                --div--;LLL:EXT:core/Resources/Private/Language/Form/locallang_tabs.xlf:notes,
+                    rowDescription,
+                --div--;LLL:EXT:core/Resources/Private/Language/Form/locallang_tabs.xlf:extended,
+            ',
+        ],
+        'menu_subpages' => [
+            'showitem' => '
+                --div--;LLL:EXT:core/Resources/Private/Language/Form/locallang_tabs.xlf:general,
+                    --palette--;LLL:EXT:frontend/Resources/Private/Language/locallang_ttc.xlf:palette.general;general,
+                    --palette--;LLL:EXT:frontend/Resources/Private/Language/locallang_ttc.xlf:palette.headers;headers,
+                    pages;LLL:EXT:frontend/Resources/Private/Language/locallang_ttc.xlf:pages.ALT.menu_formlabel,
+                --div--;LLL:EXT:frontend/Resources/Private/Language/locallang_ttc.xlf:tabs.appearance,
+                    --palette--;LLL:EXT:frontend/Resources/Private/Language/locallang_ttc.xlf:palette.frames;frames,
+                    --palette--;LLL:EXT:frontend/Resources/Private/Language/locallang_ttc.xlf:palette.appearanceLinks;appearanceLinks,
+                --div--;LLL:EXT:frontend/Resources/Private/Language/locallang_ttc.xlf:tabs.accessibility,
+                    --palette--;LLL:EXT:frontend/Resources/Private/Language/locallang_ttc.xlf:palette.menu_accessibility;menu_accessibility,
+                --div--;LLL:EXT:core/Resources/Private/Language/Form/locallang_tabs.xlf:language,
+                    --palette--;;language,
+                --div--;LLL:EXT:core/Resources/Private/Language/Form/locallang_tabs.xlf:access,
+                    --palette--;;hidden,
+                    --palette--;LLL:EXT:frontend/Resources/Private/Language/locallang_ttc.xlf:palette.access;access,
+                --div--;LLL:EXT:core/Resources/Private/Language/Form/locallang_tabs.xlf:categories,
+                    categories,
+                --div--;LLL:EXT:core/Resources/Private/Language/Form/locallang_tabs.xlf:notes,
+                    rowDescription,
+                --div--;LLL:EXT:core/Resources/Private/Language/Form/locallang_tabs.xlf:extended,
+            ',
+        ],
+        'menu_sitemap' => [
+            'showitem' => '
+                --div--;LLL:EXT:core/Resources/Private/Language/Form/locallang_tabs.xlf:general,
+                    --palette--;LLL:EXT:frontend/Resources/Private/Language/locallang_ttc.xlf:palette.general;general,
+                    --palette--;LLL:EXT:frontend/Resources/Private/Language/locallang_ttc.xlf:palette.headers;headers,
+                --div--;LLL:EXT:frontend/Resources/Private/Language/locallang_ttc.xlf:tabs.appearance,
+                    --palette--;LLL:EXT:frontend/Resources/Private/Language/locallang_ttc.xlf:palette.frames;frames,
+                    --palette--;LLL:EXT:frontend/Resources/Private/Language/locallang_ttc.xlf:palette.appearanceLinks;appearanceLinks,
+                --div--;LLL:EXT:frontend/Resources/Private/Language/locallang_ttc.xlf:tabs.accessibility,
+                    --palette--;LLL:EXT:frontend/Resources/Private/Language/locallang_ttc.xlf:palette.menu_accessibility;menu_accessibility,
+                --div--;LLL:EXT:core/Resources/Private/Language/Form/locallang_tabs.xlf:language,
+                    --palette--;;language,
+                --div--;LLL:EXT:core/Resources/Private/Language/Form/locallang_tabs.xlf:access,
+                    --palette--;;hidden,
+                    --palette--;LLL:EXT:frontend/Resources/Private/Language/locallang_ttc.xlf:palette.access;access,
+                --div--;LLL:EXT:core/Resources/Private/Language/Form/locallang_tabs.xlf:categories,
+                    categories,
+                --div--;LLL:EXT:core/Resources/Private/Language/Form/locallang_tabs.xlf:notes,
+                    rowDescription,
+                --div--;LLL:EXT:core/Resources/Private/Language/Form/locallang_tabs.xlf:extended,
+            ',
+        ],
+        'menu_section' => [
+            'showitem' => '
+                --div--;LLL:EXT:core/Resources/Private/Language/Form/locallang_tabs.xlf:general,
+                    --palette--;LLL:EXT:frontend/Resources/Private/Language/locallang_ttc.xlf:palette.general;general,
+                    --palette--;LLL:EXT:frontend/Resources/Private/Language/locallang_ttc.xlf:palette.headers;headers,
+                    pages;LLL:EXT:frontend/Resources/Private/Language/locallang_ttc.xlf:pages.ALT.menu_formlabel,
+                --div--;LLL:EXT:frontend/Resources/Private/Language/locallang_ttc.xlf:tabs.appearance,
+                    --palette--;LLL:EXT:frontend/Resources/Private/Language/locallang_ttc.xlf:palette.frames;frames,
+                    --palette--;LLL:EXT:frontend/Resources/Private/Language/locallang_ttc.xlf:palette.appearanceLinks;appearanceLinks,
+                --div--;LLL:EXT:frontend/Resources/Private/Language/locallang_ttc.xlf:tabs.accessibility,
+                    --palette--;LLL:EXT:frontend/Resources/Private/Language/locallang_ttc.xlf:palette.menu_accessibility;menu_accessibility,
+                --div--;LLL:EXT:core/Resources/Private/Language/Form/locallang_tabs.xlf:language,
+                    --palette--;;language,
+                --div--;LLL:EXT:core/Resources/Private/Language/Form/locallang_tabs.xlf:access,
+                    --palette--;;hidden,
+                    --palette--;LLL:EXT:frontend/Resources/Private/Language/locallang_ttc.xlf:palette.access;access,
+                --div--;LLL:EXT:core/Resources/Private/Language/Form/locallang_tabs.xlf:categories,
+                    categories,
+                --div--;LLL:EXT:core/Resources/Private/Language/Form/locallang_tabs.xlf:notes,
+                    rowDescription,
+                --div--;LLL:EXT:core/Resources/Private/Language/Form/locallang_tabs.xlf:extended,
+            ',
+        ],
+        'menu_abstract' => [
+            'showitem' => '
+                --div--;LLL:EXT:core/Resources/Private/Language/Form/locallang_tabs.xlf:general,
+                    --palette--;LLL:EXT:frontend/Resources/Private/Language/locallang_ttc.xlf:palette.general;general,
+                    --palette--;LLL:EXT:frontend/Resources/Private/Language/locallang_ttc.xlf:palette.headers;headers,
+                    pages;LLL:EXT:frontend/Resources/Private/Language/locallang_ttc.xlf:pages.ALT.menu_formlabel,
+                --div--;LLL:EXT:frontend/Resources/Private/Language/locallang_ttc.xlf:tabs.appearance,
+                    --palette--;LLL:EXT:frontend/Resources/Private/Language/locallang_ttc.xlf:palette.frames;frames,
+                    --palette--;LLL:EXT:frontend/Resources/Private/Language/locallang_ttc.xlf:palette.appearanceLinks;appearanceLinks,
+                --div--;LLL:EXT:frontend/Resources/Private/Language/locallang_ttc.xlf:tabs.accessibility,
+                    --palette--;LLL:EXT:frontend/Resources/Private/Language/locallang_ttc.xlf:palette.menu_accessibility;menu_accessibility,
+                --div--;LLL:EXT:core/Resources/Private/Language/Form/locallang_tabs.xlf:language,
+                    --palette--;;language,
+                --div--;LLL:EXT:core/Resources/Private/Language/Form/locallang_tabs.xlf:access,
+                    --palette--;;hidden,
+                    --palette--;LLL:EXT:frontend/Resources/Private/Language/locallang_ttc.xlf:palette.access;access,
+                --div--;LLL:EXT:core/Resources/Private/Language/Form/locallang_tabs.xlf:categories,
+                    categories,
+                --div--;LLL:EXT:core/Resources/Private/Language/Form/locallang_tabs.xlf:notes,
+                    rowDescription,
+                --div--;LLL:EXT:core/Resources/Private/Language/Form/locallang_tabs.xlf:extended,
+            ',
+        ],
+        'menu_recently_updated' => [
+            'showitem' => '
+                --div--;LLL:EXT:core/Resources/Private/Language/Form/locallang_tabs.xlf:general,
+                    --palette--;LLL:EXT:frontend/Resources/Private/Language/locallang_ttc.xlf:palette.general;general,
+                    --palette--;LLL:EXT:frontend/Resources/Private/Language/locallang_ttc.xlf:palette.headers;headers,
+                    pages;LLL:EXT:frontend/Resources/Private/Language/locallang_ttc.xlf:pages.ALT.menu_formlabel,
+                --div--;LLL:EXT:frontend/Resources/Private/Language/locallang_ttc.xlf:tabs.appearance,
+                    --palette--;LLL:EXT:frontend/Resources/Private/Language/locallang_ttc.xlf:palette.frames;frames,
+                    --palette--;LLL:EXT:frontend/Resources/Private/Language/locallang_ttc.xlf:palette.appearanceLinks;appearanceLinks,
+                --div--;LLL:EXT:frontend/Resources/Private/Language/locallang_ttc.xlf:tabs.accessibility,
+                    --palette--;LLL:EXT:frontend/Resources/Private/Language/locallang_ttc.xlf:palette.menu_accessibility;menu_accessibility,
+                --div--;LLL:EXT:core/Resources/Private/Language/Form/locallang_tabs.xlf:language,
+                    --palette--;;language,
+                --div--;LLL:EXT:core/Resources/Private/Language/Form/locallang_tabs.xlf:access,
+                    --palette--;;hidden,
+                    --palette--;LLL:EXT:frontend/Resources/Private/Language/locallang_ttc.xlf:palette.access;access,
+                --div--;LLL:EXT:core/Resources/Private/Language/Form/locallang_tabs.xlf:categories,
+                    categories,
+                --div--;LLL:EXT:core/Resources/Private/Language/Form/locallang_tabs.xlf:notes,
+                    rowDescription,
+                --div--;LLL:EXT:core/Resources/Private/Language/Form/locallang_tabs.xlf:extended,
+            ',
+        ],
+        'menu_related_pages' => [
+            'showitem' => '
+                --div--;LLL:EXT:core/Resources/Private/Language/Form/locallang_tabs.xlf:general,
+                    --palette--;LLL:EXT:frontend/Resources/Private/Language/locallang_ttc.xlf:palette.general;general,
+                    --palette--;LLL:EXT:frontend/Resources/Private/Language/locallang_ttc.xlf:palette.headers;headers,
+                    pages;LLL:EXT:frontend/Resources/Private/Language/locallang_ttc.xlf:pages.ALT.menu_formlabel,
+                --div--;LLL:EXT:frontend/Resources/Private/Language/locallang_ttc.xlf:tabs.appearance,
+                    --palette--;LLL:EXT:frontend/Resources/Private/Language/locallang_ttc.xlf:palette.frames;frames,
+                    --palette--;LLL:EXT:frontend/Resources/Private/Language/locallang_ttc.xlf:palette.appearanceLinks;appearanceLinks,
+                --div--;LLL:EXT:frontend/Resources/Private/Language/locallang_ttc.xlf:tabs.accessibility,
+                    --palette--;LLL:EXT:frontend/Resources/Private/Language/locallang_ttc.xlf:palette.menu_accessibility;menu_accessibility,
+                --div--;LLL:EXT:core/Resources/Private/Language/Form/locallang_tabs.xlf:language,
+                    --palette--;;language,
+                --div--;LLL:EXT:core/Resources/Private/Language/Form/locallang_tabs.xlf:access,
+                    --palette--;;hidden,
+                    --palette--;LLL:EXT:frontend/Resources/Private/Language/locallang_ttc.xlf:palette.access;access,
+                --div--;LLL:EXT:core/Resources/Private/Language/Form/locallang_tabs.xlf:categories,
+                    categories,
+                --div--;LLL:EXT:core/Resources/Private/Language/Form/locallang_tabs.xlf:notes,
+                    rowDescription,
+                --div--;LLL:EXT:core/Resources/Private/Language/Form/locallang_tabs.xlf:extended,
+            ',
+        ],
+        'menu_section_pages' => [
+            'showitem' => '
+                --div--;LLL:EXT:core/Resources/Private/Language/Form/locallang_tabs.xlf:general,
+                    --palette--;LLL:EXT:frontend/Resources/Private/Language/locallang_ttc.xlf:palette.general;general,
+                    --palette--;LLL:EXT:frontend/Resources/Private/Language/locallang_ttc.xlf:palette.headers;headers,
+                    pages;LLL:EXT:frontend/Resources/Private/Language/locallang_ttc.xlf:pages.ALT.menu_formlabel,
+                --div--;LLL:EXT:frontend/Resources/Private/Language/locallang_ttc.xlf:tabs.appearance,
+                    --palette--;LLL:EXT:frontend/Resources/Private/Language/locallang_ttc.xlf:palette.frames;frames,
+                    --palette--;LLL:EXT:frontend/Resources/Private/Language/locallang_ttc.xlf:palette.appearanceLinks;appearanceLinks,
+                --div--;LLL:EXT:frontend/Resources/Private/Language/locallang_ttc.xlf:tabs.accessibility,
+                    --palette--;LLL:EXT:frontend/Resources/Private/Language/locallang_ttc.xlf:palette.menu_accessibility;menu_accessibility,
+                --div--;LLL:EXT:core/Resources/Private/Language/Form/locallang_tabs.xlf:language,
+                    --palette--;;language,
+                --div--;LLL:EXT:core/Resources/Private/Language/Form/locallang_tabs.xlf:access,
+                    --palette--;;hidden,
+                    --palette--;LLL:EXT:frontend/Resources/Private/Language/locallang_ttc.xlf:palette.access;access,
+                --div--;LLL:EXT:core/Resources/Private/Language/Form/locallang_tabs.xlf:categories,
+                    categories,
+                --div--;LLL:EXT:core/Resources/Private/Language/Form/locallang_tabs.xlf:notes,
+                    rowDescription,
+                --div--;LLL:EXT:core/Resources/Private/Language/Form/locallang_tabs.xlf:extended,
+            ',
+        ],
+        'menu_sitemap_pages' => [
+            'showitem' => '
+                --div--;LLL:EXT:core/Resources/Private/Language/Form/locallang_tabs.xlf:general,
+                    --palette--;LLL:EXT:frontend/Resources/Private/Language/locallang_ttc.xlf:palette.general;general,
+                    --palette--;LLL:EXT:frontend/Resources/Private/Language/locallang_ttc.xlf:palette.headers;headers,
+                    pages;LLL:EXT:frontend/Resources/Private/Language/locallang_ttc.xlf:pages.ALT.menu_formlabel,
+                --div--;LLL:EXT:frontend/Resources/Private/Language/locallang_ttc.xlf:tabs.appearance,
+                    --palette--;LLL:EXT:frontend/Resources/Private/Language/locallang_ttc.xlf:palette.frames;frames,
+                    --palette--;LLL:EXT:frontend/Resources/Private/Language/locallang_ttc.xlf:palette.appearanceLinks;appearanceLinks,
+                --div--;LLL:EXT:frontend/Resources/Private/Language/locallang_ttc.xlf:tabs.accessibility,
+                    --palette--;LLL:EXT:frontend/Resources/Private/Language/locallang_ttc.xlf:palette.menu_accessibility;menu_accessibility,
+                --div--;LLL:EXT:core/Resources/Private/Language/Form/locallang_tabs.xlf:language,
+                    --palette--;;language,
+                --div--;LLL:EXT:core/Resources/Private/Language/Form/locallang_tabs.xlf:access,
+                    --palette--;;hidden,
+                    --palette--;LLL:EXT:frontend/Resources/Private/Language/locallang_ttc.xlf:palette.access;access,
+                --div--;LLL:EXT:core/Resources/Private/Language/Form/locallang_tabs.xlf:categories,
+                    categories,
+                --div--;LLL:EXT:core/Resources/Private/Language/Form/locallang_tabs.xlf:notes,
+                    rowDescription,
+                --div--;LLL:EXT:core/Resources/Private/Language/Form/locallang_tabs.xlf:extended,
+            ',
+        ],
         'shortcut' => [
             'showitem' => '
                 --div--;LLL:EXT:core/Resources/Private/Language/Form/locallang_tabs.xlf:general,
@@ -1216,7 +1777,7 @@ return [
                     header;LLL:EXT:frontend/Resources/Private/Language/locallang_ttc.xlf:header.ALT.shortcut_formlabel,
                     records;LLL:EXT:frontend/Resources/Private/Language/locallang_ttc.xlf:records_formlabel,
                 --div--;LLL:EXT:frontend/Resources/Private/Language/locallang_ttc.xlf:tabs.appearance,
-                    layout;LLL:EXT:frontend/Resources/Private/Language/locallang_ttc.xlf:layout_formlabel,
+                    --palette--;LLL:EXT:frontend/Resources/Private/Language/locallang_ttc.xlf:palette.frames;frames,
                     --palette--;LLL:EXT:frontend/Resources/Private/Language/locallang_ttc.xlf:palette.appearanceLinks;appearanceLinks,
                 --div--;LLL:EXT:core/Resources/Private/Language/Form/locallang_tabs.xlf:language,
                     --palette--;;language,
@@ -1234,12 +1795,12 @@ return [
             'showitem' => '
                 --div--;LLL:EXT:core/Resources/Private/Language/Form/locallang_tabs.xlf:general,
                     --palette--;LLL:EXT:frontend/Resources/Private/Language/locallang_ttc.xlf:palette.general;general,
-                    --palette--;LLL:EXT:frontend/Resources/Private/Language/locallang_ttc.xlf:palette.header;header,
+                    --palette--;LLL:EXT:frontend/Resources/Private/Language/locallang_ttc.xlf:palette.headers;headers,
                     bodytext;LLL:EXT:frontend/Resources/Private/Language/locallang_ttc.xlf:field.table.bodytext,
                     --palette--;;tableconfiguration,
                     table_caption,
                 --div--;LLL:EXT:frontend/Resources/Private/Language/locallang_ttc.xlf:tabs.appearance,
-                    layout;LLL:EXT:frontend/Resources/Private/Language/locallang_ttc.xlf:layout_formlabel,
+                    --palette--;LLL:EXT:frontend/Resources/Private/Language/locallang_ttc.xlf:palette.frames;frames,
                     --palette--;LLL:EXT:frontend/Resources/Private/Language/locallang_ttc.xlf:palette.table_layout;tablelayout,
                     --palette--;LLL:EXT:frontend/Resources/Private/Language/locallang_ttc.xlf:palette.appearanceLinks;appearanceLinks,
                 --div--;LLL:EXT:core/Resources/Private/Language/Form/locallang_tabs.xlf:language,
@@ -1252,17 +1813,25 @@ return [
                 --div--;LLL:EXT:core/Resources/Private/Language/Form/locallang_tabs.xlf:notes,
                     rowDescription,
                 --div--;LLL:EXT:core/Resources/Private/Language/Form/locallang_tabs.xlf:extended,
-            '
+            ',
+            'columnsOverrides' => [
+                'bodytext' => [
+                    'config' => [
+                        'renderType' => 'textTable',
+                        'wrap' => 'off',
+                    ],
+                ],
+            ],
         ],
         'uploads' => [
             'showitem' => '
                 --div--;LLL:EXT:core/Resources/Private/Language/Form/locallang_tabs.xlf:general,
                     --palette--;LLL:EXT:frontend/Resources/Private/Language/locallang_ttc.xlf:palette.general;general,
-                    --palette--;LLL:EXT:frontend/Resources/Private/Language/locallang_ttc.xlf:palette.header;header,
+                    --palette--;LLL:EXT:frontend/Resources/Private/Language/locallang_ttc.xlf:palette.headers;headers,
                     --palette--;LLL:EXT:frontend/Resources/Private/Language/locallang_ttc.xlf:media;uploads,
-                --div--;LLL:EXT:frontend/Resources/Private/Language/locallang_ttc.xlf:tabs.appearance,
-                    layout;LLL:EXT:frontend/Resources/Private/Language/locallang_ttc.xlf:layout_formlabel,
                     --palette--;LLL:EXT:frontend/Resources/Private/Language/locallang_ttc.xlf:palette.uploads_layout;uploadslayout,
+                --div--;LLL:EXT:frontend/Resources/Private/Language/locallang_ttc.xlf:tabs.appearance,
+                    --palette--;LLL:EXT:frontend/Resources/Private/Language/locallang_ttc.xlf:palette.frames;frames,
                     --palette--;LLL:EXT:frontend/Resources/Private/Language/locallang_ttc.xlf:palette.appearanceLinks;appearanceLinks,
                 --div--;LLL:EXT:core/Resources/Private/Language/Form/locallang_tabs.xlf:language,
                     --palette--;;language,
@@ -1289,6 +1858,7 @@ return [
                 header;LLL:EXT:frontend/Resources/Private/Language/locallang_ttc.xlf:header_formlabel,
                 --linebreak--,
                 header_layout;LLL:EXT:frontend/Resources/Private/Language/locallang_ttc.xlf:header_layout_formlabel,
+                header_position;LLL:EXT:frontend/Resources/Private/Language/locallang_ttc.xlf:header_position_formlabel,
                 date;LLL:EXT:frontend/Resources/Private/Language/locallang_ttc.xlf:date_formlabel,
                 --linebreak--,
                 header_link;LLL:EXT:frontend/Resources/Private/Language/locallang_ttc.xlf:header_link_formlabel
@@ -1299,6 +1869,7 @@ return [
                 header;LLL:EXT:frontend/Resources/Private/Language/locallang_ttc.xlf:header_formlabel,
                 --linebreak--,
                 header_layout;LLL:EXT:frontend/Resources/Private/Language/locallang_ttc.xlf:header_layout_formlabel,
+                header_position;LLL:EXT:frontend/Resources/Private/Language/locallang_ttc.xlf:header_position_formlabel,
                 date;LLL:EXT:frontend/Resources/Private/Language/locallang_ttc.xlf:date_formlabel,
                 --linebreak--,
                 header_link;LLL:EXT:frontend/Resources/Private/Language/locallang_ttc.xlf:header_link_formlabel,
@@ -1306,6 +1877,19 @@ return [
                 subheader;LLL:EXT:frontend/Resources/Private/Language/locallang_ttc.xlf:subheader_formlabel
             ',
         ],
+        'gallerySettings' => [
+            'showitem' => '
+                imageorient;LLL:EXT:frontend/Resources/Private/Language/locallang_ttc.xlf:imageorient_formlabel,
+                imagecols;LLL:EXT:frontend/Resources/Private/Language/locallang_ttc.xlf:imagecols_formlabel
+            ',
+        ],
+        'mediaAdjustments' => [
+            'showitem' => '
+                imagewidth;LLL:EXT:frontend/Resources/Private/Language/Database.xlf:tt_content.palette.mediaAdjustments.imagewidth,
+                imageheight;LLL:EXT:frontend/Resources/Private/Language/Database.xlf:tt_content.palette.mediaAdjustments.imageheight,
+                imageborder;LLL:EXT:frontend/Resources/Private/Language/Database.xlf:tt_content.palette.mediaAdjustments.imageborder
+            ',
+        ],
         'imagelinks' => [
             'showitem' => '
                 image_zoom;LLL:EXT:frontend/Resources/Private/Language/locallang_ttc.xlf:image_zoom_formlabel
@@ -1321,13 +1905,6 @@ return [
                 target
             ',
         ],
-        'menu' => [
-            'showitem' => '
-                menu_type;LLL:EXT:frontend/Resources/Private/Language/locallang_ttc.xlf:menu_type_formlabel,
-                --linebreak--,
-                pages;LLL:EXT:frontend/Resources/Private/Language/locallang_ttc.xlf:pages.ALT.menu_formlabel
-            ',
-        ],
         'menu_accessibility' => [
             'showitem' => '
                 accessibility_title;LLL:EXT:frontend/Resources/Private/Language/locallang_ttc.xlf:menu.ALT.accessibility_title_formlabel,
@@ -1357,7 +1934,9 @@ return [
         ],
         'uploadslayout' => [
             'showitem' => '
-                filelink_size;LLL:EXT:frontend/Resources/Private/Language/locallang_ttc.xlf:filelink_size_formlabel
+                filelink_size;LLL:EXT:frontend/Resources/Private/Language/locallang_ttc.xlf:filelink_size_formlabel,
+                uploads_description,
+                uploads_type
             ',
         ],
         'appearanceLinks' => [
@@ -1366,6 +1945,14 @@ return [
                 linkToTop;LLL:EXT:frontend/Resources/Private/Language/locallang_ttc.xlf:linkToTop_formlabel
             '
         ],
+        'frames' => [
+            'showitem' => '
+                layout;LLL:EXT:frontend/Resources/Private/Language/locallang_ttc.xlf:layout_formlabel,
+                frame_class;LLL:EXT:frontend/Resources/Private/Language/locallang_ttc.xlf:frame_class_formlabel,
+                space_before_class;LLL:EXT:frontend/Resources/Private/Language/locallang_ttc.xlf:space_before_class_formlabel,
+                space_after_class;LLL:EXT:frontend/Resources/Private/Language/locallang_ttc.xlf:space_after_class_formlabel,
+            ',
+        ],
         'tableconfiguration' => [
             'showitem' => '
                 table_delimiter,
@@ -1375,6 +1962,7 @@ return [
         'tablelayout' => [
             'showitem' => '
                 cols,
+                table_class,
                 table_header_position,
                 table_tfoot
             '
diff --git a/typo3/sysext/frontend/Configuration/TSconfig/Page/Mod/Wizards/NewContentElement.txt b/typo3/sysext/frontend/Configuration/TSconfig/Page/Mod/Wizards/NewContentElement.txt
new file mode 100644
index 0000000000000000000000000000000000000000..7a03f6912b08247b9dc800418c2b8b5c06e8c328
--- /dev/null
+++ b/typo3/sysext/frontend/Configuration/TSconfig/Page/Mod/Wizards/NewContentElement.txt
@@ -0,0 +1,208 @@
+mod.wizards.newContentElement.wizardItems {
+    common.elements {
+        header {
+            iconIdentifier = content-header
+            title = LLL:EXT:backend/Resources/Private/Language/locallang_db_new_content_el.xlf:common_headerOnly_title
+            description = LLL:EXT:backend/Resources/Private/Language/locallang_db_new_content_el.xlf:common_headerOnly_description
+            tt_content_defValues {
+                CType = header
+            }
+        }
+        text {
+            iconIdentifier = content-text
+            title = LLL:EXT:backend/Resources/Private/Language/locallang_db_new_content_el.xlf:common_regularText_title
+            description = LLL:EXT:backend/Resources/Private/Language/locallang_db_new_content_el.xlf:common_regularText_description
+            tt_content_defValues {
+                CType = text
+            }
+        }
+        textpic {
+            iconIdentifier = content-textpic
+            title = LLL:EXT:backend/Resources/Private/Language/locallang_db_new_content_el.xlf:common_textImage_title
+            description = LLL:EXT:backend/Resources/Private/Language/locallang_db_new_content_el.xlf:common_textImage_description
+            tt_content_defValues {
+                CType = textpic
+            }
+        }
+        image {
+            iconIdentifier = content-image
+            title = LLL:EXT:backend/Resources/Private/Language/locallang_db_new_content_el.xlf:common_imagesOnly_title
+            description = LLL:EXT:backend/Resources/Private/Language/locallang_db_new_content_el.xlf:common_imagesOnly_description
+            tt_content_defValues {
+                CType = image
+            }
+        }
+        textmedia {
+            iconIdentifier = content-textmedia
+            title = LLL:EXT:backend/Resources/Private/Language/locallang_db_new_content_el.xlf:common_textMedia_title
+            description = LLL:EXT:backend/Resources/Private/Language/locallang_db_new_content_el.xlf:common_textMedia_description
+            tt_content_defValues {
+                CType = textmedia
+            }
+        }
+        bullets {
+            iconIdentifier = content-bullets
+            title = LLL:EXT:backend/Resources/Private/Language/locallang_db_new_content_el.xlf:common_bulletList_title
+            description = LLL:EXT:backend/Resources/Private/Language/locallang_db_new_content_el.xlf:common_bulletList_description
+            tt_content_defValues {
+                CType = bullets
+            }
+        }
+        table {
+            iconIdentifier = content-table
+            title = LLL:EXT:backend/Resources/Private/Language/locallang_db_new_content_el.xlf:common_table_title
+            description = LLL:EXT:backend/Resources/Private/Language/locallang_db_new_content_el.xlf:common_table_description
+            tt_content_defValues {
+                CType = table
+            }
+        }
+        uploads {
+            iconIdentifier = content-special-uploads
+            title = LLL:EXT:backend/Resources/Private/Language/locallang_db_new_content_el.xlf:special_filelinks_title
+            description = LLL:EXT:backend/Resources/Private/Language/locallang_db_new_content_el.xlf:special_filelinks_description
+            tt_content_defValues {
+                CType = uploads
+            }
+        }
+    }
+    common.show := addToList(header)
+    common.show := addToList(text)
+    common.show := addToList(textpic)
+    common.show := addToList(image)
+    common.show := addToList(textmedia)
+    common.show := addToList(bullets)
+    common.show := addToList(table)
+    common.show := addToList(uploads)
+
+    menu.elements {
+        menu_abstract {
+            iconIdentifier = content-menu-abstract
+            title = LLL:EXT:backend/Resources/Private/Language/locallang_db_new_content_el.xlf:menu_abstract.title
+            description = LLL:EXT:backend/Resources/Private/Language/locallang_db_new_content_el.xlf:menu_abstract.description
+            tt_content_defValues {
+                CType = menu_abstract
+            }
+        }
+        menu_categorized_content {
+            iconIdentifier = content-menu-categorized
+            title = LLL:EXT:backend/Resources/Private/Language/locallang_db_new_content_el.xlf:menu_categorized_content.title
+            description = LLL:EXT:backend/Resources/Private/Language/locallang_db_new_content_el.xlf:menu_categorized_content.description
+            tt_content_defValues {
+                CType = menu_categorized_content
+            }
+        }
+        menu_categorized_pages {
+            iconIdentifier = content-menu-categorized
+            title = LLL:EXT:backend/Resources/Private/Language/locallang_db_new_content_el.xlf:menu_categorized_pages.title
+            description = LLL:EXT:backend/Resources/Private/Language/locallang_db_new_content_el.xlf:menu_categorized_pages.description
+            tt_content_defValues {
+                CType = menu_categorized_pages
+            }
+        }
+        menu_pages {
+            iconIdentifier = content-menu-pages
+            title = LLL:EXT:backend/Resources/Private/Language/locallang_db_new_content_el.xlf:menu_pages.title
+            description = LLL:EXT:backend/Resources/Private/Language/locallang_db_new_content_el.xlf:menu_pages.description
+            tt_content_defValues {
+                CType = menu_pages
+            }
+        }
+        menu_subpages {
+            iconIdentifier = content-menu-pages
+            title = LLL:EXT:backend/Resources/Private/Language/locallang_db_new_content_el.xlf:menu_subpages.title
+            description = LLL:EXT:backend/Resources/Private/Language/locallang_db_new_content_el.xlf:menu_subpages.description
+            tt_content_defValues {
+                CType = menu_subpages
+            }
+        }
+        menu_recently_updated {
+            iconIdentifier = content-menu-recently-updated
+            title = LLL:EXT:backend/Resources/Private/Language/locallang_db_new_content_el.xlf:menu_recently_updated.title
+            description = LLL:EXT:backend/Resources/Private/Language/locallang_db_new_content_el.xlf:menu_recently_updated.description
+            tt_content_defValues {
+                CType = menu_recently_updated
+            }
+        }
+        menu_related_pages {
+            iconIdentifier = content-menu-related
+            title = LLL:EXT:backend/Resources/Private/Language/locallang_db_new_content_el.xlf:menu_related_pages.title
+            description = LLL:EXT:backend/Resources/Private/Language/locallang_db_new_content_el.xlf:menu_related_pages.description
+            tt_content_defValues {
+                CType = menu_related_pages
+            }
+        }
+        menu_section {
+            iconIdentifier = content-menu-section
+            title = LLL:EXT:backend/Resources/Private/Language/locallang_db_new_content_el.xlf:menu_section.title
+            description = LLL:EXT:backend/Resources/Private/Language/locallang_db_new_content_el.xlf:menu_section.description
+            tt_content_defValues {
+                CType = menu_section
+            }
+        }
+        menu_section_pages {
+            iconIdentifier = content-menu-section
+            title = LLL:EXT:backend/Resources/Private/Language/locallang_db_new_content_el.xlf:menu_section_pages.title
+            description = LLL:EXT:backend/Resources/Private/Language/locallang_db_new_content_el.xlf:menu_section_pages.description
+            tt_content_defValues {
+                CType = menu_section_pages
+            }
+        }
+        menu_sitemap {
+            iconIdentifier = content-menu-sitemap
+            title = LLL:EXT:backend/Resources/Private/Language/locallang_db_new_content_el.xlf:menu_sitemap.title
+            description = LLL:EXT:backend/Resources/Private/Language/locallang_db_new_content_el.xlf:menu_sitemap.description
+            tt_content_defValues {
+                CType = menu_sitemap
+            }
+        }
+        menu_sitemap_pages {
+            iconIdentifier = content-menu-sitemap-pages
+            title = LLL:EXT:backend/Resources/Private/Language/locallang_db_new_content_el.xlf:menu_sitemap_pages.title
+            description = LLL:EXT:backend/Resources/Private/Language/locallang_db_new_content_el.xlf:menu_sitemap_pages.description
+            tt_content_defValues {
+                CType = menu_sitemap_pages
+            }
+        }
+    }
+    menu.show := addToList(menu_abstract)
+    menu.show := addToList(menu_categorized_content)
+    menu.show := addToList(menu_categorized_pages)
+    menu.show := addToList(menu_pages)
+    menu.show := addToList(menu_subpages)
+    menu.show := addToList(menu_recently_updated)
+    menu.show := addToList(menu_related_pages)
+    menu.show := addToList(menu_section)
+    menu.show := addToList(menu_section_pages)
+    menu.show := addToList(menu_sitemap)
+    menu.show := addToList(menu_sitemap_pages)
+
+    special.elements {
+        html {
+            iconIdentifier = content-special-html
+            title = LLL:EXT:backend/Resources/Private/Language/locallang_db_new_content_el.xlf:special_plainHTML_title
+            description = LLL:EXT:backend/Resources/Private/Language/locallang_db_new_content_el.xlf:special_plainHTML_description
+            tt_content_defValues {
+                CType = html
+            }
+        }
+        div {
+            iconIdentifier = content-special-div
+            title = LLL:EXT:backend/Resources/Private/Language/locallang_db_new_content_el.xlf:special_divider_title
+            description = LLL:EXT:backend/Resources/Private/Language/locallang_db_new_content_el.xlf:special_divider_description
+            tt_content_defValues {
+                CType = div
+            }
+        }
+        shortcut {
+            iconIdentifier = content-special-shortcut
+            title = LLL:EXT:backend/Resources/Private/Language/locallang_db_new_content_el.xlf:special_shortcut_title
+            description = LLL:EXT:backend/Resources/Private/Language/locallang_db_new_content_el.xlf:special_shortcut_description
+            tt_content_defValues {
+                CType = shortcut
+            }
+        }
+    }
+    special.show := addToList(html)
+    special.show := addToList(div)
+    special.show := addToList(shortcut)
+}
diff --git a/typo3/sysext/frontend/Configuration/TSconfig/Page/TCEFORM.txt b/typo3/sysext/frontend/Configuration/TSconfig/Page/TCEFORM.txt
new file mode 100644
index 0000000000000000000000000000000000000000..220cac4b90eecc80f81713fb69d53ec7fc541750
--- /dev/null
+++ b/typo3/sysext/frontend/Configuration/TSconfig/Page/TCEFORM.txt
@@ -0,0 +1,9 @@
+TCEFORM.tt_content {
+    imageorient {
+        types {
+            image {
+                removeItems = 8,9,10,17,18,25,26
+            }
+        }
+    }
+}
diff --git a/typo3/sysext/frontend/Resources/Private/Language/Database.xlf b/typo3/sysext/frontend/Resources/Private/Language/Database.xlf
index d5d2bef85ace5ed9768c0cc68ac46c9c6d1a0512..a9201422151f38f4a8b1b105d3024b1eead2c555 100644
--- a/typo3/sysext/frontend/Resources/Private/Language/Database.xlf
+++ b/typo3/sysext/frontend/Resources/Private/Language/Database.xlf
@@ -3,6 +3,54 @@
 	<file t3:id="1427832976" source-language="en" datatype="plaintext" original="messages" date="2014-02-07T20:22:32Z" product-name="frontend">
 		<header/>
 		<body>
+			<trans-unit id="tt_content.asset_references">
+				<source>Media elements</source>
+			</trans-unit>
+			<trans-unit id="tt_content.asset_references.addFileReference">
+				<source>Add media file</source>
+			</trans-unit>
+			<trans-unit id="tt_content.palette.gallerySettings">
+				<source>Gallery Settings</source>
+			</trans-unit>
+			<trans-unit id="tt_content.palette.mediaAdjustments">
+				<source>Media Adjustments</source>
+			</trans-unit>
+			<trans-unit id="tt_content.palette.mediaAdjustments.imagewidth">
+				<source>Width of each element (px)</source>
+			</trans-unit>
+			<trans-unit id="tt_content.palette.mediaAdjustments.imageheight">
+				<source>Height of each element (px)</source>
+			</trans-unit>
+			<trans-unit id="tt_content.palette.mediaAdjustments.imageborder">
+				<source>Border around each element</source>
+			</trans-unit>
+			<trans-unit id="tt_content.uploads_description">
+				<source>Display description</source>
+			</trans-unit>
+			<trans-unit id="tt_content.uploads_type">
+				<source>Display file/icon/thumbnail</source>
+			</trans-unit>
+			<trans-unit id="tt_content.uploads_type.0">
+				<source>Only file name</source>
+			</trans-unit>
+			<trans-unit id="tt_content.uploads_type.1">
+				<source>File name and file extension icon</source>
+			</trans-unit>
+			<trans-unit id="tt_content.uploads_type.2">
+				<source>File name and thumbnail (if possible)</source>
+			</trans-unit>
+			<trans-unit id="tt_content.table_class">
+				<source>Table style</source>
+			</trans-unit>
+			<trans-unit id="tt_content.table_class.default">
+				<source>Default</source>
+			</trans-unit>
+			<trans-unit id="tt_content.table_class.striped">
+				<source>Striped</source>
+			</trans-unit>
+			<trans-unit id="tt_content.table_class.bordered">
+				<source>Bordered</source>
+			</trans-unit>
 			<trans-unit id="tt_content.table_caption">
 				<source>Table caption</source>
 			</trans-unit>
@@ -53,4 +101,4 @@
 			</trans-unit>
 		</body>
 	</file>
-</xliff>
\ No newline at end of file
+</xliff>
diff --git a/typo3/sysext/frontend/Resources/Private/Language/locallang_ttc.xlf b/typo3/sysext/frontend/Resources/Private/Language/locallang_ttc.xlf
index c67744f42214698ce41a6c65f865200f7e0d887b..10a6bc30baa7f0290c7ff761cfc4ae97d89f314e 100644
--- a/typo3/sysext/frontend/Resources/Private/Language/locallang_ttc.xlf
+++ b/typo3/sysext/frontend/Resources/Private/Language/locallang_ttc.xlf
@@ -57,12 +57,51 @@
 			<trans-unit id="CType.I.17">
 				<source>HTML</source>
 			</trans-unit>
+			<trans-unit id="CType.textmedia">
+				<source>Text &amp; Media</source>
+			</trans-unit>
+			<trans-unit id="CType.menu_abstract">
+				<source>Abstracts</source>
+			</trans-unit>
+			<trans-unit id="CType.menu_categorized_pages">
+				<source>Categorized pages</source>
+			</trans-unit>
+			<trans-unit id="CType.menu_categorized_content">
+				<source>Categorized content</source>
+			</trans-unit>
+			<trans-unit id="CType.menu_pages">
+				<source>Pages</source>
+			</trans-unit>
+			<trans-unit id="CType.menu_subpages">
+				<source>Subpages</source>
+			</trans-unit>
+			<trans-unit id="CType.menu_recently_updated">
+				<source>Recently updated pages</source>
+			</trans-unit>
+			<trans-unit id="CType.menu_related_pages">
+				<source>Related pages</source>
+			</trans-unit>
+			<trans-unit id="CType.menu_section">
+				<source>Section index</source>
+			</trans-unit>
+			<trans-unit id="CType.menu_section_pages">
+				<source>Section index of subpages from selected pages</source>
+			</trans-unit>
+			<trans-unit id="CType.menu_sitemap">
+				<source>Sitemap</source>
+			</trans-unit>
+			<trans-unit id="CType.menu_sitemap_pages">
+				<source>Sitemaps of selected pages</source>
+			</trans-unit>
 			<trans-unit id="CType.div.standard">
 				<source>Standard</source>
 			</trans-unit>
 			<trans-unit id="CType.div.lists">
 				<source>Lists</source>
 			</trans-unit>
+			<trans-unit id="CType.div.menu">
+				<source>Menu</source>
+			</trans-unit>
 			<trans-unit id="CType.div.forms">
 				<source>Forms</source>
 			</trans-unit>
@@ -162,6 +201,18 @@
 			<trans-unit id="header_layout.I.6">
 				<source>Hidden</source>
 			</trans-unit>
+			<trans-unit id="bullets_type">
+				<source>Type of bullets</source>
+			</trans-unit>
+			<trans-unit id="bullets_type.0">
+				<source>Unordered list (bullets)</source>
+			</trans-unit>
+			<trans-unit id="bullets_type.1">
+				<source>Ordered list (numbers)</source>
+			</trans-unit>
+			<trans-unit id="bullets_type.2">
+				<source>Definition list</source>
+			</trans-unit>
 			<trans-unit id="bodytext.W.forms">
 				<source>Forms wizard</source>
 			</trans-unit>
@@ -222,15 +273,6 @@
 			<trans-unit id="imageborder_formlabel">
 				<source>Border</source>
 			</trans-unit>
-			<trans-unit id="image_noRows">
-				<source>No Rows:</source>
-			</trans-unit>
-			<trans-unit id="image_noRows.I.0">
-				<source>Deactivate</source>
-			</trans-unit>
-			<trans-unit id="image_noRows_formlabel">
-				<source>Display as Rows</source>
-			</trans-unit>
 			<trans-unit id="image_link">
 				<source>Link:</source>
 			</trans-unit>
@@ -243,42 +285,6 @@
 			<trans-unit id="image_zoom_formlabel">
 				<source>Enlarge on Click</source>
 			</trans-unit>
-			<trans-unit id="image_effects">
-				<source>Effects:</source>
-			</trans-unit>
-			<trans-unit id="image_effects_formlabel">
-				<source>Effect</source>
-			</trans-unit>
-			<trans-unit id="image_effects.I.0">
-				<source>None</source>
-			</trans-unit>
-			<trans-unit id="image_effects.I.1">
-				<source>Rotate 90 CW</source>
-			</trans-unit>
-			<trans-unit id="image_effects.I.2">
-				<source>Rotate -90 CCW</source>
-			</trans-unit>
-			<trans-unit id="image_effects.I.3">
-				<source>Rotate 180</source>
-			</trans-unit>
-			<trans-unit id="image_effects.I.4">
-				<source>Grayscale</source>
-			</trans-unit>
-			<trans-unit id="image_effects.I.5">
-				<source>Sharpen</source>
-			</trans-unit>
-			<trans-unit id="image_effects.I.6">
-				<source>Normalize</source>
-			</trans-unit>
-			<trans-unit id="image_effects.I.7">
-				<source>Contrast</source>
-			</trans-unit>
-			<trans-unit id="image_effects.I.8">
-				<source>Brighter</source>
-			</trans-unit>
-			<trans-unit id="image_effects.I.9">
-				<source>Darker</source>
-			</trans-unit>
 			<trans-unit id="image_frames">
 				<source>Frames:</source>
 			</trans-unit>
@@ -312,51 +318,12 @@
 			<trans-unit id="image_frames.I.8">
 				<source>Frame 8</source>
 			</trans-unit>
-			<trans-unit id="image_compression">
-				<source>Image Quality/Processing:</source>
-			</trans-unit>
-			<trans-unit id="image_compression_formlabel">
-				<source>Quality and Type</source>
-			</trans-unit>
-			<trans-unit id="image_compression.I.1">
-				<source>None (ignores all other options)</source>
-			</trans-unit>
-			<trans-unit id="image_compression.I.15">
-				<source>JPG/Very High</source>
-			</trans-unit>
-			<trans-unit id="image_compression.I.16">
-				<source>JPG/High</source>
-			</trans-unit>
-			<trans-unit id="image_compression.I.17">
-				<source>JPG/Medium</source>
-			</trans-unit>
-			<trans-unit id="image_compression.I.18">
-				<source>JPG/Low</source>
-			</trans-unit>
-			<trans-unit id="image_compression.I.19">
-				<source>JPG/Very Low</source>
-			</trans-unit>
 			<trans-unit id="imagecols">
 				<source>Columns:</source>
 			</trans-unit>
 			<trans-unit id="imagecols_formlabel">
 				<source>Number of Columns</source>
 			</trans-unit>
-			<trans-unit id="imagecaption_position">
-				<source>Align:</source>
-			</trans-unit>
-			<trans-unit id="imagecaption_position_formlabel">
-				<source>Caption Alignment</source>
-			</trans-unit>
-			<trans-unit id="imagecaption_position.I.1">
-				<source>Center</source>
-			</trans-unit>
-			<trans-unit id="imagecaption_position.I.2">
-				<source>Right</source>
-			</trans-unit>
-			<trans-unit id="imagecaption_position.I.3">
-				<source>Left</source>
-			</trans-unit>
 			<trans-unit id="image_altText">
 				<source>Alternative Text:</source>
 			</trans-unit>
@@ -447,54 +414,6 @@
 			<trans-unit id="list_type_formlabel">
 				<source>Selected Plugin</source>
 			</trans-unit>
-			<trans-unit id="table_bgColor">
-				<source>Backgr. Color:</source>
-			</trans-unit>
-			<trans-unit id="table_bgColor_formlabel">
-				<source>Background color</source>
-			</trans-unit>
-			<trans-unit id="table_bgColor.I.1">
-				<source>Color 1</source>
-			</trans-unit>
-			<trans-unit id="table_bgColor.I.2">
-				<source>Color 2</source>
-			</trans-unit>
-			<trans-unit id="table_bgColor.I.3">
-				<source>None</source>
-			</trans-unit>
-			<trans-unit id="table_bgColor.I.5">
-				<source>Black</source>
-			</trans-unit>
-			<trans-unit id="table_bgColor.I.6">
-				<source>White</source>
-			</trans-unit>
-			<trans-unit id="table_bgColor.I.7">
-				<source>Dark Gray</source>
-			</trans-unit>
-			<trans-unit id="table_bgColor.I.8">
-				<source>Gray</source>
-			</trans-unit>
-			<trans-unit id="table_bgColor.I.9">
-				<source>Silver</source>
-			</trans-unit>
-			<trans-unit id="table_border">
-				<source>Border:</source>
-			</trans-unit>
-			<trans-unit id="table_border_formlabel">
-				<source>Border Size (px)</source>
-			</trans-unit>
-			<trans-unit id="table_cellspacing">
-				<source>Cellspacing:</source>
-			</trans-unit>
-			<trans-unit id="table_cellspacing_formlabel">
-				<source>Cellspacing (px)</source>
-			</trans-unit>
-			<trans-unit id="table_cellpadding">
-				<source>Cellpadding:</source>
-			</trans-unit>
-			<trans-unit id="table_cellpadding_formlabel">
-				<source>Cellpadding (px)</source>
-			</trans-unit>
 			<trans-unit id="media">
 				<source>Files</source>
 			</trans-unit>
@@ -573,35 +492,62 @@
 			<trans-unit id="spaceAfter_formlabel">
 				<source>Bottom Margin</source>
 			</trans-unit>
-			<trans-unit id="section_frame">
-				<source>Frame:</source>
+			<trans-unit id="space_before_class">
+				<source>Space Before Alass</source>
+			</trans-unit>
+			<trans-unit id="space_before_class_formlabel">
+				<source>Space Before</source>
+			</trans-unit>
+			<trans-unit id="space_after_class">
+				<source>Space After</source>
 			</trans-unit>
-			<trans-unit id="section_frame_formlabel">
-				<source>Indentation and Frames</source>
+			<trans-unit id="space_after_class_formlabel">
+				<source>Space After</source>
+			</trans-unit>
+			<trans-unit id="space_class_none">
+				<source>None</source>
 			</trans-unit>
-			<trans-unit id="section_frame.I.1">
-				<source>Invisible</source>
+			<trans-unit id="space_class_extra_small">
+				<source>Extra Small</source>
 			</trans-unit>
-			<trans-unit id="section_frame.I.2">
+			<trans-unit id="space_class_small">
+				<source>Small</source>
+			</trans-unit>
+			<trans-unit id="space_class_medium">
+				<source>Medium</source>
+			</trans-unit>
+			<trans-unit id="space_class_large">
+				<source>Large</source>
+			</trans-unit>
+			<trans-unit id="space_class_extra_large">
+				<source>Extra Large</source>
+			</trans-unit>
+			<trans-unit id="frame_class">
+				<source>Frame</source>
+			</trans-unit>
+			<trans-unit id="frame_class_formlabel">
+				<source>Frame</source>
+			</trans-unit>
+			<trans-unit id="frame_class.default">
+				<source>Default</source>
+			</trans-unit>
+			<trans-unit id="frame_class.ruler_before">
 				<source>Ruler Before</source>
 			</trans-unit>
-			<trans-unit id="section_frame.I.3">
+			<trans-unit id="frame_class.ruler_after">
 				<source>Ruler After</source>
 			</trans-unit>
-			<trans-unit id="section_frame.I.4">
+			<trans-unit id="frame_class.indent">
 				<source>Indent</source>
 			</trans-unit>
-			<trans-unit id="section_frame.I.5">
+			<trans-unit id="frame_class.indent_left">
 				<source>Indent, 33/66%</source>
 			</trans-unit>
-			<trans-unit id="section_frame.I.6">
+			<trans-unit id="frame_class.indent_right">
 				<source>Indent, 66/33%</source>
 			</trans-unit>
-			<trans-unit id="section_frame.I.7">
-				<source>Frame 1</source>
-			</trans-unit>
-			<trans-unit id="section_frame.I.8">
-				<source>Frame 2</source>
+			<trans-unit id="frame_class.none">
+				<source>No Frame</source>
 			</trans-unit>
 			<trans-unit id="splash_layout">
 				<source>Textbox Type:</source>
diff --git a/typo3/sysext/frontend/Tests/Functional/Tca/ContentVisibleFieldsTest.php b/typo3/sysext/frontend/Tests/Functional/Tca/ContentVisibleFieldsTest.php
index 0981da0168399ef975834a9939e097c9871371e5..afc5040a075904389d09ad63adf21835c5537adf 100644
--- a/typo3/sysext/frontend/Tests/Functional/Tca/ContentVisibleFieldsTest.php
+++ b/typo3/sysext/frontend/Tests/Functional/Tca/ContentVisibleFieldsTest.php
@@ -49,11 +49,8 @@ class ContentVisibleFieldsTest extends \TYPO3\Components\TestingFramework\Core\F
         'imagewidth',
         'imageheight',
         'imageborder',
-        'image_compression',
-        'image_effects',
         'imageorient',
         'imagecols',
-        'image_noRows',
     ];
 
     protected static $contentFieldsByType = [
@@ -83,15 +80,6 @@ class ContentVisibleFieldsTest extends \TYPO3\Components\TestingFramework\Core\F
                 'target',
             ],
         ],
-        'menu' => [
-            'additionalFields' => [
-                'menu_type',
-                'pages',
-                'accessibility_title',
-                'accessibility_bypass',
-                'accessibility_bypass_text',
-            ],
-        ],
         'shortcut' => [
             'additionalFields' => [
                 'header',
diff --git a/typo3/sysext/frontend/ext_localconf.php b/typo3/sysext/frontend/ext_localconf.php
index 7884f796581586537c336ee286cff07cc8071fc1..bc9824764b21f02649452f0e57091aa0aff1842e 100644
--- a/typo3/sysext/frontend/ext_localconf.php
+++ b/typo3/sysext/frontend/ext_localconf.php
@@ -45,7 +45,7 @@ $GLOBALS['TYPO3_CONF_VARS']['FE']['eID_include']['tx_cms_showpic'] = \TYPO3\CMS\
 	options.disableDelete.sys_file = 1
 ');
 
-// Registering hooks for the treelist cache
+// Registering hooks for the tree list cache
 $GLOBALS['TYPO3_CONF_VARS']['SC_OPTIONS']['t3lib/class.t3lib_tcemain.php']['processDatamapClass'][] = \TYPO3\CMS\Frontend\Hooks\TreelistCacheUpdateHooks::class;
 $GLOBALS['TYPO3_CONF_VARS']['SC_OPTIONS']['t3lib/class.t3lib_tcemain.php']['processCmdmapClass'][] = \TYPO3\CMS\Frontend\Hooks\TreelistCacheUpdateHooks::class;
 $GLOBALS['TYPO3_CONF_VARS']['SC_OPTIONS']['t3lib/class.t3lib_tcemain.php']['moveRecordClass'][] = \TYPO3\CMS\Frontend\Hooks\TreelistCacheUpdateHooks::class;
@@ -53,6 +53,16 @@ $GLOBALS['TYPO3_CONF_VARS']['SC_OPTIONS']['t3lib/class.t3lib_tcemain.php']['move
 // Register hook to show preview info
 $GLOBALS['TYPO3_CONF_VARS']['SC_OPTIONS']['tslib/class.tslib_fe.php']['hook_previewInfo']['cms'] = \TYPO3\CMS\Frontend\Hooks\FrontendHooks::class . '->hook_previewInfo';
 
+// Register for hookss to show preview of tt_content elements in page module
+$GLOBALS['TYPO3_CONF_VARS']['SC_OPTIONS']['cms/layout/class.tx_cms_layout.php']['tt_content_drawItem']['image'] =
+    \TYPO3\CMS\Frontend\Hooks\PageLayoutView\ImagePreviewRenderer::class;
+$GLOBALS['TYPO3_CONF_VARS']['SC_OPTIONS']['cms/layout/class.tx_cms_layout.php']['tt_content_drawItem']['textpic'] =
+    \TYPO3\CMS\Frontend\Hooks\PageLayoutView\TextpicPreviewRenderer::class;
+$GLOBALS['TYPO3_CONF_VARS']['SC_OPTIONS']['cms/layout/class.tx_cms_layout.php']['tt_content_drawItem']['text'] =
+    \TYPO3\CMS\Frontend\Hooks\PageLayoutView\TextPreviewRenderer::class;
+$GLOBALS['TYPO3_CONF_VARS']['SC_OPTIONS']['cms/layout/class.tx_cms_layout.php']['tt_content_drawItem']['textmedia'] =
+    \TYPO3\CMS\Frontend\Hooks\PageLayoutView\TextmediaPreviewRenderer::class;
+
 // Register search key shortcuts
 $GLOBALS['TYPO3_CONF_VARS']['SYS']['livesearch']['content'] = 'tt_content';
 
@@ -67,3 +77,12 @@ $GLOBALS['TYPO3_CONF_VARS']['SC_OPTIONS']['urlProcessing']['urlHandlers']['front
         \TYPO3\CMS\Core\Imaging\IconProvider\FontawesomeIconProvider::class,
         ['name' => 'table']
     );
+
+// Include new content elements to modWizards
+\TYPO3\CMS\Core\Utility\ExtensionManagementUtility::addPageTSConfig(
+    '<INCLUDE_TYPOSCRIPT: source="FILE:EXT:frontend/Configuration/TSconfig/Page/Mod/Wizards/NewContentElement.txt">'
+);
+// Include FormEngine adjustments
+\TYPO3\CMS\Core\Utility\ExtensionManagementUtility::addPageTSConfig(
+    '<INCLUDE_TYPOSCRIPT: source="FILE:EXT:frontend/Configuration/TSconfig/Page/TCEFORM.txt">'
+);
diff --git a/typo3/sysext/frontend/ext_tables.sql b/typo3/sysext/frontend/ext_tables.sql
index c10865ccd9cfb5f7c1ae09ac69ea0646d19da898..d0f0cd78dc2e65f60d3206ba3d8454ea87670083 100644
--- a/typo3/sysext/frontend/ext_tables.sql
+++ b/typo3/sysext/frontend/ext_tables.sql
@@ -239,19 +239,27 @@ CREATE TABLE tt_content (
 	sorting int(11) unsigned DEFAULT '0' NOT NULL,
 	CType varchar(255) DEFAULT '' NOT NULL,
 	header varchar(255) DEFAULT '' NOT NULL,
+	header_position varchar(6) DEFAULT '' NOT NULL,
 	rowDescription text,
 	bodytext mediumtext,
-
+	bullets_type tinyint(3) unsigned DEFAULT '0' NOT NULL,
+	uploads_description tinyint(1) unsigned DEFAULT '0' NOT NULL,
+	uploads_type tinyint(3) unsigned DEFAULT '0' NOT NULL,
+	assets int(11) unsigned DEFAULT '0' NOT NULL,
 	image int(11) unsigned DEFAULT '0' NOT NULL,
-
 	imagewidth mediumint(11) unsigned DEFAULT '0' NOT NULL,
 	imageorient tinyint(4) unsigned DEFAULT '0' NOT NULL,
 	imagecols tinyint(4) unsigned DEFAULT '0' NOT NULL,
 	imageborder tinyint(4) unsigned DEFAULT '0' NOT NULL,
 	media int(11) unsigned DEFAULT '0' NOT NULL,
 	layout int(11) unsigned DEFAULT '0' NOT NULL,
+	frame_class varchar(60) DEFAULT 'default' NOT NULL,
 	deleted tinyint(4) unsigned DEFAULT '0' NOT NULL,
 	cols int(11) unsigned DEFAULT '0' NOT NULL,
+	spaceBefore smallint(5) unsigned DEFAULT '0' NOT NULL,
+	spaceAfter smallint(5) unsigned DEFAULT '0' NOT NULL,
+	space_before_class varchar(60) DEFAULT '' NOT NULL,
+	space_after_class varchar(60) DEFAULT '' NOT NULL,
 	records text,
 	pages text,
 	starttime int(11) unsigned DEFAULT '0' NOT NULL,
@@ -262,7 +270,6 @@ CREATE TABLE tt_content (
 	header_link varchar(1024) DEFAULT '' NOT NULL,
 	image_zoom tinyint(3) unsigned DEFAULT '0' NOT NULL,
 	header_layout varchar(30) DEFAULT '0' NOT NULL,
-	menu_type varchar(30) DEFAULT '0' NOT NULL,
 	list_type varchar(255) DEFAULT '' NOT NULL,
 	sectionIndex tinyint(3) unsigned DEFAULT '0' NOT NULL,
 	linkToTop tinyint(3) unsigned DEFAULT '0' NOT NULL,
@@ -283,6 +290,7 @@ CREATE TABLE tt_content (
 	l10n_source int(11) DEFAULT '0' NOT NULL,
 	selected_categories text,
 	category_field varchar(64) DEFAULT '' NOT NULL,
+	table_class varchar(60) DEFAULT '' NOT NULL,
 	table_caption varchar(255) DEFAULT NULL,
 	table_delimiter smallint(6) unsigned DEFAULT '0' NOT NULL,
 	table_enclosure smallint(6) unsigned DEFAULT '0' NOT NULL,
diff --git a/typo3/sysext/frontend/ext_typoscript_setup.txt b/typo3/sysext/frontend/ext_typoscript_setup.txt
new file mode 100644
index 0000000000000000000000000000000000000000..1bd4c877edcace78fd9a28dd013c5756a0daacba
--- /dev/null
+++ b/typo3/sysext/frontend/ext_typoscript_setup.txt
@@ -0,0 +1,25 @@
+# Content selection
+styles.content.get = CONTENT
+styles.content.get {
+    table = tt_content
+    select {
+        orderBy = sorting
+        where = colPos=0
+    }
+}
+
+
+# Content element rendering
+tt_content = CASE
+tt_content {
+    key {
+        field = CType
+    }
+    default = TEXT
+    default {
+        field = CType
+        htmlSpecialChars = 1
+        wrap = <p style="background-color: yellow; padding: 0.5em 1em;"><strong>ERROR:</strong> Content Element with uid "{field:uid}" and type "|" has no rendering definition!</p>
+        wrap.insertData = 1
+    }
+}
diff --git a/typo3/sysext/install/Classes/Updates/BulletContentElementUpdate.php b/typo3/sysext/install/Classes/Updates/BulletContentElementUpdate.php
new file mode 100644
index 0000000000000000000000000000000000000000..d695be76633780ce76e46bf8ff1520ead57470c4
--- /dev/null
+++ b/typo3/sysext/install/Classes/Updates/BulletContentElementUpdate.php
@@ -0,0 +1,93 @@
+<?php
+namespace TYPO3\CMS\Install\Updates;
+
+/*
+ * This file is part of the TYPO3 CMS project.
+ *
+ * It is free software; you can redistribute it and/or modify it under
+ * the terms of the GNU General Public License, either version 2
+ * of the License, or any later version.
+ *
+ * For the full copyright and license information, please read the
+ * LICENSE.txt file that was distributed with this source code.
+ *
+ * The TYPO3 project - inspiring people to share!
+ */
+
+use TYPO3\CMS\Core\Database\ConnectionPool;
+use TYPO3\CMS\Core\Database\Query\Restriction\DeletedRestriction;
+use TYPO3\CMS\Core\Utility\GeneralUtility;
+
+/**
+ * Migrate bullet content element rendering from layout to bullets_type
+ */
+class BulletContentElementUpdate extends AbstractUpdate
+{
+    /**
+     * @var string
+     */
+    protected $title = '[Optional] Migrate bullet content element rendering selector from layout to bullets_type';
+
+    /**
+     * Checks if an update is needed
+     *
+     * @param string &$description The description for the update
+     * @return bool Whether an update is needed (TRUE) or not (FALSE)
+     */
+    public function checkForUpdate(&$description)
+    {
+        if ($this->isWizardDone()) {
+            return false;
+        }
+        $queryBuilder = GeneralUtility::makeInstance(ConnectionPool::class)->getQueryBuilderForTable('tt_content');
+        $queryBuilder->getRestrictions()->removeAll()->add(GeneralUtility::makeInstance(DeletedRestriction::class));
+        $elementCount = $queryBuilder->count('uid')
+            ->from('tt_content')
+            ->where(
+                $queryBuilder->expr()->eq('CType', $queryBuilder->createNamedParameter('bullets', \PDO::PARAM_STR)),
+                $queryBuilder->expr()->in('layout', [1, 2])
+            )
+            ->execute()->fetchColumn(0);
+        if ($elementCount) {
+            $description = 'Rendering type field has been streamlined with fluid_styled_content.';
+        }
+        return (bool)$elementCount;
+    }
+
+    /**
+     * Performs the database update
+     *
+     * @param array &$databaseQueries Queries done in this update
+     * @param mixed &$customMessages Custom messages
+     * @return bool
+     */
+    public function performUpdate(array &$databaseQueries, &$customMessages)
+    {
+        $connection = GeneralUtility::makeInstance(ConnectionPool::class)->getConnectionForTable('tt_content');
+        $queryBuilder = $connection->createQueryBuilder();
+        $queryBuilder->getRestrictions()->removeAll()->add(GeneralUtility::makeInstance(DeletedRestriction::class));
+        $statement = $queryBuilder->select('uid', 'layout')
+            ->from('tt_content')
+            ->where(
+                $queryBuilder->expr()->eq('CType', $queryBuilder->createNamedParameter('bullets', \PDO::PARAM_STR)),
+                $queryBuilder->expr()->in('layout', [1, 2])
+            )
+            ->execute();
+        while ($record = $statement->fetch()) {
+            $queryBuilder = $connection->createQueryBuilder();
+            $queryBuilder->update('tt_content')
+                ->where(
+                    $queryBuilder->expr()->eq(
+                        'uid',
+                        $queryBuilder->createNamedParameter($record['uid'], \PDO::PARAM_INT)
+                    )
+                )
+                ->set('layout', 0, false)
+                ->set('bullets_type', $record['layout']);
+            $databaseQueries[] = $queryBuilder->getSQL();
+            $queryBuilder->execute();
+        }
+        $this->markWizardAsDone();
+        return true;
+    }
+}
diff --git a/typo3/sysext/install/Classes/Updates/MigrateCscStaticTemplateUpdate.php b/typo3/sysext/install/Classes/Updates/MigrateCscStaticTemplateUpdate.php
new file mode 100644
index 0000000000000000000000000000000000000000..5f0b4db75615b9c6c315f7d3570b81ac1b8e1960
--- /dev/null
+++ b/typo3/sysext/install/Classes/Updates/MigrateCscStaticTemplateUpdate.php
@@ -0,0 +1,156 @@
+<?php
+namespace TYPO3\CMS\Install\Updates;
+
+/*
+ * This file is part of the TYPO3 CMS project.
+ *
+ * It is free software; you can redistribute it and/or modify it under
+ * the terms of the GNU General Public License, either version 2
+ * of the License, or any later version.
+ *
+ * For the full copyright and license information, please read the
+ * LICENSE.txt file that was distributed with this source code.
+ *
+ * The TYPO3 project - inspiring people to share!
+ */
+
+use TYPO3\CMS\Core\Database\ConnectionPool;
+use TYPO3\CMS\Core\Database\Query\Restriction\DeletedRestriction;
+use TYPO3\CMS\Core\Utility\GeneralUtility;
+
+/**
+ * Migrate "css_styled_content" static template location
+ */
+class MigrateCscStaticTemplateUpdate extends AbstractUpdate
+{
+    /**
+     * @var string
+     */
+    protected $title = 'Migrate "css_styled_content" static template location';
+
+    /**
+     * Checks if an update is needed
+     *
+     * @param string &$description The description for the update
+     * @return bool Whether an update is needed (TRUE) or not (FALSE)
+     */
+    public function checkForUpdate(&$description)
+    {
+        if ($this->isWizardDone()) {
+            return false;
+        }
+        $queryBuilder = GeneralUtility::makeInstance(ConnectionPool::class)->getQueryBuilderForTable('sys_template');
+        $queryBuilder->getRestrictions()->removeAll()->add(GeneralUtility::makeInstance(DeletedRestriction::class));
+        $elementCount = $queryBuilder->count('uid')
+            ->from('sys_template')
+            ->where(
+                $queryBuilder->expr()->orX(
+                    $queryBuilder->expr()->like(
+                        'constants',
+                        $queryBuilder->createNamedParameter('%EXT:css_styled_content/static%', \PDO::PARAM_STR)
+                    ),
+                    $queryBuilder->expr()->like(
+                        'constants',
+                        $queryBuilder->createNamedParameter('%EXT:css_styled_content/TypoScript/v7%', \PDO::PARAM_STR)
+                    ),
+                    $queryBuilder->expr()->like(
+                        'config',
+                        $queryBuilder->createNamedParameter('%EXT:css_styled_content/static%', \PDO::PARAM_STR)
+                    ),
+                    $queryBuilder->expr()->like(
+                        'config',
+                        $queryBuilder->createNamedParameter('%EXT:css_styled_content/TypoScript/v7%', \PDO::PARAM_STR)
+                    ),
+                    $queryBuilder->expr()->like(
+                        'include_static_file',
+                        $queryBuilder->createNamedParameter('%EXT:css_styled_content/static%', \PDO::PARAM_STR)
+                    ),
+                    $queryBuilder->expr()->like(
+                        'include_static_file',
+                        $queryBuilder->createNamedParameter('%EXT:css_styled_content/TypoScript/v7%', \PDO::PARAM_STR)
+                    )
+                )
+            )
+            ->execute()->fetchColumn(0);
+        if ($elementCount) {
+            $description = 'Static templates have been relocated to EXT:css_styled_content/Configuration/TypoScript/';
+        }
+        return (bool)$elementCount;
+    }
+
+    /**
+     * Performs the database update
+     *
+     * @param array &$databaseQueries Queries done in this update
+     * @param mixed &$customMessages Custom messages
+     * @return bool
+     */
+    public function performUpdate(array &$databaseQueries, &$customMessages)
+    {
+        $connection = GeneralUtility::makeInstance(ConnectionPool::class)->getConnectionForTable('sys_template');
+        $queryBuilder = $connection->createQueryBuilder();
+        $queryBuilder->getRestrictions()->removeAll()->add(GeneralUtility::makeInstance(DeletedRestriction::class));
+        $statement = $queryBuilder->select('uid', 'include_static_file', 'constants', 'config')
+            ->from('sys_template')
+            ->where(
+                $queryBuilder->expr()->orX(
+                    $queryBuilder->expr()->like(
+                        'constants',
+                        $queryBuilder->createNamedParameter('%EXT:css_styled_content/static%', \PDO::PARAM_STR)
+                    ),
+                    $queryBuilder->expr()->like(
+                        'constants',
+                        $queryBuilder->createNamedParameter('%EXT:css_styled_content/Configuration/TypoScript/v7%', \PDO::PARAM_STR)
+                    ),
+                    $queryBuilder->expr()->like(
+                        'config',
+                        $queryBuilder->createNamedParameter('%EXT:css_styled_content/static%', \PDO::PARAM_STR)
+                    ),
+                    $queryBuilder->expr()->like(
+                        'config',
+                        $queryBuilder->createNamedParameter('%EXT:css_styled_content/Configuration/TypoScript/v7%', \PDO::PARAM_STR)
+                    ),
+                    $queryBuilder->expr()->like(
+                        'include_static_file',
+                        $queryBuilder->createNamedParameter('%EXT:css_styled_content/static%', \PDO::PARAM_STR)
+                    ),
+                    $queryBuilder->expr()->like(
+                        'include_static_file',
+                        $queryBuilder->createNamedParameter('%EXT:css_styled_content/Configuration/TypoScript/v7%', \PDO::PARAM_STR)
+                    )
+                )
+            )
+            ->execute();
+        while ($record = $statement->fetch()) {
+            $search = [
+                'EXT:css_styled_content/static/v4.5',
+                'EXT:css_styled_content/static/v4.6',
+                'EXT:css_styled_content/static/v4.7',
+                'EXT:css_styled_content/static/v6.0',
+                'EXT:css_styled_content/static/v6.1',
+                'EXT:css_styled_content/static/v6.2',
+                'EXT:css_styled_content/static',
+                'EXT:css_styled_content/Configuration/TypoScript/v7'
+            ];
+            $replace = 'EXT:css_styled_content/Configuration/TypoScript';
+            $record['include_static_file'] = str_replace($search, $replace, $record['include_static_file']);
+            $record['constants'] = str_replace($search, $replace, $record['constants']);
+            $record['config'] = str_replace($search, $replace, $record['config']);
+            $queryBuilder = $connection->createQueryBuilder();
+            $queryBuilder->update('sys_template')
+                ->where(
+                    $queryBuilder->expr()->eq(
+                        'uid',
+                        $queryBuilder->createNamedParameter($record['uid'], \PDO::PARAM_INT)
+                    )
+                )
+                ->set('include_static_file', $record['include_static_file'])
+                ->set('constants', $record['constants'])
+                ->set('config', $record['config']);
+            $databaseQueries[] = $queryBuilder->getSQL();
+            $queryBuilder->execute();
+        }
+        $this->markWizardAsDone();
+        return true;
+    }
+}
diff --git a/typo3/sysext/install/Classes/Updates/MigrateFscStaticTemplateUpdate.php b/typo3/sysext/install/Classes/Updates/MigrateFscStaticTemplateUpdate.php
new file mode 100644
index 0000000000000000000000000000000000000000..7e68e1df3f9249b7bc72bc48f901cbe052d9ec49
--- /dev/null
+++ b/typo3/sysext/install/Classes/Updates/MigrateFscStaticTemplateUpdate.php
@@ -0,0 +1,123 @@
+<?php
+namespace TYPO3\CMS\Install\Updates;
+
+/*
+ * This file is part of the TYPO3 CMS project.
+ *
+ * It is free software; you can redistribute it and/or modify it under
+ * the terms of the GNU General Public License, either version 2
+ * of the License, or any later version.
+ *
+ * For the full copyright and license information, please read the
+ * LICENSE.txt file that was distributed with this source code.
+ *
+ * The TYPO3 project - inspiring people to share!
+ */
+
+use TYPO3\CMS\Core\Database\ConnectionPool;
+use TYPO3\CMS\Core\Database\Query\Restriction\DeletedRestriction;
+use TYPO3\CMS\Core\Utility\GeneralUtility;
+
+/**
+ * Migrate "fluid_styled_content" static template location
+ */
+class MigrateFscStaticTemplateUpdate extends AbstractUpdate
+{
+    /**
+     * @var string
+     */
+    protected $title = 'Migrate "fluid_styled_content" static template location';
+
+    /**
+     * Checks if an update is needed
+     *
+     * @param string &$description The description for the update
+     * @return bool Whether an update is needed (TRUE) or not (FALSE)
+     */
+    public function checkForUpdate(&$description)
+    {
+        if ($this->isWizardDone()) {
+            return false;
+        }
+        $queryBuilder = GeneralUtility::makeInstance(ConnectionPool::class)->getQueryBuilderForTable('sys_template');
+        $queryBuilder->getRestrictions()->removeAll()->add(GeneralUtility::makeInstance(DeletedRestriction::class));
+        $elementCount = $queryBuilder->count('uid')
+            ->from('sys_template')
+            ->where(
+                $queryBuilder->expr()->orX(
+                    $queryBuilder->expr()->like(
+                        'constants',
+                        $queryBuilder->createNamedParameter('%EXT:fluid_styled_content/Configuration/TypoScript/Static%', \PDO::PARAM_STR)
+                    ),
+                    $queryBuilder->expr()->like(
+                        'config',
+                        $queryBuilder->createNamedParameter('%EXT:fluid_styled_content/Configuration/TypoScript/Static%', \PDO::PARAM_STR)
+                    ),
+                    $queryBuilder->expr()->like(
+                        'include_static_file',
+                        $queryBuilder->createNamedParameter('%EXT:fluid_styled_content/Configuration/TypoScript/Static%', \PDO::PARAM_STR)
+                    )
+                )
+            )
+            ->execute()->fetchColumn(0);
+        if ($elementCount) {
+            $description = 'Static templates have been relocated to EXT:fluid_styled_content/Configuration/TypoScript/';
+        }
+        return (bool)$elementCount;
+    }
+
+    /**
+     * Performs the database update
+     *
+     * @param array &$databaseQueries Queries done in this update
+     * @param mixed &$customMessages Custom messages
+     * @return bool
+     */
+    public function performUpdate(array &$databaseQueries, &$customMessages)
+    {
+        $connection = GeneralUtility::makeInstance(ConnectionPool::class)->getConnectionForTable('sys_template');
+        $queryBuilder = $connection->createQueryBuilder();
+        $queryBuilder->getRestrictions()->removeAll()->add(GeneralUtility::makeInstance(DeletedRestriction::class));
+        $statement = $queryBuilder->select('uid', 'include_static_file', 'constants', 'config')
+            ->from('sys_template')
+            ->where(
+                $queryBuilder->expr()->orX(
+                    $queryBuilder->expr()->like(
+                        'constants',
+                        $queryBuilder->createNamedParameter('%EXT:fluid_styled_content/TypoScript/Static%', \PDO::PARAM_STR)
+                    ),
+                    $queryBuilder->expr()->like(
+                        'config',
+                        $queryBuilder->createNamedParameter('%EXT:fluid_styled_content/TypoScript/Static%', \PDO::PARAM_STR)
+                    ),
+                    $queryBuilder->expr()->like(
+                        'include_static_file',
+                        $queryBuilder->createNamedParameter('%EXT:fluid_styled_content/TypoScript/Static%', \PDO::PARAM_STR)
+                    )
+                )
+            )
+            ->execute();
+        while ($record = $statement->fetch()) {
+            $search = 'EXT:fluid_styled_content/TypoScript/Static';
+            $replace = 'EXT:fluid_styled_content/TypoScript';
+            $record['include_static_file'] = str_replace($search, $replace, $record['include_static_file']);
+            $record['constants'] = str_replace($search, $replace, $record['constants']);
+            $record['config'] = str_replace($search, $replace, $record['config']);
+            $queryBuilder = $connection->createQueryBuilder();
+            $queryBuilder->update('sys_template')
+                ->where(
+                    $queryBuilder->expr()->eq(
+                        'uid',
+                        $queryBuilder->createNamedParameter($record['uid'], \PDO::PARAM_INT)
+                    )
+                )
+                ->set('include_static_file', $record['include_static_file'])
+                ->set('constants', $record['constants'])
+                ->set('config', $record['config']);
+            $databaseQueries[] = $queryBuilder->getSQL();
+            $queryBuilder->execute();
+        }
+        $this->markWizardAsDone();
+        return true;
+    }
+}
diff --git a/typo3/sysext/install/Classes/Updates/SectionFrameToFrameClassUpdate.php b/typo3/sysext/install/Classes/Updates/SectionFrameToFrameClassUpdate.php
new file mode 100644
index 0000000000000000000000000000000000000000..3361f55a33a09d446a93cf862cf4832663291ef0
--- /dev/null
+++ b/typo3/sysext/install/Classes/Updates/SectionFrameToFrameClassUpdate.php
@@ -0,0 +1,116 @@
+<?php
+namespace TYPO3\CMS\Install\Updates;
+
+/*
+ * This file is part of the TYPO3 CMS project.
+ *
+ * It is free software; you can redistribute it and/or modify it under
+ * the terms of the GNU General Public License, either version 2
+ * of the License, or any later version.
+ *
+ * For the full copyright and license information, please read the
+ * LICENSE.txt file that was distributed with this source code.
+ *
+ * The TYPO3 project - inspiring people to share!
+ */
+
+use TYPO3\CMS\Core\Database\ConnectionPool;
+use TYPO3\CMS\Core\Database\Query\Restriction\DeletedRestriction;
+use TYPO3\CMS\Core\Utility\GeneralUtility;
+
+/**
+ * Migrate the field 'section_frame' for all content elements to 'frame_class'
+ */
+class SectionFrameToFrameClassUpdate extends AbstractUpdate
+{
+    /**
+     * @var string
+     */
+    protected $title = 'Migrate the field "section_frame" for all content elements to "frame_class"';
+
+    /**
+     * Checks if an update is needed
+     *
+     * @param string &$description The description for the update
+     * @return bool Whether an update is needed (TRUE) or not (FALSE)
+     */
+    public function checkForUpdate(&$description)
+    {
+        if ($this->isWizardDone()) {
+            return false;
+        }
+        $queryBuilder = GeneralUtility::makeInstance(ConnectionPool::class)->getQueryBuilderForTable('tt_content');
+        $queryBuilder->getRestrictions()->removeAll()->add(GeneralUtility::makeInstance(DeletedRestriction::class));
+        $elementCount = $queryBuilder->count('uid')
+            ->from('tt_content')
+            ->where(
+                $queryBuilder->expr()->gt('section_frame', 0)
+            )
+            ->execute()->fetchColumn(0);
+        if ($elementCount) {
+            $description = 'Section frames were used to control the wrapping of each content element in the frontend '
+                . 'output, stored as integers in the database. To get rid of a nessesary mapping of those values we '
+                . 'are now storing strings you an easily adjust that will simply passed to the rendering.';
+        }
+        return (bool)$elementCount;
+    }
+
+    /**
+     * Performs the database update
+     *
+     * @param array &$databaseQueries Queries done in this update
+     * @param mixed &$customMessages Custom messages
+     * @return bool
+     */
+    public function performUpdate(array &$databaseQueries, &$customMessages)
+    {
+        $connection = GeneralUtility::makeInstance(ConnectionPool::class)->getConnectionForTable('tt_content');
+        $queryBuilder = $connection->createQueryBuilder();
+        $queryBuilder->getRestrictions()->removeAll()->add(GeneralUtility::makeInstance(DeletedRestriction::class));
+        $statement = $queryBuilder->select('uid', 'section_frame')
+            ->from('tt_content')
+            ->where(
+                $queryBuilder->expr()->gt('section_frame', 0)
+            )
+            ->execute();
+        while ($record = $statement->fetch()) {
+            $queryBuilder = $connection->createQueryBuilder();
+            $queryBuilder->update('tt_content')
+                ->where(
+                    $queryBuilder->expr()->eq(
+                        'uid',
+                        $queryBuilder->createNamedParameter($record['uid'], \PDO::PARAM_INT)
+                    )
+                )
+                ->set('section_frame', 0, false)
+                ->set('frame_class', $this->mapSectionFrame($record['section_frame']));
+            $databaseQueries[] = $queryBuilder->getSQL();
+            $queryBuilder->execute();
+        }
+        $this->markWizardAsDone();
+        return true;
+    }
+
+    /**
+     * Map the old to the new values
+     *
+     * @param int $sectionFrame The content of the FlexForm
+     * @return string The equivalent value frame_class
+     */
+    protected function mapSectionFrame($sectionFrame)
+    {
+        $mapping = [
+            0 => 'default',
+            5 => 'ruler-before',
+            6 => 'ruler-after',
+            10 => 'indent',
+            11 => 'indent-left',
+            12 => 'indent-right',
+            66 => 'none'
+        ];
+        if (array_key_exists($sectionFrame, $mapping)) {
+            return $mapping[$sectionFrame];
+        }
+        return 'custom-' . (int) $sectionFrame;
+    }
+}
diff --git a/typo3/sysext/install/Classes/Updates/SplitMenusUpdate.php b/typo3/sysext/install/Classes/Updates/SplitMenusUpdate.php
new file mode 100644
index 0000000000000000000000000000000000000000..a415d280e4516023baebf453898983731e26d6ee
--- /dev/null
+++ b/typo3/sysext/install/Classes/Updates/SplitMenusUpdate.php
@@ -0,0 +1,122 @@
+<?php
+namespace TYPO3\CMS\Install\Updates;
+
+/*
+ * This file is part of the TYPO3 CMS project.
+ *
+ * It is free software; you can redistribute it and/or modify it under
+ * the terms of the GNU General Public License, either version 2
+ * of the License, or any later version.
+ *
+ * For the full copyright and license information, please read the
+ * LICENSE.txt file that was distributed with this source code.
+ *
+ * The TYPO3 project - inspiring people to share!
+ */
+
+use TYPO3\CMS\Core\Database\ConnectionPool;
+use TYPO3\CMS\Core\Database\Query\Restriction\DeletedRestriction;
+use TYPO3\CMS\Core\Utility\GeneralUtility;
+
+/**
+ * Split menu types into dedicated content elements
+ */
+class SplitMenusUpdate extends AbstractUpdate
+{
+    /**
+     * @var string
+     */
+    protected $title = 'Split menu types into dedicated content elements';
+
+    /**
+     * Checks if an update is needed
+     *
+     * @param string &$description The description for the update
+     * @return bool Whether an update is needed (TRUE) or not (FALSE)
+     */
+    public function checkForUpdate(&$description)
+    {
+        if ($this->isWizardDone()) {
+            return false;
+        }
+        $queryBuilder = GeneralUtility::makeInstance(ConnectionPool::class)->getQueryBuilderForTable('tt_content');
+        $queryBuilder->getRestrictions()->removeAll()->add(GeneralUtility::makeInstance(DeletedRestriction::class));
+        $elementCount = $queryBuilder->count('uid')
+            ->from('tt_content')
+            ->where(
+                $queryBuilder->expr()->eq('CType', $queryBuilder->createNamedParameter('menu', \PDO::PARAM_STR))
+            )
+            ->execute()->fetchColumn(0);
+        if ($elementCount) {
+            $description = 'Menus have been splitted into dedicated content elements to provide '
+                . 'a better maintainability and more easy to adjustable template with single '
+                . 'responsibility for the rendering.';
+        }
+        return (bool)$elementCount;
+    }
+
+    /**
+     * Performs the database update
+     *
+     * @param array &$databaseQueries Queries done in this update
+     * @param mixed &$customMessages Custom messages
+     * @return bool
+     */
+    public function performUpdate(array &$databaseQueries, &$customMessages)
+    {
+        $connection = GeneralUtility::makeInstance(ConnectionPool::class)->getConnectionForTable('tt_content');
+        $queryBuilder = $connection->createQueryBuilder();
+        $queryBuilder->getRestrictions()->removeAll()->add(GeneralUtility::makeInstance(DeletedRestriction::class));
+        $statement = $queryBuilder->select('uid', 'header', 'menu_type')
+            ->from('tt_content')
+            ->where(
+                $queryBuilder->expr()->eq(
+                    'CType',
+                    $queryBuilder->createNamedParameter('menu', \PDO::PARAM_STR)
+                )
+            )
+            ->execute();
+        while ($record = $statement->fetch()) {
+            $queryBuilder = $connection->createQueryBuilder();
+            $queryBuilder->update('tt_content')
+                ->where(
+                    $queryBuilder->expr()->eq(
+                        'uid',
+                        $queryBuilder->createNamedParameter($record['uid'], \PDO::PARAM_INT)
+                    )
+                )
+                ->set('CType', $this->mapMenuTypes($record['menu_type']));
+            $databaseQueries[] = $queryBuilder->getSQL();
+            $queryBuilder->execute();
+        }
+        $this->markWizardAsDone();
+        return true;
+    }
+
+    /**
+     * Map the old to the new values
+     *
+     * @param string $menuType The content of the FlexForm
+     * @return string The equivalent CType
+     */
+    protected function mapMenuTypes($menuType)
+    {
+        $mapping = [
+            0 => 'menu_pages',
+            1 => 'menu_subpages',
+            2 => 'menu_sitemap',
+            3 => 'menu_section',
+            4 => 'menu_abstract',
+            5 => 'menu_recently_updated',
+            6 => 'menu_related_pages',
+            7 => 'menu_section_pages',
+            8 => 'menu_sitemap_pages',
+            'categorized_pages' => 'menu_categorized_pages',
+            'categorized_content' => 'menu_categorized_content'
+        ];
+        if (array_key_exists($menuType, $mapping)) {
+            return $mapping[$menuType];
+        }
+        return 'menu_' . $menuType;
+    }
+}
diff --git a/typo3/sysext/install/Classes/Updates/TableFlexFormToTtContentFieldsUpdate.php b/typo3/sysext/install/Classes/Updates/TableFlexFormToTtContentFieldsUpdate.php
index 122c6a12f597be43013f7954952a1861df937fbb..643b22821c08d686b2a8d2bb91a8ebc62abf9cac 100644
--- a/typo3/sysext/install/Classes/Updates/TableFlexFormToTtContentFieldsUpdate.php
+++ b/typo3/sysext/install/Classes/Updates/TableFlexFormToTtContentFieldsUpdate.php
@@ -37,7 +37,7 @@ class TableFlexFormToTtContentFieldsUpdate extends AbstractUpdate
      */
     public function checkForUpdate(&$description)
     {
-        if ($this->isWizardDone() || ExtensionManagementUtility::isLoaded('css_styled_content')) {
+        if ($this->isWizardDone()) {
             return false;
         }
 
@@ -148,6 +148,12 @@ class TableFlexFormToTtContentFieldsUpdate extends AbstractUpdate
                 'fieldName' => 'acctables_tfoot',
                 'default' => 0,
                 'values' => 'passthrough'
+            ],
+            'table_class' => [
+                'sheet' => 'sDEF',
+                'fieldName' => 'acctables_tableclass',
+                'default' => 0,
+                'values' => 'passthrough'
             ]
         ];
 
diff --git a/typo3/sysext/install/Classes/Updates/UploadContentElementUpdate.php b/typo3/sysext/install/Classes/Updates/UploadContentElementUpdate.php
new file mode 100644
index 0000000000000000000000000000000000000000..134b7840c6cf4dd3b087a76002f1b305ebf67c1e
--- /dev/null
+++ b/typo3/sysext/install/Classes/Updates/UploadContentElementUpdate.php
@@ -0,0 +1,93 @@
+<?php
+namespace TYPO3\CMS\Install\Updates;
+
+/*
+ * This file is part of the TYPO3 CMS project.
+ *
+ * It is free software; you can redistribute it and/or modify it under
+ * the terms of the GNU General Public License, either version 2
+ * of the License, or any later version.
+ *
+ * For the full copyright and license information, please read the
+ * LICENSE.txt file that was distributed with this source code.
+ *
+ * The TYPO3 project - inspiring people to share!
+ */
+
+use TYPO3\CMS\Core\Database\ConnectionPool;
+use TYPO3\CMS\Core\Database\Query\Restriction\DeletedRestriction;
+use TYPO3\CMS\Core\Utility\GeneralUtility;
+
+/**
+ * Migrate upload content element rendering from layout to uploads_type
+ */
+class UploadContentElementUpdate extends AbstractUpdate
+{
+    /**
+     * @var string
+     */
+    protected $title = '[Optional] Migrate upload content element rendering from layout to uploads_type';
+
+    /**
+     * Checks if an update is needed
+     *
+     * @param string &$description The description for the update
+     * @return bool Whether an update is needed (TRUE) or not (FALSE)
+     */
+    public function checkForUpdate(&$description)
+    {
+        if ($this->isWizardDone()) {
+            return false;
+        }
+        $queryBuilder = GeneralUtility::makeInstance(ConnectionPool::class)->getQueryBuilderForTable('tt_content');
+        $queryBuilder->getRestrictions()->removeAll()->add(GeneralUtility::makeInstance(DeletedRestriction::class));
+        $elementCount = $queryBuilder->count('uid')
+            ->from('tt_content')
+            ->where(
+                $queryBuilder->expr()->eq('CType', $queryBuilder->createNamedParameter('uploads', \PDO::PARAM_STR)),
+                $queryBuilder->expr()->in('layout', [1, 2])
+            )
+            ->execute()->fetchColumn(0);
+        if ($elementCount) {
+            $description = 'Rendering type field has been streamlined with fluid_styled_content.';
+        }
+        return (bool)$elementCount;
+    }
+
+    /**
+     * Performs the database update
+     *
+     * @param array &$databaseQueries Queries done in this update
+     * @param mixed &$customMessages Custom messages
+     * @return bool
+     */
+    public function performUpdate(array &$databaseQueries, &$customMessages)
+    {
+        $connection = GeneralUtility::makeInstance(ConnectionPool::class)->getConnectionForTable('tt_content');
+        $queryBuilder = $connection->createQueryBuilder();
+        $queryBuilder->getRestrictions()->removeAll()->add(GeneralUtility::makeInstance(DeletedRestriction::class));
+        $statement = $queryBuilder->select('uid', 'layout')
+            ->from('tt_content')
+            ->where(
+                $queryBuilder->expr()->eq('CType', $queryBuilder->createNamedParameter('uploads', \PDO::PARAM_STR)),
+                $queryBuilder->expr()->in('layout', [1, 2])
+            )
+            ->execute();
+        while ($record = $statement->fetch()) {
+            $queryBuilder = $connection->createQueryBuilder();
+            $queryBuilder->update('tt_content')
+                ->where(
+                    $queryBuilder->expr()->eq(
+                        'uid',
+                        $queryBuilder->createNamedParameter($record['uid'], \PDO::PARAM_INT)
+                    )
+                )
+                ->set('layout', 0, false)
+                ->set('uploads_type', $record['layout']);
+            $databaseQueries[] = $queryBuilder->getSQL();
+            $queryBuilder->execute();
+        }
+        $this->markWizardAsDone();
+        return true;
+    }
+}
diff --git a/typo3/sysext/install/Resources/Public/Css/install.css b/typo3/sysext/install/Resources/Public/Css/install.css
index 64c97a13a096ba41db0bcc17cc0fa5b7c5a40e33..8623ba79cc3849fae92e981cd1d2a3191bac2288 100644
--- a/typo3/sysext/install/Resources/Public/Css/install.css
+++ b/typo3/sysext/install/Resources/Public/Css/install.css
@@ -318,7 +318,8 @@ th {
 :root .fa-rotate-270,
 :root .fa-flip-horizontal,
 :root .fa-flip-vertical {
-  filter: none;
+  -webkit-filter: none;
+          filter: none;
 }
 .fa-stack {
   position: relative;
diff --git a/typo3/sysext/install/ext_localconf.php b/typo3/sysext/install/ext_localconf.php
index 108ebda375d8aa7dd9903a6379c0ee1f1e3a9f66..9dcfacccbdcd45aaeddfa6e096c27e406d20cace 100644
--- a/typo3/sysext/install/ext_localconf.php
+++ b/typo3/sysext/install/ext_localconf.php
@@ -51,3 +51,15 @@ $GLOBALS['TYPO3_CONF_VARS']['SC_OPTIONS']['ext/install']['update'][\TYPO3\CMS\In
     = \TYPO3\CMS\Install\Updates\CommandLineBackendUserRemovalUpdate::class;
 $GLOBALS['TYPO3_CONF_VARS']['SC_OPTIONS']['ext/install']['update'][\TYPO3\CMS\Install\Updates\FillTranslationSourceField::class]
     = \TYPO3\CMS\Install\Updates\FillTranslationSourceField::class;
+$GLOBALS['TYPO3_CONF_VARS']['SC_OPTIONS']['ext/install']['update'][\TYPO3\CMS\Install\Updates\SectionFrameToFrameClassUpdate::class]
+    = \TYPO3\CMS\Install\Updates\SectionFrameToFrameClassUpdate::class;
+$GLOBALS['TYPO3_CONF_VARS']['SC_OPTIONS']['ext/install']['update'][\TYPO3\CMS\Install\Updates\SplitMenusUpdate::class]
+    = \TYPO3\CMS\Install\Updates\SplitMenusUpdate::class;
+$GLOBALS['TYPO3_CONF_VARS']['SC_OPTIONS']['ext/install']['update'][\TYPO3\CMS\Install\Updates\BulletContentElementUpdate::class]
+    = \TYPO3\CMS\Install\Updates\BulletContentElementUpdate::class;
+$GLOBALS['TYPO3_CONF_VARS']['SC_OPTIONS']['ext/install']['update'][\TYPO3\CMS\Install\Updates\UploadContentElementUpdate::class]
+    = \TYPO3\CMS\Install\Updates\UploadContentElementUpdate::class;
+$GLOBALS['TYPO3_CONF_VARS']['SC_OPTIONS']['ext/install']['update'][\TYPO3\CMS\Install\Updates\MigrateCscStaticTemplateUpdate::class]
+    = \TYPO3\CMS\Install\Updates\MigrateCscStaticTemplateUpdate::class;
+$GLOBALS['TYPO3_CONF_VARS']['SC_OPTIONS']['ext/install']['update'][\TYPO3\CMS\Install\Updates\MigrateFscStaticTemplateUpdate::class]
+    = \TYPO3\CMS\Install\Updates\MigrateFscStaticTemplateUpdate::class;
diff --git a/typo3/sysext/t3editor/Resources/Private/tsref.xml b/typo3/sysext/t3editor/Resources/Private/tsref.xml
index 99d2d88127e2988656cf8da68eacba1fc758a53e..417c78fc2eecedc8e349433e34a6a441bba8d6a1 100644
--- a/typo3/sysext/t3editor/Resources/Private/tsref.xml
+++ b/typo3/sysext/t3editor/Resources/Private/tsref.xml
@@ -4453,10 +4453,6 @@ If no alttext is specified, it will use an empty alttext]]></description>
 			<default><![CDATA[
 ]]></default>
 		</property>
-		<property name="captionAlign" type="stdWrap">
-			<description><![CDATA[Caption alignment]]></description>
-			<default><![CDATA[default = ".textPos"]]></default>
-		</property>
 		<property name="captionSplit" type="boolean">
 			<description><![CDATA[If this is set, the caption text is split by the character (or string) from ".token" , and every item is displayed under an image each in the image block.
 .token = (string /stdWrap) Character to split the caption elements (default is chr(10))
@@ -4499,52 +4495,7 @@ If 6 images are placed in three columns and their width's are high enough to be
 		<property name="equalH" type="stdWrap">
 			<description><![CDATA[If this value is greater than zero, it will secure that images in a row has the same height. The width will be calculated.
 If the total width of the images raise above the "maxW"-value of the table the height for each image will be scaled down equally so that the images still have the same height but is within the limits of the totalWidth.
-Please note that this value will override the properties "width", "maxH", "maxW", "minW", "minH" of the IMAGE-objects generating the images. Furthermore it will override the "noRows"-property and generate a table with no columns instead!]]></description>
-			<default><![CDATA[
-]]></default>
-		</property>
-		<property name="image_compression" type="stdWrap">
-			<description><![CDATA[Image Compression:
-0= Default
-1= Dont change! (removes all parameters for the image_object!!)
-(adds gif-extension and color-reduction command)
-10= GIF/256
-11= GIF/128
-12= GIF/64
-13= GIF/32
-14= GIF/16
-15= GIF/8
-(adds jpg-extension and quality command)
-20= IM: -quality 100
-21= IM: -quality 90 <=> Photoshop 60     (JPG/Very High)
-22= IM: -quality 80    (JPG/High)
-23= IM: -quality 70
-24= IM: -quality 60 <=> Photoshop 30   (JPG/Medium)
-25= IM: -quality 50
-26= IM: -quality 40  (JPG/Low)
-27= IM: -quality 30 <=> Photoshop 10
-28= IM: -quality 20   (JPG/Very Low)
-
-The default ImageMagick quality seems to be 75. This equals Photoshop quality 45. Images compressed with ImageMagick with the same visual quality as a Photoshop-compressed image seems to be largely 50% greater in size!!
-
-NOTE: Works ONLY if IMAGE-obj is NOT GIFBUILDER]]></description>
-			<default><![CDATA[
-]]></default>
-		</property>
-		<property name="image_effects" type="stdWrap">
-			<description><![CDATA[Adds these commands to the parameteres for the scaling. This function has no effect if "image_compression" above is set to 1!!
-
-1 => "-rotate 90",
-2 => "-rotate 270",
-3 => "-rotate 180",
-10 => "-colorspace GRAY",
-11 => "-sharpen 70",
-20 => "-normalize",
-23 => "-contrast",
-25 => "-gamma 1.3",
-26 => "-gamma 0.8"
-
-NOTE: Works ONLY if IMAGE-obj is NOT GIFBUILDER]]></description>
+Please note that this value will override the properties "width", "maxH", "maxW", "minW", "minH" of the IMAGE-objects generating the images. It will generate a table with no columns!]]></description>
 			<default><![CDATA[
 ]]></default>
 		</property>
@@ -4635,17 +4586,6 @@ This will scale images not in the right size! Takes the number of columns into a
 NOTE: Works ONLY if IMAGE-obj is NOT GIFBUILDER]]></description>
 			<default><![CDATA[50% of maxW]]></default>
 		</property>
-		<property name="noCols" type="stdWrap">
-			<description><![CDATA[If set, the columns are not made in the table. The images are all put in one row separated by a clear giffile to space them apart.
-If noRows is set, noCols will be unset. They cannot be set simultaneously.]]></description>
-			<default><![CDATA[
-]]></default>
-		</property>
-		<property name="noRows" type="stdWrap">
-			<description><![CDATA[If set, the rows are not divided by a table-rows. Thus images are more nicely shown if the height differs a lot (normally the width is the same!)]]></description>
-			<default><![CDATA[
-]]></default>
-		</property>
 		<property name="rowSpace" type="stdWrap">
 			<description><![CDATA[space between rows]]></description>
 			<default><![CDATA[
diff --git a/typo3/sysext/t3editor/Resources/Public/JavaScript/parse_typoscript/tokenizetyposcript.js b/typo3/sysext/t3editor/Resources/Public/JavaScript/parse_typoscript/tokenizetyposcript.js
index b0a6b12566c1751e70e5d46399145693a111044b..60a4f11fbe14c5afa3864304401d1907e78fb865 100644
--- a/typo3/sysext/t3editor/Resources/Public/JavaScript/parse_typoscript/tokenizetyposcript.js
+++ b/typo3/sysext/t3editor/Resources/Public/JavaScript/parse_typoscript/tokenizetyposcript.js
@@ -139,7 +139,6 @@ var typoscriptWords = {
 	'cache_period': 'reserved',
 	'caption': 'reserved',
 	'caption_stdWrap': 'reserved',
-	'captionAlign': 'reserved',
 	'captionHeader': 'reserved',
 	'captionSplit': 'reserved',
 	'CARRAY': 'keyword',
@@ -447,8 +446,6 @@ var typoscriptWords = {
 	'IFSUBRO': 'keyword3',
 	'IMAGE': 'keyword',
 	'image': 'keyword3',
-	'image_compression': 'reserved',
-	'image_effects': 'reserved',
 	'image_frames': 'reserved',
 	'imageLinkWrap': 'reserved',
 	'imagePath': 'reserved',
@@ -624,7 +621,6 @@ var typoscriptWords = {
 	'no_search': 'reserved',
 	'noAttrib': 'reserved',
 	'noCache': 'reserved',
-	'noCols': 'reserved',
 	'noCreateRecordsLink': 'reserved',
 	'noLink': 'reserved',
 	'noMatchingValue_label': 'reserved',
@@ -636,7 +632,6 @@ var typoscriptWords = {
 	'noOrderBy': 'reserved',
 	'noPageTitle': 'reserved',
 	'noResultObj': 'keyword2',
-	'noRows': 'reserved',
 	'noThumbsInEB': 'reserved',
 	'noThumbsInRTEimageSelect': 'reserved',
 	'noTrimWrap': 'reserved',