From 80fec593237b4289fab597c7194d759d30325bf6 Mon Sep 17 00:00:00 2001
From: Benjamin Kott <benjamin.kott@wfp2.com>
Date: Thu, 29 Dec 2016 18:41:51 +0100
Subject: [PATCH] [!!!][FEATURE] Streamline Fluid Styled Content and CSS Styled
 Content

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 an transition as easy as possible.
CSC is now deprecated and goes into maintenance mode and will be removed
with CMS 9.

For compatibility, CSC is now supporting Textmedia that was before
exclusive to FSC. But also FSC has learned some tricks from CSC. Fluid
Styled Content has now support for all content elements prior existing
only in CSC, this includes "Text", "Text and Images" and "Images". Also
for example "Frames", "Space before" and "Space after" are now again
featured across both content rendering methods.

Releases: master
Resolves: #79622
Resolves: #72422
Resolves: #75466
Resolves: #71570
Resolves: #71484
Change-Id: I7d2a9072baad508b6b87470b847444b91e7323fb
Reviewed-on: https://review.typo3.org/51065
Reviewed-by: Andreas Fernandez <typo3@scripting-base.de>
Tested-by: Andreas Fernandez <typo3@scripting-base.de>
Reviewed-by: Markus Klein <markus.klein@typo3.org>
Tested-by: Markus Klein <markus.klein@typo3.org>
Reviewed-by: Benni Mack <benni@typo3.org>
Tested-by: Benni Mack <benni@typo3.org>
---
 .../Public/Less/TYPO3/_element_label.less     |    7 +-
 .../Controller/Wizard/TableController.php     |    7 +-
 .../Classes/Tree/View/PagePositionMap.php     |    2 +-
 .../PageTSconfig/NewContentElementWizard.ts   |   16 -
 .../Page/Mod/Wizards/NewContentElement.ts     |   17 +
 .../User}/Options.ts                          |    0
 .../Language/locallang_db_new_content_el.xlf  |   69 +
 .../backend/Resources/Public/Css/backend.css  |   12 +-
 typo3/sysext/backend/ext_localconf.php        |    4 +-
 .../Menu/AbstractMenuViewHelper.php           |    2 +-
 .../ViewHelpers/Menu/CategoriesViewHelper.php |    2 +-
 .../ViewHelpers/Menu/DirectoryViewHelper.php  |    2 +-
 .../ViewHelpers/Menu/KeywordsViewHelper.php   |    2 +-
 .../ViewHelpers/Menu/ListViewHelper.php       |    2 +-
 .../ViewHelpers/Menu/MenuViewHelperTrait.php  |    2 +-
 .../ViewHelpers/Menu/SectionViewHelper.php    |    2 +-
 .../ViewHelpers/Menu/UpdatedViewHelper.php    |    2 +-
 .../Mod/Wizards/NewContentElementMenu.txt     |   17 +
 .../TCA/Overrides/sys_template.php            |   17 +
 .../TCA/Overrides/tt_content.php              |    5 +-
 .../TCA/Overrides/tt_content_element_menu.php |  119 ++
 .../ContentElement/CssStyledContent/setup.txt |  272 +++
 .../FluidStyledContent/setup.txt}             |   20 +-
 .../Partials/Menu/Directory.html              |   23 +
 .../Partials/Menu/Type-0.html                 |   22 +
 .../Partials/Menu/Type-1.html                 |   22 +
 .../Partials/Menu/Type-2.html                 |   23 +
 .../Partials/Menu/Type-3.html                 |   21 +
 .../Partials/Menu/Type-4.html                 |   46 +
 .../Partials/Menu/Type-5.html                 |   22 +
 .../Partials/Menu/Type-6.html                 |   22 +
 .../Partials/Menu/Type-7.html                 |   35 +
 .../Partials/Menu/Type-8.html                 |   23 +
 .../Menu/Type-categorized_content.html        |   17 +
 .../Partials/Menu/Type-categorized_pages.html |   22 +
 .../FluidStyledContent/Templates/Menu.html    |    8 +
 typo3/sysext/compatibility7/ext_localconf.php |   63 +
 typo3/sysext/compatibility7/ext_tables.sql    |    7 +
 .../Language/locallang_csh_ttcontent.xlf      |   85 +-
 .../Classes/Category/CategoryRegistry.php     |   17 +-
 .../core/Classes/Imaging/IconRegistry.php     |   48 +
 ...dContentTableContentElementAdjustments.rst |  118 +
 ...79622-DedicatedContentElementsForMenus.rst |   47 +
 ...entElementChangedForFluidStyledContent.rst |   44 +
 ...ultLayoutsForFluidStyledContentChanged.rst |   45 +
 ...ingThumbnailConfigurationForTt_content.rst |   46 +
 ...valOfFluidStyledContentMenuViewHelpers.rst |   86 +
 ...aceAfterAdjustmentsForCSSStyledContent.rst |  123 ++
 ...fCSSStyledContentAndFluidStyledContent.rst |  142 ++
 ...on-79622-DeprecationOfCSSStyledContent.rst |   38 +
 ...erPositionSupportForFluidStyledContent.rst |   82 +
 ...ewContentElementsForFluidStyledContent.rst |   31 +
 ...-NewDefaultLayoutForFluidStyledContent.rst |  151 ++
 ...eAndSpaceAfterClassForCssStyledContent.rst |   92 +
 ...ndSpaceAfterClassForFluidStyledContent.rst |   91 +
 ...22-TextmediaSupportForCSSStyledContent.rst |   28 +
 .../Controller/CssStyledContentController.php |  137 +-
 .../Classes/Hooks/TcaCacheClearing.php        |   34 -
 .../Link/ClickEnlargeViewHelper.php           |  113 +
 .../Configuration/FlexForms/table.xml         |  162 --
 .../PageTSconfig/NewContentElementWizard.ts   |  108 -
 .../Configuration/TCA/Overrides/pages.php     |   14 -
 .../TCA/Overrides/sys_template.php            |   12 +-
 .../TCA/Overrides/tt_content.php              |  774 -------
 .../TypoScript/ContentElement/Bullets.txt     |   59 +
 .../TypoScript/ContentElement/Div.txt         |   15 +
 .../TypoScript/ContentElement/Header.txt      |   25 +
 .../TypoScript/ContentElement/Html.txt        |   13 +
 .../TypoScript/ContentElement/Image.txt       |  475 ++++
 .../TypoScript/ContentElement/List.txt        |   16 +
 .../ContentElement/MenuAbstract.txt           |   38 +
 .../ContentElement/MenuCategorizedContent.txt |   23 +
 .../ContentElement/MenuCategorizedPages.txt   |   22 +
 .../TypoScript/ContentElement/MenuPages.txt   |   23 +
 .../ContentElement/MenuRecentlyUpdated.txt    |   27 +
 .../ContentElement/MenuRelatedPages.txt       |   26 +
 .../TypoScript/ContentElement/MenuSection.txt |   39 +
 .../ContentElement/MenuSectionPages.txt       |   31 +
 .../TypoScript/ContentElement/MenuSitemap.txt |   42 +
 .../ContentElement/MenuSitemapPages.txt       |   44 +
 .../ContentElement/MenuSubpages.txt           |   22 +
 .../TypoScript/ContentElement/Shortcut.txt    |   18 +
 .../TypoScript/ContentElement/Table.txt       |   23 +
 .../TypoScript/ContentElement/Text.txt        |   19 +
 .../TypoScript/ContentElement/Textmedia.txt   |  180 ++
 .../TypoScript/ContentElement/Textpic.txt     |   24 +
 .../TypoScript/ContentElement/Uploads.txt     |  137 ++
 .../ContentElementPartials/Menu.txt           |   64 +
 .../TypoScript/Helper/ParseFunc.txt           |  111 +
 .../TypoScript/Helper/StandardHeader.txt      |  172 ++
 .../TypoScript/Helper/StylesContent.txt       |   26 +
 .../TypoScript/Styling/setup.txt              |  146 ++
 .../Configuration/TypoScript/constants.txt    |  117 +
 .../Configuration/TypoScript/setup.txt        |  156 ++
 .../Configuration/TypoScript/v7/constants.txt |  116 -
 .../Configuration/TypoScript/v7/setup.txt     | 1902 -----------------
 .../Configuration/Objects/Image/Index.rst     |   89 +-
 .../Configuration/Objects/Table/Index.rst     |   69 -
 .../Resources/Private/Language/locallang.xlf  |    6 +-
 .../Private/Language/locallang_db.xlf         |   77 -
 .../Private/Language/locallang_em.xlf         |   11 -
 .../Private/Templates/Textmedia.html}         |   16 +-
 .../Tca/ContentVisibleFieldsTest.php          |   16 -
 .../css_styled_content/ext_conf_template.txt  |    2 -
 .../sysext/css_styled_content/ext_emconf.php  |    4 +-
 .../css_styled_content/ext_localconf.php      |   51 +-
 .../sysext/css_styled_content/ext_tables.sql  |   16 -
 .../css_styled_content/static/constants.txt   |  110 -
 .../css_styled_content/static/setup.txt       | 1895 ----------------
 .../Classes/Domain/Model/Extension.php        |    1 +
 .../TCA/Overrides/tt_content.php              |    2 +-
 .../Classes/Hooks/TcaCacheClearing.php        |   34 -
 .../ViewHelpers/Link/SectionViewHelper.php    |   81 -
 .../PageTSconfig/NewContentElementWizard.ts   |   87 -
 .../Configuration/TCA/Overrides/pages.php     |   14 -
 .../TCA/Overrides/sys_template.php            |   12 +-
 .../TCA/Overrides/tt_content.php              |  134 --
 .../TypoScript/ContentElement/Default.txt     |    7 -
 .../TypoScript/ContentElement/Image.txt       |   29 +
 .../ContentElement/MenuAbstract.txt           |   28 +
 .../ContentElement/MenuCategorizedContent.txt |   36 +
 .../ContentElement/MenuCategorizedPages.txt   |   33 +
 .../TypoScript/ContentElement/MenuPages.txt   |   28 +
 .../ContentElement/MenuRecentlyUpdated.txt    |   32 +
 .../ContentElement/MenuRelatedPages.txt       |   32 +
 .../TypoScript/ContentElement/MenuSection.txt |   51 +
 .../ContentElement/MenuSectionPages.txt       |   40 +
 .../TypoScript/ContentElement/MenuSitemap.txt |   29 +
 .../ContentElement/MenuSitemapPages.txt       |   29 +
 .../ContentElement/MenuSubpages.txt           |   28 +
 .../TypoScript/ContentElement/Text.txt        |   16 +
 .../TypoScript/ContentElement/Textpic.txt     |   29 +
 .../TypoScript/Helper/FluidContent.txt        |   37 +
 .../TypoScript/Helper/ParseFunc.txt           |  126 ++
 .../Static/Setup/lib.fluidContent.ts          |   41 -
 .../TypoScript/Static/Setup/lib.parseFunc.ts  |  131 --
 .../TypoScript/Static/Setup/lib.stdheader.ts  |    4 -
 .../Static/Setup/styles.content.get.ts        |    6 -
 .../TypoScript/Static/constants.txt           |   60 -
 .../Configuration/TypoScript/Static/setup.txt |   36 -
 .../TypoScript/Styling/setup.txt              |  123 +-
 .../Configuration/TypoScript/constants.txt    |   60 +
 .../Configuration/TypoScript/setup.txt        |   48 +
 .../Documentation/Configuration/Index.rst     |    2 +-
 .../{PageTsConfig => PageTs}/Index.rst        |    2 +-
 .../Configuration/TypoScript/Index.rst        |   10 +-
 .../Resources/Private/Language/Database.xlf   |   59 -
 .../Private/Language/FrontendEditing.xlf      |    6 +
 .../Private/Language/locallang_em.xlf         |   11 -
 .../Private/Layouts/ContentFooter.html        |    6 -
 .../Resources/Private/Layouts/Default.html    |   55 +
 .../Private/Layouts/HeaderContentFooter.html  |    7 -
 .../Private/Layouts/HeaderFooter.html         |    6 -
 .../Private/Partials/DropIn/After/All.html    |    2 +
 .../Private/Partials/DropIn/Before/All.html   |    2 +
 .../Resources/Private/Partials/Footer.html    |    7 -
 .../Private/Partials/Footer/All.html          |    7 +
 .../Resources/Private/Partials/Header.html    |   42 -
 .../Private/Partials/Header/All.html          |   22 +
 .../Private/Partials/Header/Date.html         |    8 +-
 .../Private/Partials/Header/Header.html       |   77 +-
 .../Private/Partials/Header/SubHeader.html    |   61 +-
 .../Private/Partials/Media/Gallery.html       |   25 +
 .../Partials/Media/Rendering/Audio.html       |    3 +
 .../Partials/Media/Rendering/Image.html       |    3 +
 .../Partials/Media/Rendering/Video.html       |    3 +
 .../Private/Partials/Media/Type.html          |   13 +
 .../Private/Partials/Media/Type/Audio.html    |   12 +
 .../Private/Partials/Media/Type/Image.html    |   28 +
 .../Private/Partials/Media/Type/Video.html    |   12 +
 .../Private/Partials/Menu/Directory.html      |   23 -
 .../Private/Partials/Menu/Type-0.html         |   22 -
 .../Private/Partials/Menu/Type-1.html         |   22 -
 .../Private/Partials/Menu/Type-2.html         |   23 -
 .../Private/Partials/Menu/Type-3.html         |   21 -
 .../Private/Partials/Menu/Type-4.html         |   46 -
 .../Private/Partials/Menu/Type-5.html         |   22 -
 .../Private/Partials/Menu/Type-6.html         |   22 -
 .../Private/Partials/Menu/Type-7.html         |   35 -
 .../Private/Partials/Menu/Type-8.html         |   23 -
 .../Menu/Type-categorized_content.html        |   17 -
 .../Partials/Menu/Type-categorized_pages.html |   22 -
 .../Private/Partials/Table/Columns.html       |    2 +-
 .../Resources/Private/Templates/Bullets.html  |    5 +-
 .../Resources/Private/Templates/Default.html  |    3 -
 .../Resources/Private/Templates/Div.html      |    8 +-
 .../Resources/Private/Templates/Header.html   |    4 +-
 .../Private/Templates/HeaderOnly.html         |    4 -
 .../Resources/Private/Templates/Html.html     |    8 +-
 .../Resources/Private/Templates/Image.html    |    8 +
 .../Resources/Private/Templates/List.html     |    9 +-
 .../Resources/Private/Templates/Menu.html     |    7 -
 .../Private/Templates/MenuAbstract.html       |   21 +
 .../Templates/MenuCategorizedContent.html     |   18 +
 .../Templates/MenuCategorizedPages.html       |   18 +
 .../Private/Templates/MenuPages.html          |   18 +
 .../Templates/MenuRecentlyUpdated.html        |   18 +
 .../Private/Templates/MenuRelatedPages.html   |   18 +
 .../Private/Templates/MenuSection.html        |   29 +
 .../Private/Templates/MenuSectionPages.html   |   29 +
 .../Private/Templates/MenuSitemap.html        |   24 +
 .../Private/Templates/MenuSitemapPages.html   |   24 +
 .../Private/Templates/MenuSubpages.html       |   18 +
 .../Resources/Private/Templates/Shortcut.html |    7 +-
 .../Resources/Private/Templates/Table.html    |   13 +-
 .../Resources/Private/Templates/Text.html     |    8 +
 .../Private/Templates/Textmedia.html          |   20 +-
 .../Resources/Private/Templates/Textpic.html  |   43 +
 .../Resources/Private/Templates/Uploads.html  |   33 +-
 .../ext_conf_template.txt                     |    2 -
 .../fluid_styled_content/ext_localconf.php    |   25 +-
 .../fluid_styled_content/ext_tables.sql       |    9 -
 .../sysext/form/Resources/Public/Css/form.css |    6 +-
 .../ContentObject/ContentObjectRenderer.php   |  115 -
 .../Classes/DataProcessing/MenuProcessor.php  |    9 +
 .../PageLayoutView/ImagePreviewRenderer.php   |    2 +-
 .../PageLayoutView/TextPreviewRenderer.php    |    2 +-
 .../TextmediaPreviewRenderer.php              |    2 +-
 .../PageLayoutView/TextpicPreviewRenderer.php |    2 +-
 .../frontend/Configuration/TCA/tt_content.php |  918 ++++++--
 .../Page/Mod/Wizards/NewContentElement.txt    |  208 ++
 .../Configuration/TSconfig/Page/TCEFORM.txt   |    9 +
 .../Resources/Private/Language/Database.xlf   |   50 +-
 .../Private/Language/locallang_ttc.xlf        |  242 +--
 .../Tca/ContentVisibleFieldsTest.php          |   12 -
 typo3/sysext/frontend/ext_localconf.php       |   21 +-
 typo3/sysext/frontend/ext_tables.sql          |   14 +-
 .../sysext/frontend/ext_typoscript_setup.txt  |   25 +
 .../Updates/BulletContentElementUpdate.php    |   93 +
 .../MigrateCscStaticTemplateUpdate.php        |  156 ++
 .../MigrateFscStaticTemplateUpdate.php        |  123 ++
 .../SectionFrameToFrameClassUpdate.php        |  116 +
 .../Classes/Updates/SplitMenusUpdate.php      |  122 ++
 .../TableFlexFormToTtContentFieldsUpdate.php  |    8 +-
 .../Updates/UploadContentElementUpdate.php    |   93 +
 .../install/Resources/Public/Css/install.css  |    3 +-
 typo3/sysext/install/ext_localconf.php        |   12 +
 .../t3editor/Resources/Private/tsref.xml      |   62 +-
 .../parse_typoscript/tokenizetyposcript.js    |    5 -
 239 files changed, 7814 insertions(+), 7499 deletions(-)
 delete mode 100644 typo3/sysext/backend/Configuration/PageTSconfig/NewContentElementWizard.ts
 create mode 100644 typo3/sysext/backend/Configuration/TSconfig/Page/Mod/Wizards/NewContentElement.ts
 rename typo3/sysext/backend/Configuration/{UserTSconfig => TSconfig/User}/Options.ts (100%)
 rename typo3/sysext/{fluid_styled_content => compatibility7}/Classes/ViewHelpers/Menu/AbstractMenuViewHelper.php (98%)
 rename typo3/sysext/{fluid_styled_content => compatibility7}/Classes/ViewHelpers/Menu/CategoriesViewHelper.php (98%)
 rename typo3/sysext/{fluid_styled_content => compatibility7}/Classes/ViewHelpers/Menu/DirectoryViewHelper.php (98%)
 rename typo3/sysext/{fluid_styled_content => compatibility7}/Classes/ViewHelpers/Menu/KeywordsViewHelper.php (99%)
 rename typo3/sysext/{fluid_styled_content => compatibility7}/Classes/ViewHelpers/Menu/ListViewHelper.php (98%)
 rename typo3/sysext/{fluid_styled_content => compatibility7}/Classes/ViewHelpers/Menu/MenuViewHelperTrait.php (98%)
 rename typo3/sysext/{fluid_styled_content => compatibility7}/Classes/ViewHelpers/Menu/SectionViewHelper.php (98%)
 rename typo3/sysext/{fluid_styled_content => compatibility7}/Classes/ViewHelpers/Menu/UpdatedViewHelper.php (98%)
 create mode 100644 typo3/sysext/compatibility7/Configuration/PageTS/Mod/Wizards/NewContentElementMenu.txt
 create mode 100644 typo3/sysext/compatibility7/Configuration/TCA/Overrides/sys_template.php
 create mode 100644 typo3/sysext/compatibility7/Configuration/TCA/Overrides/tt_content_element_menu.php
 create mode 100644 typo3/sysext/compatibility7/Configuration/TypoScript/ContentElement/CssStyledContent/setup.txt
 rename typo3/sysext/{fluid_styled_content/Configuration/TypoScript/ContentElement/Menu.txt => compatibility7/Configuration/TypoScript/ContentElement/FluidStyledContent/setup.txt} (65%)
 create mode 100644 typo3/sysext/compatibility7/Resources/Private/FluidStyledContent/Partials/Menu/Directory.html
 create mode 100644 typo3/sysext/compatibility7/Resources/Private/FluidStyledContent/Partials/Menu/Type-0.html
 create mode 100644 typo3/sysext/compatibility7/Resources/Private/FluidStyledContent/Partials/Menu/Type-1.html
 create mode 100644 typo3/sysext/compatibility7/Resources/Private/FluidStyledContent/Partials/Menu/Type-2.html
 create mode 100644 typo3/sysext/compatibility7/Resources/Private/FluidStyledContent/Partials/Menu/Type-3.html
 create mode 100644 typo3/sysext/compatibility7/Resources/Private/FluidStyledContent/Partials/Menu/Type-4.html
 create mode 100644 typo3/sysext/compatibility7/Resources/Private/FluidStyledContent/Partials/Menu/Type-5.html
 create mode 100644 typo3/sysext/compatibility7/Resources/Private/FluidStyledContent/Partials/Menu/Type-6.html
 create mode 100644 typo3/sysext/compatibility7/Resources/Private/FluidStyledContent/Partials/Menu/Type-7.html
 create mode 100644 typo3/sysext/compatibility7/Resources/Private/FluidStyledContent/Partials/Menu/Type-8.html
 create mode 100644 typo3/sysext/compatibility7/Resources/Private/FluidStyledContent/Partials/Menu/Type-categorized_content.html
 create mode 100644 typo3/sysext/compatibility7/Resources/Private/FluidStyledContent/Partials/Menu/Type-categorized_pages.html
 create mode 100644 typo3/sysext/compatibility7/Resources/Private/FluidStyledContent/Templates/Menu.html
 create mode 100644 typo3/sysext/core/Documentation/Changelog/master/Breaking-79622-CSSStyledContentTableContentElementAdjustments.rst
 create mode 100644 typo3/sysext/core/Documentation/Changelog/master/Breaking-79622-DedicatedContentElementsForMenus.rst
 create mode 100644 typo3/sysext/core/Documentation/Changelog/master/Breaking-79622-DefaultContentElementChangedForFluidStyledContent.rst
 create mode 100644 typo3/sysext/core/Documentation/Changelog/master/Breaking-79622-DefaultLayoutsForFluidStyledContentChanged.rst
 create mode 100644 typo3/sysext/core/Documentation/Changelog/master/Breaking-79622-DroppingThumbnailConfigurationForTt_content.rst
 create mode 100644 typo3/sysext/core/Documentation/Changelog/master/Breaking-79622-RemovalOfFluidStyledContentMenuViewHelpers.rst
 create mode 100644 typo3/sysext/core/Documentation/Changelog/master/Breaking-79622-SpaceBeforeAndSpaceAfterAdjustmentsForCSSStyledContent.rst
 create mode 100644 typo3/sysext/core/Documentation/Changelog/master/Breaking-79622-StreamliningStructureOfCSSStyledContentAndFluidStyledContent.rst
 create mode 100644 typo3/sysext/core/Documentation/Changelog/master/Deprecation-79622-DeprecationOfCSSStyledContent.rst
 create mode 100644 typo3/sysext/core/Documentation/Changelog/master/Feature-79622-HeaderPositionSupportForFluidStyledContent.rst
 create mode 100644 typo3/sysext/core/Documentation/Changelog/master/Feature-79622-NewContentElementsForFluidStyledContent.rst
 create mode 100644 typo3/sysext/core/Documentation/Changelog/master/Feature-79622-NewDefaultLayoutForFluidStyledContent.rst
 create mode 100644 typo3/sysext/core/Documentation/Changelog/master/Feature-79622-SpaceBeforeAndSpaceAfterClassForCssStyledContent.rst
 create mode 100644 typo3/sysext/core/Documentation/Changelog/master/Feature-79622-SpaceBeforeAndSpaceAfterClassForFluidStyledContent.rst
 create mode 100644 typo3/sysext/core/Documentation/Changelog/master/Feature-79622-TextmediaSupportForCSSStyledContent.rst
 delete mode 100644 typo3/sysext/css_styled_content/Classes/Hooks/TcaCacheClearing.php
 create mode 100644 typo3/sysext/css_styled_content/Classes/ViewHelpers/Link/ClickEnlargeViewHelper.php
 delete mode 100644 typo3/sysext/css_styled_content/Configuration/FlexForms/table.xml
 delete mode 100644 typo3/sysext/css_styled_content/Configuration/PageTSconfig/NewContentElementWizard.ts
 delete mode 100644 typo3/sysext/css_styled_content/Configuration/TCA/Overrides/pages.php
 delete mode 100644 typo3/sysext/css_styled_content/Configuration/TCA/Overrides/tt_content.php
 create mode 100644 typo3/sysext/css_styled_content/Configuration/TypoScript/ContentElement/Bullets.txt
 create mode 100644 typo3/sysext/css_styled_content/Configuration/TypoScript/ContentElement/Div.txt
 create mode 100644 typo3/sysext/css_styled_content/Configuration/TypoScript/ContentElement/Header.txt
 create mode 100644 typo3/sysext/css_styled_content/Configuration/TypoScript/ContentElement/Html.txt
 create mode 100644 typo3/sysext/css_styled_content/Configuration/TypoScript/ContentElement/Image.txt
 create mode 100644 typo3/sysext/css_styled_content/Configuration/TypoScript/ContentElement/List.txt
 create mode 100644 typo3/sysext/css_styled_content/Configuration/TypoScript/ContentElement/MenuAbstract.txt
 create mode 100644 typo3/sysext/css_styled_content/Configuration/TypoScript/ContentElement/MenuCategorizedContent.txt
 create mode 100644 typo3/sysext/css_styled_content/Configuration/TypoScript/ContentElement/MenuCategorizedPages.txt
 create mode 100644 typo3/sysext/css_styled_content/Configuration/TypoScript/ContentElement/MenuPages.txt
 create mode 100644 typo3/sysext/css_styled_content/Configuration/TypoScript/ContentElement/MenuRecentlyUpdated.txt
 create mode 100644 typo3/sysext/css_styled_content/Configuration/TypoScript/ContentElement/MenuRelatedPages.txt
 create mode 100644 typo3/sysext/css_styled_content/Configuration/TypoScript/ContentElement/MenuSection.txt
 create mode 100644 typo3/sysext/css_styled_content/Configuration/TypoScript/ContentElement/MenuSectionPages.txt
 create mode 100644 typo3/sysext/css_styled_content/Configuration/TypoScript/ContentElement/MenuSitemap.txt
 create mode 100644 typo3/sysext/css_styled_content/Configuration/TypoScript/ContentElement/MenuSitemapPages.txt
 create mode 100644 typo3/sysext/css_styled_content/Configuration/TypoScript/ContentElement/MenuSubpages.txt
 create mode 100644 typo3/sysext/css_styled_content/Configuration/TypoScript/ContentElement/Shortcut.txt
 create mode 100644 typo3/sysext/css_styled_content/Configuration/TypoScript/ContentElement/Table.txt
 create mode 100644 typo3/sysext/css_styled_content/Configuration/TypoScript/ContentElement/Text.txt
 create mode 100644 typo3/sysext/css_styled_content/Configuration/TypoScript/ContentElement/Textmedia.txt
 create mode 100644 typo3/sysext/css_styled_content/Configuration/TypoScript/ContentElement/Textpic.txt
 create mode 100644 typo3/sysext/css_styled_content/Configuration/TypoScript/ContentElement/Uploads.txt
 create mode 100644 typo3/sysext/css_styled_content/Configuration/TypoScript/ContentElementPartials/Menu.txt
 create mode 100644 typo3/sysext/css_styled_content/Configuration/TypoScript/Helper/ParseFunc.txt
 create mode 100644 typo3/sysext/css_styled_content/Configuration/TypoScript/Helper/StandardHeader.txt
 create mode 100644 typo3/sysext/css_styled_content/Configuration/TypoScript/Helper/StylesContent.txt
 create mode 100644 typo3/sysext/css_styled_content/Configuration/TypoScript/Styling/setup.txt
 create mode 100644 typo3/sysext/css_styled_content/Configuration/TypoScript/constants.txt
 create mode 100644 typo3/sysext/css_styled_content/Configuration/TypoScript/setup.txt
 delete mode 100644 typo3/sysext/css_styled_content/Configuration/TypoScript/v7/constants.txt
 delete mode 100644 typo3/sysext/css_styled_content/Configuration/TypoScript/v7/setup.txt
 delete mode 100644 typo3/sysext/css_styled_content/Resources/Private/Language/locallang_db.xlf
 delete mode 100644 typo3/sysext/css_styled_content/Resources/Private/Language/locallang_em.xlf
 rename typo3/sysext/{fluid_styled_content/Resources/Private/Partials/MediaGallery.html => css_styled_content/Resources/Private/Templates/Textmedia.html} (80%)
 delete mode 100644 typo3/sysext/css_styled_content/ext_conf_template.txt
 delete mode 100644 typo3/sysext/css_styled_content/ext_tables.sql
 delete mode 100644 typo3/sysext/css_styled_content/static/constants.txt
 delete mode 100644 typo3/sysext/css_styled_content/static/setup.txt
 delete mode 100644 typo3/sysext/fluid_styled_content/Classes/Hooks/TcaCacheClearing.php
 delete mode 100644 typo3/sysext/fluid_styled_content/Classes/ViewHelpers/Link/SectionViewHelper.php
 delete mode 100644 typo3/sysext/fluid_styled_content/Configuration/PageTSconfig/NewContentElementWizard.ts
 delete mode 100644 typo3/sysext/fluid_styled_content/Configuration/TCA/Overrides/pages.php
 delete mode 100644 typo3/sysext/fluid_styled_content/Configuration/TCA/Overrides/tt_content.php
 delete mode 100644 typo3/sysext/fluid_styled_content/Configuration/TypoScript/ContentElement/Default.txt
 create mode 100644 typo3/sysext/fluid_styled_content/Configuration/TypoScript/ContentElement/Image.txt
 create mode 100644 typo3/sysext/fluid_styled_content/Configuration/TypoScript/ContentElement/MenuAbstract.txt
 create mode 100644 typo3/sysext/fluid_styled_content/Configuration/TypoScript/ContentElement/MenuCategorizedContent.txt
 create mode 100644 typo3/sysext/fluid_styled_content/Configuration/TypoScript/ContentElement/MenuCategorizedPages.txt
 create mode 100644 typo3/sysext/fluid_styled_content/Configuration/TypoScript/ContentElement/MenuPages.txt
 create mode 100644 typo3/sysext/fluid_styled_content/Configuration/TypoScript/ContentElement/MenuRecentlyUpdated.txt
 create mode 100644 typo3/sysext/fluid_styled_content/Configuration/TypoScript/ContentElement/MenuRelatedPages.txt
 create mode 100644 typo3/sysext/fluid_styled_content/Configuration/TypoScript/ContentElement/MenuSection.txt
 create mode 100644 typo3/sysext/fluid_styled_content/Configuration/TypoScript/ContentElement/MenuSectionPages.txt
 create mode 100644 typo3/sysext/fluid_styled_content/Configuration/TypoScript/ContentElement/MenuSitemap.txt
 create mode 100644 typo3/sysext/fluid_styled_content/Configuration/TypoScript/ContentElement/MenuSitemapPages.txt
 create mode 100644 typo3/sysext/fluid_styled_content/Configuration/TypoScript/ContentElement/MenuSubpages.txt
 create mode 100644 typo3/sysext/fluid_styled_content/Configuration/TypoScript/ContentElement/Text.txt
 create mode 100644 typo3/sysext/fluid_styled_content/Configuration/TypoScript/ContentElement/Textpic.txt
 create mode 100644 typo3/sysext/fluid_styled_content/Configuration/TypoScript/Helper/FluidContent.txt
 create mode 100644 typo3/sysext/fluid_styled_content/Configuration/TypoScript/Helper/ParseFunc.txt
 delete mode 100644 typo3/sysext/fluid_styled_content/Configuration/TypoScript/Static/Setup/lib.fluidContent.ts
 delete mode 100644 typo3/sysext/fluid_styled_content/Configuration/TypoScript/Static/Setup/lib.parseFunc.ts
 delete mode 100644 typo3/sysext/fluid_styled_content/Configuration/TypoScript/Static/Setup/lib.stdheader.ts
 delete mode 100644 typo3/sysext/fluid_styled_content/Configuration/TypoScript/Static/Setup/styles.content.get.ts
 delete mode 100644 typo3/sysext/fluid_styled_content/Configuration/TypoScript/Static/constants.txt
 delete mode 100644 typo3/sysext/fluid_styled_content/Configuration/TypoScript/Static/setup.txt
 create mode 100644 typo3/sysext/fluid_styled_content/Configuration/TypoScript/constants.txt
 create mode 100644 typo3/sysext/fluid_styled_content/Configuration/TypoScript/setup.txt
 rename typo3/sysext/fluid_styled_content/Documentation/Configuration/{PageTsConfig => PageTs}/Index.rst (67%)
 delete mode 100644 typo3/sysext/fluid_styled_content/Resources/Private/Language/Database.xlf
 delete mode 100644 typo3/sysext/fluid_styled_content/Resources/Private/Language/locallang_em.xlf
 delete mode 100644 typo3/sysext/fluid_styled_content/Resources/Private/Layouts/ContentFooter.html
 create mode 100644 typo3/sysext/fluid_styled_content/Resources/Private/Layouts/Default.html
 delete mode 100644 typo3/sysext/fluid_styled_content/Resources/Private/Layouts/HeaderContentFooter.html
 delete mode 100644 typo3/sysext/fluid_styled_content/Resources/Private/Layouts/HeaderFooter.html
 create mode 100644 typo3/sysext/fluid_styled_content/Resources/Private/Partials/DropIn/After/All.html
 create mode 100644 typo3/sysext/fluid_styled_content/Resources/Private/Partials/DropIn/Before/All.html
 delete mode 100644 typo3/sysext/fluid_styled_content/Resources/Private/Partials/Footer.html
 create mode 100644 typo3/sysext/fluid_styled_content/Resources/Private/Partials/Footer/All.html
 delete mode 100644 typo3/sysext/fluid_styled_content/Resources/Private/Partials/Header.html
 create mode 100644 typo3/sysext/fluid_styled_content/Resources/Private/Partials/Header/All.html
 create mode 100644 typo3/sysext/fluid_styled_content/Resources/Private/Partials/Media/Gallery.html
 create mode 100644 typo3/sysext/fluid_styled_content/Resources/Private/Partials/Media/Rendering/Audio.html
 create mode 100644 typo3/sysext/fluid_styled_content/Resources/Private/Partials/Media/Rendering/Image.html
 create mode 100644 typo3/sysext/fluid_styled_content/Resources/Private/Partials/Media/Rendering/Video.html
 create mode 100644 typo3/sysext/fluid_styled_content/Resources/Private/Partials/Media/Type.html
 create mode 100644 typo3/sysext/fluid_styled_content/Resources/Private/Partials/Media/Type/Audio.html
 create mode 100644 typo3/sysext/fluid_styled_content/Resources/Private/Partials/Media/Type/Image.html
 create mode 100644 typo3/sysext/fluid_styled_content/Resources/Private/Partials/Media/Type/Video.html
 delete mode 100644 typo3/sysext/fluid_styled_content/Resources/Private/Partials/Menu/Directory.html
 delete mode 100644 typo3/sysext/fluid_styled_content/Resources/Private/Partials/Menu/Type-0.html
 delete mode 100644 typo3/sysext/fluid_styled_content/Resources/Private/Partials/Menu/Type-1.html
 delete mode 100644 typo3/sysext/fluid_styled_content/Resources/Private/Partials/Menu/Type-2.html
 delete mode 100644 typo3/sysext/fluid_styled_content/Resources/Private/Partials/Menu/Type-3.html
 delete mode 100644 typo3/sysext/fluid_styled_content/Resources/Private/Partials/Menu/Type-4.html
 delete mode 100644 typo3/sysext/fluid_styled_content/Resources/Private/Partials/Menu/Type-5.html
 delete mode 100644 typo3/sysext/fluid_styled_content/Resources/Private/Partials/Menu/Type-6.html
 delete mode 100644 typo3/sysext/fluid_styled_content/Resources/Private/Partials/Menu/Type-7.html
 delete mode 100644 typo3/sysext/fluid_styled_content/Resources/Private/Partials/Menu/Type-8.html
 delete mode 100644 typo3/sysext/fluid_styled_content/Resources/Private/Partials/Menu/Type-categorized_content.html
 delete mode 100644 typo3/sysext/fluid_styled_content/Resources/Private/Partials/Menu/Type-categorized_pages.html
 delete mode 100644 typo3/sysext/fluid_styled_content/Resources/Private/Templates/Default.html
 delete mode 100644 typo3/sysext/fluid_styled_content/Resources/Private/Templates/HeaderOnly.html
 create mode 100644 typo3/sysext/fluid_styled_content/Resources/Private/Templates/Image.html
 delete mode 100644 typo3/sysext/fluid_styled_content/Resources/Private/Templates/Menu.html
 create mode 100644 typo3/sysext/fluid_styled_content/Resources/Private/Templates/MenuAbstract.html
 create mode 100644 typo3/sysext/fluid_styled_content/Resources/Private/Templates/MenuCategorizedContent.html
 create mode 100644 typo3/sysext/fluid_styled_content/Resources/Private/Templates/MenuCategorizedPages.html
 create mode 100644 typo3/sysext/fluid_styled_content/Resources/Private/Templates/MenuPages.html
 create mode 100644 typo3/sysext/fluid_styled_content/Resources/Private/Templates/MenuRecentlyUpdated.html
 create mode 100644 typo3/sysext/fluid_styled_content/Resources/Private/Templates/MenuRelatedPages.html
 create mode 100644 typo3/sysext/fluid_styled_content/Resources/Private/Templates/MenuSection.html
 create mode 100644 typo3/sysext/fluid_styled_content/Resources/Private/Templates/MenuSectionPages.html
 create mode 100644 typo3/sysext/fluid_styled_content/Resources/Private/Templates/MenuSitemap.html
 create mode 100644 typo3/sysext/fluid_styled_content/Resources/Private/Templates/MenuSitemapPages.html
 create mode 100644 typo3/sysext/fluid_styled_content/Resources/Private/Templates/MenuSubpages.html
 create mode 100644 typo3/sysext/fluid_styled_content/Resources/Private/Templates/Text.html
 create mode 100644 typo3/sysext/fluid_styled_content/Resources/Private/Templates/Textpic.html
 delete mode 100644 typo3/sysext/fluid_styled_content/ext_conf_template.txt
 delete mode 100644 typo3/sysext/fluid_styled_content/ext_tables.sql
 rename typo3/sysext/{css_styled_content => frontend}/Classes/Hooks/PageLayoutView/ImagePreviewRenderer.php (97%)
 rename typo3/sysext/{css_styled_content => frontend}/Classes/Hooks/PageLayoutView/TextPreviewRenderer.php (96%)
 rename typo3/sysext/{fluid_styled_content/Classes/Hooks => frontend/Classes/Hooks/PageLayoutView}/TextmediaPreviewRenderer.php (97%)
 rename typo3/sysext/{css_styled_content => frontend}/Classes/Hooks/PageLayoutView/TextpicPreviewRenderer.php (97%)
 create mode 100644 typo3/sysext/frontend/Configuration/TSconfig/Page/Mod/Wizards/NewContentElement.txt
 create mode 100644 typo3/sysext/frontend/Configuration/TSconfig/Page/TCEFORM.txt
 create mode 100644 typo3/sysext/frontend/ext_typoscript_setup.txt
 create mode 100644 typo3/sysext/install/Classes/Updates/BulletContentElementUpdate.php
 create mode 100644 typo3/sysext/install/Classes/Updates/MigrateCscStaticTemplateUpdate.php
 create mode 100644 typo3/sysext/install/Classes/Updates/MigrateFscStaticTemplateUpdate.php
 create mode 100644 typo3/sysext/install/Classes/Updates/SectionFrameToFrameClassUpdate.php
 create mode 100644 typo3/sysext/install/Classes/Updates/SplitMenusUpdate.php
 create mode 100644 typo3/sysext/install/Classes/Updates/UploadContentElementUpdate.php

