diff --git a/Documentation/Form.rst b/Documentation/Form.rst
index db44de583c5461b969ab7c60729027bdb58f7098..b3b899b035e12ed5760520c0719b6c6e82db6e32 100644
--- a/Documentation/Form.rst
+++ b/Documentation/Form.rst
@@ -1378,6 +1378,9 @@ General input for any text.
   * *step* = Step size of the up/down buttons which increase/decrease the number of in the input field. Optional.
     Default 1. Only useful with `inputType=number` (defined explicit via `inputType` or detected automatically).
   * *textareaResize* = 0|1 (optional). Be default = 1 (=on). A textarea element is resizable by the user.
+
+.. _`htmlAllow`:
+
   * *htmlAllow* = p,br,img,table,u,ol,b,h2,h3,h5,sup (optional). By default every html tag is allowed. Allow only specific
     html tags. This option is only useful in case `encode` is not `specialchar` (cause otherwise there are no HTML tags).
     If any of the following main tags (before colon) are given, the associated tags will be added automatically:
@@ -1387,6 +1390,8 @@ General input for any text.
     * b: strong
     * u,ins,del,s: span
 
+    List of most used html tags: a,b,br,div,em,h1,h2,h3,h4,h5,h6,hr,i,img,table,ol,ul,p,pre,q,section,small,span,strong,sub,sup,title,u
+
 .. _`input-typeahead`:
 
 Type Ahead
@@ -1629,12 +1634,7 @@ Type: editor
 
     htmlAllow = p,br,h1,h3,table,b,textDecoration,ul,img
 
-* By default every html tag is allowed. If following tags are given in list then associated tags will be added automatically:
-
-    * table: td, tr, th, tbody, thead
-    * ol,ul: li
-    * b: strong
-    * textDecoration: span
+* By default every html tag is allowed. List with tags and their automatically associated tags :ref:`htmlAllow`
 
 Type: annotate
 ^^^^^^^^^^^^^^
diff --git a/extension/Classes/Core/AbstractBuildForm.php b/extension/Classes/Core/AbstractBuildForm.php
index 6ef33a0164f6e50d6eb64eaed66b8c5d8a476148..6cd993ac4e7d69e51b067606a98e5fafb90a937c 100644
--- a/extension/Classes/Core/AbstractBuildForm.php
+++ b/extension/Classes/Core/AbstractBuildForm.php
@@ -3483,6 +3483,8 @@ abstract class AbstractBuildForm {
                         $formatDropdownFlag = true;
                     }
                     break;
+                default:
+                    break;
             }
         }
 
@@ -3578,6 +3580,8 @@ abstract class AbstractBuildForm {
             case 'pre':
                 $formatDropdownElements[] = 'Preformat=pre';
                 break;
+            default:
+                break;
         }
     }
 
diff --git a/extension/Classes/Core/Save.php b/extension/Classes/Core/Save.php
index 8ebff59059aa76042f39837fcac3c19fa1ba9e34..52f5a8ae8f50d9ac6dbb8063b0b79694d289dae0 100644
--- a/extension/Classes/Core/Save.php
+++ b/extension/Classes/Core/Save.php
@@ -413,9 +413,6 @@ class Save {
 
         // Get htmlAllow parameters of all formValues and store in $feSpecsTags
         $feSpecsTags = $this->getHtmlAllowTags($this->feSpecNative, $formValues);
-        // For htmlAllow: Define with flags if '<li>' or '<span>' is needed for tinyMce (used for underline and other text decoration) and add them
-        $feSpecsTags = $this->setTinyMceSpecificTags($feSpecsTags);
-
 
         // Iterate over all table.columns. Built an assoc array $newValues.
         foreach ($tableColumns as $column) {
@@ -528,7 +525,7 @@ class Save {
             }
         }
 
-        return $feSpecsTags;
+        return $this->setTinyMceSpecificTags($feSpecsTags);
     }
 
     /**
@@ -1792,8 +1789,6 @@ class Save {
      * @return array|string|string[]|null
      */
     function purifierHtml($html) {
-        $libraryPath = Path::absoluteExt('vendor/htmlpurifier-4.15.0-lite/library/HTMLPurifier.auto.php');
-        require_once $libraryPath;
         $purifier = new HTMLPurifier();
         $rhtml = $purifier->purify($html);
         return $rhtml;
diff --git a/extension/Classes/Sql/formEditor.sql b/extension/Classes/Sql/formEditor.sql
deleted file mode 100644
index 9bb48c2dd65e8fa48681dfc17a9de24e0c31777f..0000000000000000000000000000000000000000
--- a/extension/Classes/Sql/formEditor.sql
+++ /dev/null
@@ -1,285 +0,0 @@
-# Before MariaDB 10.2.1, 'text' column could not have a 'default' value.
-# To not be forced to specify each text column on INSERT() statements, switch off strict checking:
-SET sql_mode = "NO_ENGINE_SUBSTITUTION";
-
-CREATE TABLE IF NOT EXISTS `Form`
-(
-    `id`                       INT(11)                                                                                    NOT NULL AUTO_INCREMENT,
-    `name`                     VARCHAR(255)                                                                               NOT NULL DEFAULT '',
-    `title`                    VARCHAR(1023)                                                                              NOT NULL DEFAULT '',
-    `noteInternal`             TEXT                                                                                       NOT NULL,
-    `tableName`                VARCHAR(255)                                                                               NOT NULL DEFAULT '',
-    `primaryKey`               VARCHAR(255)                                                                               NOT NULL DEFAULT '',
-
-    `permitNew`                ENUM ('sip', 'logged_in', 'logged_out', 'always', 'never')                                 NOT NULL DEFAULT 'sip',
-    `permitEdit`               ENUM ('sip', 'logged_in', 'logged_out', 'always', 'never')                                 NOT NULL DEFAULT 'sip',
-    `restMethod`               SET ('get', 'post', 'put', 'delete')                                                       NOT NULL DEFAULT '',
-    `escapeTypeDefault`        VARCHAR(32)                                                                                NOT NULL DEFAULT 'c',
-    `render`                   ENUM ('bootstrap', 'table', 'plain')                                                       NOT NULL DEFAULT 'bootstrap',
-    `requiredParameterNew`     VARCHAR(255)                                                                               NOT NULL DEFAULT '',
-    `requiredParameterEdit`    VARCHAR(255)                                                                               NOT NULL DEFAULT '',
-    `dirtyMode`                ENUM ('exclusive', 'advisory', 'none')                                                     NOT NULL DEFAULT 'exclusive',
-    `showButton`               SET ('new', 'delete', 'close', 'save')                                                     NOT NULL DEFAULT 'new,delete,close,save',
-    `multiMode`                ENUM ('none', 'horizontal', 'vertical')                                                    NOT NULL DEFAULT 'none',
-    `multiSql`                 TEXT                                                                                       NOT NULL,
-    `multiDetailForm`          VARCHAR(255)                                                                               NOT NULL DEFAULT '',
-    `multiDetailFormParameter` VARCHAR(255)                                                                               NOT NULL DEFAULT '',
-
-    `forwardMode`              ENUM ('auto', 'close', 'no', 'url', 'url-skip-history', 'url-sip', 'url-sip-skip-history') NOT NULL DEFAULT 'auto',
-
-
-    `forwardPage`              VARCHAR(511)                                                                               NOT NULL DEFAULT '',
-
-    `labelAlign`               ENUM ('default', 'left', 'center', 'right')                                                NOT NULL DEFAULT 'default',
-    `bsLabelColumns`           VARCHAR(255)                                                                               NOT NULL DEFAULT '',
-    `bsInputColumns`           VARCHAR(255)                                                                               NOT NULL DEFAULT '',
-    `bsNoteColumns`            VARCHAR(255)                                                                               NOT NULL DEFAULT '',
-
-    `parameter`                TEXT                                                                                       NOT NULL,
-    `parameterLanguageA`       TEXT                                                                                       NOT NULL,
-    `parameterLanguageB`       TEXT                                                                                       NOT NULL,
-    `parameterLanguageC`       TEXT                                                                                       NOT NULL,
-    `parameterLanguageD`       TEXT                                                                                       NOT NULL,
-    `recordLockTimeoutSeconds` INT(11)                                                                                    NOT NULL DEFAULT 900,
-
-    `deleted`                  ENUM ('yes', 'no')                                                                         NOT NULL DEFAULT 'no',
-    `fileStats`                VARCHAR(255)                                                                               NOT NULL DEFAULT '',
-    `modified`                 DATETIME                                                                                   NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
-    `created`                  DATETIME                                                                                   NOT NULL DEFAULT CURRENT_TIMESTAMP,
-
-    PRIMARY KEY (`id`),
-    KEY `name` (`name`),
-    KEY `name_deleted` (`name`, `deleted`)
-)
-    ENGINE = InnoDB
-    DEFAULT CHARSET = utf8
-    AUTO_INCREMENT = 1000;
-
-
-CREATE TABLE IF NOT EXISTS `FormElement`
-(
-    `id`                 INT(11)                                                                    NOT NULL AUTO_INCREMENT,
-    `formId`             INT(11)                                                                    NOT NULL,
-    `feIdContainer`      INT(11)                                                                    NOT NULL DEFAULT '0',
-    `dynamicUpdate`      ENUM ('yes', 'no')                                                         NOT NULL DEFAULT 'no',
-
-    `enabled`            ENUM ('yes', 'no')                                                         NOT NULL DEFAULT 'yes',
-
-    `name`               VARCHAR(255)                                                               NOT NULL DEFAULT '',
-    `label`              VARCHAR(1023)                                                              NOT NULL DEFAULT '',
-
-    `mode`               ENUM ('show', 'required', 'readonly', 'hidden')                            NOT NULL DEFAULT 'show',
-    `modeSql`            TEXT                                                                       NOT NULL,
-    `class`              ENUM ('native', 'action', 'container')                                     NOT NULL DEFAULT 'native',
-    `type`               ENUM ('checkbox', 'date', 'datetime', 'dateJQW', 'datetimeJQW', 'extra',
-        'gridJQW', 'text', 'editor', 'annotate', 'time', 'note', 'password', 'radio', 'select',
-        'subrecord', 'upload', 'imageCut', 'fieldset', 'pill', 'templateGroup', 'beforeLoad',
-        'beforeSave', 'beforeInsert', 'beforeUpdate', 'beforeDelete', 'afterLoad', 'afterSave',
-        'afterInsert', 'afterUpdate', 'afterDelete', 'sendMail', 'paste')                           NOT NULL DEFAULT 'text',
-    `subrecordOption`    SET ('edit', 'delete', 'new')                                              NOT NULL DEFAULT '',
-    `encode`             ENUM ('none', 'specialchar', 'single tick')                                NOT NULL DEFAULT 'specialchar',
-    `checkType`          ENUM ('auto', 'alnumx', 'digit', 'numerical', 'email', 'pattern', 'allbut',
-        'all')                                                                                      NOT NULL DEFAULT 'auto',
-    `checkPattern`       VARCHAR(255)                                                               NOT NULL DEFAULT '',
-
-    `onChange`           VARCHAR(255)                                                               NOT NULL DEFAULT '',
-
-    `ord`                INT(11)                                                                    NOT NULL DEFAULT '0',
-    `tabindex`           INT(11)                                                                    NOT NULL DEFAULT '0',
-
-    `size`               VARCHAR(255)                                                               NOT NULL DEFAULT '',
-    `maxLength`          VARCHAR(255)                                                               NOT NULL DEFAULT '',
-    `labelAlign`         ENUM ('default', 'left', 'center', 'right')                                NOT NULL DEFAULT 'default',
-    `bsLabelColumns`     VARCHAR(255)                                                               NOT NULL DEFAULT '',
-    `bsInputColumns`     VARCHAR(255)                                                               NOT NULL DEFAULT '',
-    `bsNoteColumns`      VARCHAR(255)                                                               NOT NULL DEFAULT '',
-    `rowLabelInputNote`  SET ('row', 'label', '/label', 'input', '/input', 'note', '/note', '/row') NOT NULL DEFAULT 'row,label,/label,input,/input,note,/note,/row',
-    `note`               TEXT                                                                       NOT NULL,
-    `adminNote`          TEXT                                                                       NOT NULL,
-    `tooltip`            VARCHAR(255)                                                               NOT NULL DEFAULT '',
-    `placeholder`        VARCHAR(2048)                                                              NOT NULL DEFAULT '',
-
-    `value`              TEXT                                                                       NOT NULL,
-    `sql1`               TEXT                                                                       NOT NULL,
-    `parameter`          TEXT                                                                       NOT NULL,
-    `parameterLanguageA` TEXT                                                                       NOT NULL,
-    `parameterLanguageB` TEXT                                                                       NOT NULL,
-    `parameterLanguageC` TEXT                                                                       NOT NULL,
-    `parameterLanguageD` TEXT                                                                       NOT NULL,
-    `clientJs`           TEXT                                                                       NOT NULL,
-
-    `feGroup`            VARCHAR(255)                                                               NOT NULL DEFAULT '',
-    `deleted`            ENUM ('yes', 'no')                                                         NOT NULL DEFAULT 'no',
-    `modified`           DATETIME                                                                   NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
-    `created`            DATETIME                                                                   NOT NULL DEFAULT CURRENT_TIMESTAMP,
-
-    PRIMARY KEY (`id`),
-    KEY `formId` (`formId`),
-    KEY `formId_class_enabled_deleted` (`formId`, `class`, `enabled`, `deleted`),
-    KEY `feIdContainer` (`feIdContainer`),
-    KEY `ord` (`ord`),
-    KEY `feGroup` (`feGroup`)
-
-)
-    ENGINE = InnoDB
-    DEFAULT CHARSET = utf8
-    AUTO_INCREMENT = 0;
-
-
-CREATE TABLE IF NOT EXISTS `Dirty`
-(
-    `id`                   INT(11)                                NOT NULL AUTO_INCREMENT,
-    `sip`                  VARCHAR(255)                           NOT NULL,
-    `tableName`            VARCHAR(255)                           NOT NULL,
-    `recordId`             INT(11)                                NOT NULL,
-    `expire`               DATETIME                               NOT NULL,
-    `recordHashMd5`        CHAR(32)                               NOT NULL,
-    `tabUniqId`            CHAR(32)                               NOT NULL,
-    `feUser`               VARCHAR(255)                           NOT NULL,
-    `qfqUserSessionCookie` VARCHAR(255)                           NOT NULL,
-    `dirtyMode`            ENUM ('exclusive', 'advisory', 'none') NOT NULL DEFAULT 'exclusive',
-    `remoteAddress`        VARCHAR(45)                            NOT NULL,
-    `modified`             DATETIME                               NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
-    `created`              DATETIME                               NOT NULL DEFAULT CURRENT_TIMESTAMP,
-
-    PRIMARY KEY (`id`),
-    KEY `sip` (`sip`),
-    KEY `tableName` (`tableName`),
-    KEY `recordId` (`recordId`)
-)
-    ENGINE = InnoDB
-    DEFAULT CHARSET = utf8
-    AUTO_INCREMENT = 0;
-
-
-# MailLog
-CREATE TABLE IF NOT EXISTS `MailLog`
-(
-    `id`       INT(11)       NOT NULL AUTO_INCREMENT,
-    `grId`     INT(11)       NOT NULL DEFAULT '0',
-    `xId`      INT(11)       NOT NULL DEFAULT '0',
-    `xId2`     INT(11)       NOT NULL DEFAULT '0',
-    `xId3`     INT(11)       NOT NULL DEFAULT '0',
-    `receiver` TEXT          NOT NULL,
-    `cc`       TEXT          NOT NULL,
-    `bcc`      TEXT          NOT NULL,
-    `sender`   VARCHAR(255)  NOT NULL DEFAULT '',
-    `subject`  VARCHAR(255)  NOT NULL DEFAULT '',
-    `body`     TEXT          NOT NULL,
-    `header`   VARCHAR(2048) NOT NULL DEFAULT '',
-    `attach`   VARCHAR(4096) NOT NULL DEFAULT '',
-    `src`      VARCHAR(255)  NOT NULL DEFAULT '',
-    `modified` DATETIME      NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
-    `created`  DATETIME      NOT NULL DEFAULT CURRENT_TIMESTAMP,
-
-    PRIMARY KEY (`id`)
-)
-    ENGINE = InnoDB
-    DEFAULT CHARSET = utf8
-    AUTO_INCREMENT = 0;
-
-CREATE TABLE IF NOT EXISTS `FormSubmitLog`
-(
-    `id`        INT(11)      NOT NULL AUTO_INCREMENT,
-    `formData`  TEXT         NOT NULL,
-    `sipData`   TEXT         NOT NULL,
-    `clientIp`  VARCHAR(64)  NOT NULL,
-    `feUser`    VARCHAR(64)  NOT NULL,
-    `userAgent` TEXT         NOT NULL,
-    `formId`    INT(11)      NOT NULL,
-    `formName`  VARCHAR(255) NOT NULL,
-    `recordId`  INT(11)      NOT NULL,
-    `pageId`    INT          NOT NULL,
-    `sessionId` VARCHAR(32)  NOT NULL,
-    `created`   TIMESTAMP    NOT NULL DEFAULT CURRENT_TIMESTAMP,
-
-    PRIMARY KEY (`id`),
-    INDEX (`feUser`),
-    INDEX (`formId`)
-)
-    ENGINE = InnoDB
-    DEFAULT CHARSET = utf8
-    AUTO_INCREMENT = 0;
-
-
-CREATE TABLE IF NOT EXISTS `Clipboard`
-(
-    `id`          INT(11)      NOT NULL AUTO_INCREMENT,
-    `cookie`      VARCHAR(255) NOT NULL DEFAULT '',
-    `formIdPaste` INT(11)      NOT NULL DEFAULT '0',
-    `idSrc`       INT(11)      NOT NULL DEFAULT '0',
-    `xId`         INT(11)      NOT NULL DEFAULT '0',
-    `modified`    DATETIME     NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
-    `created`     DATETIME     NOT NULL DEFAULT CURRENT_TIMESTAMP,
-
-    PRIMARY KEY (`id`)
-)
-    ENGINE = InnoDB
-    DEFAULT CHARSET = utf8
-    AUTO_INCREMENT = 0;
-
-
-# AutoCRON
-CREATE TABLE IF NOT EXISTS `Cron`
-(
-    `id`            INT(11)                      NOT NULL AUTO_INCREMENT,
-    `grId`          INT(11)                      NOT NULL,
-    `xId`           INT(11)                      NOT NULL,
-    `type`          ENUM ('mail', 'website')     NOT NULL DEFAULT 'website',
-    `lastRun`       DATETIME                     NOT NULL DEFAULT '0000-00-00 00:00:00',
-    `lastStatus`    TEXT                         NOT NULL,
-    `nextRun`       DATETIME                     NOT NULL DEFAULT '0000-00-00 00:00:00',
-    `frequency`     VARCHAR(32)                  NOT NULL,
-    `inProgress`    DATETIME                     NOT NULL DEFAULT '0000-00-00 00:00:00',
-    `status`        ENUM ('enable', 'disable')   NOT NULL DEFAULT 'enable',
-    `sql1`          TEXT                         NOT NULL,
-    `content`       TEXT                         NOT NULL,
-    `comment`       TEXT                         NOT NULL,
-    `outputFile`    VARCHAR(255)                 NOT NULL,
-    `outputMode`    ENUM ('overwrite', 'append') NOT NULL DEFAULT 'append',
-    `outputPattern` VARCHAR(255)                 NOT NULL,
-    `autoGenerated` ENUM ('yes', 'no')           NOT NULL DEFAULT 'no',
-    `modified`      DATETIME                     NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
-    `created`       DATETIME                     NOT NULL DEFAULT CURRENT_TIMESTAMP,
-
-    PRIMARY KEY (`id`)
-)
-    ENGINE = InnoDB
-    AUTO_INCREMENT = 0
-    DEFAULT CHARSET = utf8;
-
-
-CREATE TABLE IF NOT EXISTS `Split`
-(
-    `id`           INT(11)      NOT NULL AUTO_INCREMENT,
-    `tableName`    VARCHAR(255) NOT NULL,
-    `xId`          INT(11)      NOT NULL,
-    `pathFileName` VARCHAR(255) NOT NULL,
-    `modified`     DATETIME     NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
-    `created`      DATETIME     NOT NULL DEFAULT CURRENT_TIMESTAMP,
-
-    PRIMARY KEY (`id`)
-)
-    ENGINE = InnoDB
-    AUTO_INCREMENT = 0
-    DEFAULT CHARSET = utf8;
-
-# Used to save tablesorter.js column selection settings. Free to use for other settings as well.
-CREATE TABLE IF NOT EXISTS `Setting`
-(
-    `id`       INT(11)                  NOT NULL AUTO_INCREMENT,
-    `type`     ENUM ('', 'tablesorter') NOT NULL,
-    `readonly` ENUM ('yes', 'no')       NOT NULL DEFAULT 'no' COMMENT 'Settings can''t be modified.',
-    `name`     VARCHAR(64)              NOT NULL,
-    `public`   TINYINT(1)               NOT NULL,
-    `feUser`   VARCHAR(32)              NOT NULL COMMENT 'In case there is no logged in user, take QFQ cookie.',
-    `tableId`  VARCHAR(64)              NOT NULL,
-    `view`     TEXT                     NOT NULL,
-    `modified` DATETIME                 NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
-    `created`  DATETIME                 NOT NULL DEFAULT CURRENT_TIMESTAMP,
-    PRIMARY KEY (`id`),
-    KEY `name` (`name`),
-    KEY `typeFeUserUidTableIdPublic` (`type`, `feUser`, `tableId`, `public`) USING BTREE
-) ENGINE = InnoDB
-  DEFAULT CHARSET = utf8mb4;
-
diff --git a/extension/composer.json b/extension/composer.json
index 1e0adcf6e5ff6f577ce6c1065c8cd72552a47013..4f8f89a980b279ed8734076152db55322e1caec7 100644
--- a/extension/composer.json
+++ b/extension/composer.json
@@ -2,7 +2,8 @@
   "require": {
     "phpoffice/phpspreadsheet": "^1.3",
     "ext-json": "*",
-    "twig/twig": "^2.0"
+    "twig/twig": "^2.0",
+    "htmlpurifier-lite/library": "4.*"
   },
   "require-dev": {
     "phpunit/phpunit": "^6.5"