diff --git a/Build/Resources/Public/Less/TYPO3/_element_label.less b/Build/Resources/Public/Less/TYPO3/_element_label.less
index 27785bcaf43a..60b4260d4468 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 a096fc1a5fe0..ba7289eb5946 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 35e601d403df..760bbcb20d4d 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 b0ddf1c9c80f..000000000000
--- 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 000000000000..ddc975701ab9
--- /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 f1e74898f60a..2a434a66abfe 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 9e43e99d381e..782f3f054f5c 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 a10532d6c4df..52191c95cec7 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 5a50de01c53c..f6414373e5ed 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 e3c3e67b0024..8155be0b0d93 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 be0eaa89557b..e79a23897c0d 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 19c2f243c96b..43d71abfd8a8 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 3f5282999290..f52eb57d495e 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 5f9675ba5065..da1566e02b71 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 cff7ae6fadab..e5de6da178b7 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 95471a19144f..9a590d54d74d 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 000000000000..08430a55b129
--- /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 000000000000..57adc0cf0e8d
--- /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 2bd8202242c1..12788252aa51 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 000000000000..149cc6d61591
--- /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 000000000000..8e39fea03db6
--- /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 b94341012db9..d93104552099 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 000000000000..51e3161a33dc
--- /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 000000000000..3e8dc5190b18
--- /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 000000000000..f883e65ce061
--- /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 000000000000..d3e8b36ea136
--- /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 000000000000..b66300ed12b9
--- /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 000000000000..59bbfab35497
--- /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 000000000000..a29ba7a82186
--- /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 000000000000..75d653933c62
--- /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 000000000000..5889158c0582
--- /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 000000000000..f0c7866e4b91
--- /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 000000000000..7a46008afd2d
--- /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 000000000000..eb6406a8ee35
--- /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 000000000000..42fdfc6be5c0
--- /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 0f123a44a7c0..399e9cd7500c 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 7f092c256101..a7c9f82890be 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 eb560f375055..61b9f79e8dfd 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 31a9a86c55da..22cdd600134b 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 1ce2ed295eef..f44dc65db461 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 000000000000..570b99d768f1
--- /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 000000000000..dffc68e4a477
--- /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 000000000000..18f727cca110
--- /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 000000000000..280e2d2c08fe
--- /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 000000000000..ec1d81aa2e48
--- /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 000000000000..71304c28ca77
--- /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 000000000000..3b444a75fb04
--- /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 000000000000..1ddf24ae6eeb
--- /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 000000000000..c8e7b5029a79
--- /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 000000000000..45811f04f1fa
--- /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 000000000000..e3fbbf7d2b86
--- /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 000000000000..ca8f4e9e1c97
--- /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 000000000000..c4dd1daab8c6
--- /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 000000000000..a00e57c9779b
--- /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 000000000000..c2238c0a28c3
--- /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 5bb8dfcf9154..8ab3fa2c3024 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 b7ea4c28da5c..000000000000
--- 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 000000000000..6baa6147dc92
--- /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 5b249beca475..000000000000
--- 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 63fafc01ed6d..000000000000
--- 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 08bfb6848d53..000000000000
--- 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 c69c94596eed..36cc3bab22a7 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 6f15b7bcfc9f..000000000000
--- 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 000000000000..eec2e0f33cf6
--- /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 000000000000..465b36ca8ef8
--- /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 000000000000..f574e2d082c1
--- /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 000000000000..26d096d8c90e
--- /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 000000000000..38dc4dde7588
--- /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 000000000000..ee2fb04f56cf
--- /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 000000000000..a2187f26a24b
--- /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 000000000000..3b2dbbb3fbd8
--- /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 000000000000..5ffb2f1dfe1b
--- /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 000000000000..8acbaf88d85e
--- /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 000000000000..b4776dc2346a
--- /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 000000000000..99c36aabf9d3
--- /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 000000000000..25de6e4f842d
--- /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 000000000000..9f657ac32367
--- /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 000000000000..7b544ddbdc7c
--- /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 000000000000..59e14d396c49
--- /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 000000000000..d9a519f9f451
--- /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 000000000000..4d162da82cad
--- /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 000000000000..9dadb3515b7e
--- /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 000000000000..f7717fc8fc26
--- /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 000000000000..597747b40507
--- /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 000000000000..ca2d648be025
--- /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 000000000000..2885ea612c4b
--- /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 000000000000..482406d1df80
--- /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 000000000000..166404317242
--- /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 000000000000..cf7f8293e58e
--- /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 000000000000..5d79eab27dd0
--- /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 000000000000..f327ad742524
--- /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 000000000000..0456dbd92893
--- /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 000000000000..6e59bf14db51
--- /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 ff5c5afad8bf..000000000000
--- 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 0a5ed3d97c42..000000000000
--- 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 b97970e17bc2..2d15fc0d2744 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 84ed36936d35..d523946f703e 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 8be2563bfbb1..d353c8f5e1ff 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 4e32fda5b304..000000000000
--- 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 d2bf9f61041d..000000000000
--- 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 02270c3af2fd..b9009bdb1696 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 755c5ed2abc9..370dc3a5d37f 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 f4f63319c1f6..000000000000
--- 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 21bdc670bd8d..6329220d90bb 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 e95e795be55f..ce27a2028f1d 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 5ba438b35522..000000000000
--- 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 4cde88c30ba0..000000000000
--- 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 3fd604b36bc7..000000000000
--- 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 7606e2b1389f..21bb5833c2e8 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 823ed44bef0b..1070a25b94fd 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 38aaeffea153..000000000000
--- 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 20bce37ec3ea..000000000000
--- 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 e3497ea8bc22..000000000000
--- 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 d75617374801..000000000000
--- 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 12d06d078f97..6728a5d012a4 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 0db17630367e..000000000000
--- 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 b23a57f78caf..000000000000
--- 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 000000000000..75c29cf84ee7
--- /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 000000000000..a4fa2e4b2f5b
--- /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 000000000000..c3dadfd8ea1e
--- /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 000000000000..cc86f477e276
--- /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 000000000000..71d5497693ea
--- /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 000000000000..fa2c53d592f3
--- /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 000000000000..0d96093f449d
--- /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 000000000000..2c611fc1d19d
--- /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 000000000000..6016887029c4
--- /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 000000000000..f23c46d44265
--- /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 000000000000..6ebbd7e5f6d4
--- /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 000000000000..9243b7c6d5a3
--- /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 000000000000..e764144f6733
--- /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 000000000000..778b9cb63675
--- /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 000000000000..e61ad46aa6bf
--- /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 000000000000..c7cdec7faeae
--- /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 00308ef3d1dc..000000000000
--- 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 9f8527678903..000000000000
--- 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 80b81d0d0858..000000000000
--- 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 15ad4beb7b36..000000000000
--- 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 2ff22abfe386..000000000000
--- 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 aed77fe9d2eb..000000000000
--- 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 58628a7478d0..e6d411cfe95d 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 000000000000..90fb339348d3
--- /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 000000000000..eaca2c97580e
--- /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 40e8507557ca..032d0a1ef559 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 2656b60a6554..20c022450f60 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 fe3565e78b9c..8b9e83e48b83 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 138c578e7cb0..000000000000
--- 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 8a9cf18451e7..471f236c3f2b 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 b70cc1276853..000000000000
--- 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 e11fcd3e8e92..000000000000
--- 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 000000000000..bbea64ff937d
--- /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 3d25eeec5c46..000000000000
--- 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 cb7d20e843f4..000000000000
--- 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 000000000000..e54a2b03a985
--- /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 000000000000..2cbef0c3c99e
--- /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 f6b1a7924be1..000000000000
--- 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 000000000000..833d07e2b7c8
--- /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 bb3c416d711c..000000000000
--- 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 000000000000..681711be779c
--- /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 0e5081f611f6..d205a871054d 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 b9b02ed01d25..c9fa8a8ccc6d 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 dc117ee9ddd0..357d2d21ca6b 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 000000000000..33824fc886b9
--- /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 000000000000..7ba0e3520f64
--- /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 000000000000..2d384b37fbf6
--- /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 000000000000..37f69f12dea1
--- /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 000000000000..1c7161cd49d4
--- /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 000000000000..c6124297af49
--- /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 000000000000..6824a681a197
--- /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 000000000000..0af68bb96adf
--- /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 1da2ec771afd..000000000000
--- 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 8970b5da188c..000000000000
--- 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 8b764c88e70d..000000000000
--- 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 e8e0de862995..000000000000
--- 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 d8715f830adb..000000000000
--- 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 0f54944eedaf..000000000000
--- 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 df24f4b9b742..000000000000
--- 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 0e50f4d8020c..000000000000
--- 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 b9a5027c10e1..000000000000
--- 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 4d308a6a84fb..000000000000
--- 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 8beb7236563a..000000000000
--- 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 0b3d9697f069..000000000000
--- 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 a3d55db12c85..01478d898481 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 a465269d8b97..eed5562e116f 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 4657268e271e..000000000000
--- 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 043344dd3869..ebb5d198a75d 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 1820167c76d9..3db31a87d887 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 b62666b7a689..000000000000
--- 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 33c7dbdd5b65..a75d6be1532c 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 000000000000..f2aaa7173502
--- /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 c813eae9b2e1..35bac83ff80c 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 02cb426a603b..000000000000
--- 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 000000000000..d4883f607036
--- /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 000000000000..c25faae4ae41
--- /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 000000000000..99cbf7e85230
--- /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 000000000000..99cbf7e85230
--- /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 000000000000..99cbf7e85230
--- /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 000000000000..99cbf7e85230
--- /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 000000000000..93ae6b20b342
--- /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 000000000000..93ae6b20b342
--- /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 000000000000..dc8f0914645f
--- /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 000000000000..dc8f0914645f
--- /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 000000000000..99cbf7e85230
--- /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 51670ba3f069..fc7e6ff61b77 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 e72892e2f43f..49abe2fad7ab 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 000000000000..82d210347612
--- /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 8bd102d2c147..d9d0f44f9bee 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 000000000000..d9d0f44f9bee
--- /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 783bb7fde89b..bf2b769e40fa 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 f22a692f93e8..000000000000
--- 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 865923604a36..962b8017b614 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 989db10beca4..000000000000
--- 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 f1b90a0ce711..1bc60dfff4e1 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 1b2726c6d25c..be62268ac1ff 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 0bf08566ee57..f13320278ee4 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 f384e140fbaa..10b5c079d80c 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 d33f3933815b..a1f2ffa101ac 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 207391afaa17..9010f2339b06 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 bb2f11be8adc..5639e5478862 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 fa32bf33ad54..cd31a8520723 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 000000000000..7a03f6912b08
--- /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 000000000000..220cac4b90ee
--- /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 d5d2bef85ace..a9201422151f 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 c67744f42214..10a6bc30baa7 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 0981da016839..afc5040a0759 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 7884f7965815..bc9824764b21 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 c10865ccd9cf..d0f0cd78dc2e 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 000000000000..1bd4c877edca
--- /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 000000000000..d695be766337
--- /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 000000000000..5f0b4db75615
--- /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 000000000000..7e68e1df3f92
--- /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 000000000000..3361f55a33a0
--- /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 000000000000..a415d280e451
--- /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 122c6a12f597..643b22821c08 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 000000000000..134b7840c6cf
--- /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 64c97a13a096..8623ba79cc38 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 108ebda375d8..9dcfacccbdcd 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 99d2d88127e2..417c78fc2eec 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 b0a6b12566c1..60a4f11fbe14 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',
-- 
GitLab