diff --git a/extension/Documentation/Manual.rst b/extension/Documentation/Manual.rst
index fa67ab660a7593ef869aae375edfc14709e41baa..71f09e73371b9fc688aa2eb8b2a8f437e488f730 100644
--- a/extension/Documentation/Manual.rst
+++ b/extension/Documentation/Manual.rst
@@ -203,6 +203,14 @@ config.qfq.ini
 +-----------------------------+-----------------------------------------+----------------------------------------------------------------------------+
 | FORM_DATA_ERROR             |FORM_DATA_ERROR=generic error            | Customizable error message used in validator.js. 'no specific' given       |
 +-----------------------------+-----------------------------------------+----------------------------------------------------------------------------+
+| FORM_BS_COLUMNS             | FORM_BS_COLUMNS=12                      | The whole form will be wrapped in 'col-md-??'. Default is 12 for 100%      |
++-----------------------------+-----------------------------------------+----------------------------------------------------------------------------+
+| FORM_BS_LABEL_COLUMNS       | FORM_BS_LABEL_COLUMNS = 3               | Default number of BS columns for the 'label'-column                        |
++-----------------------------+-----------------------------------------+----------------------------------------------------------------------------+
+| FORM_BS_INPUT_COLUMNS       | FORM_BS_INPUT_COLUMNS = 6               | Default number of BS columns for the 'input'-column                        |
++-----------------------------+-----------------------------------------+----------------------------------------------------------------------------+
+| FORM_BS_NOTE_COLUMNS        | FORM_BS_NOTE_COLUMNS = 3                | Default number of BS columns for the 'note'-column                         |
++-----------------------------+-----------------------------------------+----------------------------------------------------------------------------+
 | FORM_BUTTON_ON_CHANGE_CLASS | FORM_BUTTON_ON_CHANGE_CLASS=alert-info btn-info | Color for save button after modification                           |
 +-----------------------------+-----------------------------------------+----------------------------------------------------------------------------+
 | BASE_URL_PRINT              | BASE_URL_PRINT=http://example.com       | URL where wkhtmltopdf will fetch the HTML (no parameter, those comes later)|
@@ -229,10 +237,12 @@ Example: *typo3conf/config.qfq.ini*
 	;CSS_CLASS_QFQ_FORM =
 	CSS_CLASS_QFQ_FORM_PILL = qfq-color-grey-1
 	CSS_CLASS_QFQ_FORM_BODY = qfq-color-grey-2
+	;DATE_FORMAT= yyyy-mm-dd
 	;FORM_DATA_PATTERN_ERROR =
 	;FORM_DATA_REQUIRED_ERROR =
 	;FORM_DATA_MATCH_ERROR =
 	;FORM_DATA_ERROR =
+	;FORM_BS_COLUMNS = 12
 	;FORM_BS_LABEL_COLUMNS = 3
 	;FORM_BS_INPUT_COLUMNS = 6
 	;FORM_BS_NOTE_COLUMNS = 3
@@ -739,6 +749,8 @@ Store: *SYSTEM* - Y
  +-------------------------+--------------------------------------------------------------------------+
  | data-error              | defined in config.ini or form definition                                 |
  +-------------------------+--------------------------------------------------------------------------+
+ | bsColumns               | defined in config.ini (FORM_BS_COLUMNS) or form definition               |
+ +-------------------------+--------------------------------------------------------------------------+
  | bsLabelColumns          | defined in config.ini (FORM_BS_LABEL_COLUMNS) or form definition         |
  +-------------------------+--------------------------------------------------------------------------+
  | bsInputColumns          | defined in config.ini (FORM_BS_INPUT_COLUMNS) or form definition         |
@@ -994,6 +1006,8 @@ parameter
 +--------------------------+--------+----------------------------------------------------------------------------------------------------------+
 | Name                     | Type   | Description                                                                                              |
 +==========================+========+==========================================================================================================+
+| bsColumns                | int    | Wrap the whole form in '<div class="col-md-??">                                                          |
++--------------------------+--------+----------------------------------------------------------------------------------------------------------+
 | maxVisiblePill           | int    | Show pills upto <maxVisiblePill> as button, all further in a drop-down menu. Eg.: maxVisiblePill=3       |
 +--------------------------+--------+----------------------------------------------------------------------------------------------------------+
 | class                    | string | HTML div with given class, surrounding the whole form. Eg.: class=container-fluid                        |
@@ -1192,8 +1206,8 @@ beside every *templateGroup*. The first copy of a templateGroup can't be removed
     * *tgAddText*: Text shown on the button. Default: `Add`.
     * *tgRemoveClass*: Class of the 'remove' button. Default: `btn btn-default`.
     * *tgRemoveText*: Text shown on the button. Default: `Remove`.
-    * *tgClass*: Class wrapped around every copy of the *templateGroup*. E.g. the class `qfq-child-margin-top` adds a
-      margin between two copies of the *templateGroup*. Default: empty
+    * *tgClass*: Class wrapped around every copy of the *templateGroup*.
+      E.g. the class `qfq-child-margin-top` adds a margin between two copies of the *templateGroup*. Default: empty
 
 Multiple *templateGroups* per form are allowed.
 
@@ -1201,6 +1215,8 @@ The name of the native FormElements, inside the templateGroup, which represents
 `%d`. E.g. the columns `grade1`, `grade2`, `grade3` needs a *FormElement.name* = `grade%d`. The counting will always start with 1.
 The placeholder `%d` can also be used in the *FormElement.label*
 
+Example of styling the Add/ Delete Button: :ref:`example_class_template_group`
+
 Class: Native
 -------------
 
@@ -2359,17 +2375,20 @@ Relation: `Person.id = Address.personId`
     * `sqlInsert={{INSERT INTO Note (note) VALUES ('{{note:F:allbut:s}}') }}`
     * `sqlUpdate={{UPDATE Note SET note='{{note:F:allbut:s}}' WHERE id={{slaveId:V}} }}`
 
+.. _example_class_template_group:
+
 Icons Template Group
 ^^^^^^^^^^^^^^^^^^^^
 
- * FormElement.parameter
+This example will display grafics instead of text 'add' and 'remove'. Also there is a distance between the templateGroups.
 
-::
+ * FormElement.parameter::
 
-     tgAddClass=btn alert-success
-     tgAddText=<span class="glyphicon glyphicon-plus" aria-hidden="true"></span>
-     tgRemoveClass=btn btn-danger alert-danger
-     tgRemoveText=<span class="glyphicon glyphicon-remove" aria-hidden="true"></span>
+     tgClass = qfq-child-margin-top
+     tgAddClass = btn alert-success
+     tgAddText = <span class="glyphicon glyphicon-plus" aria-hidden="true"></span>
+     tgRemoveClass = btn btn-danger alert-danger
+     tgRemoveText = <span class="glyphicon glyphicon-remove" aria-hidden="true"></span>
 
 Chart
 ^^^^^
diff --git a/extension/Documentation/Release.rst b/extension/Documentation/Release.rst
index c8df042f67b59bef4b99389d7e18bd778dd23029..2b29fb3f519956cd81802c024081fedf72ece902 100644
--- a/extension/Documentation/Release.rst
+++ b/extension/Documentation/Release.rst
@@ -46,7 +46,11 @@ Features
  * Character Count: Display a `counter` on input or textarea fields, activated by specifying the formElement.parameter 'characterCountWrap'.
  * Evaluate.php: Two new escape options 'l' and 'L'. Backport of ldap_escape() for PHP <5.6. Multiple escaping for one value now possible.
  * Manual.rst: add some example for TypeAhead and for saving LDAP value.
- 
+ * Load foreign values in templatGroups - saving is not implemented yet.
+ * Manual: Added howto prevent <p>-wrap in TinyMCE
+ * TemplateGroup: Add button now disabled if max. number of copies reached.
+ * #3414/QuickFormQuery.php: wrap whole form in 'col-md-XX' - User controls the width of an QFQ form.
+
 Bug Fixes
 ^^^^^^^^^
 
@@ -57,7 +61,9 @@ Bug Fixes
  * BuildFormBootstrap.php: wrapping of optional 'submitButtonText' now done with the 'per form' values.
  * typeahead.php: if there is an exception, the message body is sent as regular 'content' for the drop-down box. At the
    moment this is the only way to transmit any error messages.
-
+ * formEditor.sql: removed all 'maxLength' string values for 'Form' and 'FormElement' forms.
+ * Save button becomes active if a templateGroup copy is removed.
+ * #3413 Form ohne Pill hat kein padding am Rand. Fix: if there are no pills, an additinal col-md-12 will be rendered.
 
 
 Version 0.13
diff --git a/extension/RELEASE.txt b/extension/RELEASE.txt
index 4127f5d0ae7a901ae0e247b1a026fc95fec616da..7f60604eadfc9a1bf85785c56cdf446f7415c5bf 100644
--- a/extension/RELEASE.txt
+++ b/extension/RELEASE.txt
@@ -1,6 +1,57 @@
 Release
 =======
 
+Version 0.14
+------------
+
+GIT  Last Commit:  Sun Mar 19 20:38:18 2017 +0100
+
+
+Changes
+^^^^^^^
+
+ * Play formEditor.sql.
+
+   * All Form & FormEditor input elements now have a maxlength definition of 0, which means take the column definition value.
+   * Drop-down list of container assignment:
+
+     * Display 'type' ('pill', 'fieldset', 'templategroup') instead of 'class' (always 'container').
+     * Display 'name' (internal name) instead of 'label' (shown on the website and might not so usefull as 'name' which is nowhere else used than in that drop-down.
+
+   * FormElement.placeholder colum width extended to 512:
+
+     ALTER TABLE `FormElement` CHANGE `placeholder` `placeholder` VARCHAR(512) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL DEFAULT '';
+
+ * New class Ldap.php.
+
+Features
+^^^^^^^^
+
+ * Typeahead for SQL and LDAP Datasources implemented.
+ * formEditor.sql: Changed width of column FormElement.placeholder from 255 to 512. Removed hardcoded 'size' in FormElement 'placeholder'.
+ * Character Count: Display a `counter` on input or textarea fields, activated by specifying the formElement.parameter 'characterCountWrap'.
+ * Evaluate.php: Two new escape options 'l' and 'L'. Backport of ldap_escape() for PHP <5.6. Multiple escaping for one value now possible.
+ * Manual.rst: add some example for TypeAhead and for saving LDAP value.
+ * Load foreign values in templatGroups - saving is not implemented yet.
+ * Manual: Added howto prevent <p>-wrap in TinyMCE
+ * TemplateGroup: Add button now disabled if max. number of copies reached.
+ * #3414/QuickFormQuery.php: wrap whole form in 'col-md-XX' - User controls the width of an QFQ form.
+
+Bug Fixes
+^^^^^^^^^
+
+ * Dynamic Update has been broken since implementing of 'element-update' (#3180). Now both methods, 'element-update' and 'form-update' should be fine.
+ * qfq-bs.css.less: Fixed problem with 'typeahead input elements' not expanded to Bootstrap column width. Changed 
+   Layout/Design Typeahead drop-down box. Add hoover for the drop-down box with a blue background
+ * AbstractBuildForm.php: #3374 - textarea elements now contains 'maxlength' attribute.
+ * BuildFormBootstrap.php: wrapping of optional 'submitButtonText' now done with the 'per form' values.
+ * typeahead.php: if there is an exception, the message body is sent as regular 'content' for the drop-down box. At the
+   moment this is the only way to transmit any error messages.
+ * formEditor.sql: removed all 'maxLength' string values for 'Form' and 'FormElement' forms.
+ * Save button becomes active if a templateGroup copy is removed.
+ * #3413 Form ohne Pill hat kein padding am Rand. Fix: if there are no pills, an additinal col-md-12 will be rendered.
+
+
 Version 0.13
 ------------
 
@@ -89,10 +140,11 @@ Changes
 
    * UPDATE EXISTING TypoScript TEMPLATES of QFQ Installation.
 
- * Variable field parameter has changed. old '_filename', new 'filename'
+ * Name of variable '_filename' (used in field 'parameter') has changed. Old: '_filename', New: 'filename'
 
    * UPDATE `FormElement` SET parameter = REPLACE(parameter, '_filename', 'filename')
 
+
 Features
 ^^^^^^^^
 
diff --git a/extension/qfq/qfq/AbstractBuildForm.php b/extension/qfq/qfq/AbstractBuildForm.php
index a0421a7fc1a5538e7a36cc3fbfea752d3dc7e76f..2b82b9d7900c8438f2989dbfb354eb5e51f8b9a0 100644
--- a/extension/qfq/qfq/AbstractBuildForm.php
+++ b/extension/qfq/qfq/AbstractBuildForm.php
@@ -2875,6 +2875,7 @@ abstract class AbstractBuildForm {
         // save parent processed FE's
         $feSpecNativeSave = $this->feSpecNative;
 
+        $addButtonId = 'add_button_' . $formElement[FE_ID];
         $qfqFieldsName = 'qfq_fields_' . $formElement[FE_ID]; // ='qfq-fields'
         $templateName = 'template_' . $formElement[FE_ID]; // ='template'
         $targetName = 'target_' . $formElement[FE_ID]; // ='template'
@@ -2894,7 +2895,7 @@ abstract class AbstractBuildForm {
 EOT;
 
         $htmlAdd = <<<EOT
-<button type="button" class="$addClass" onclick="QfqNS.addFields('#$templateName', '#$targetName', $max)">$addText</button>
+<button type="button" id="$addButtonId" class="$addClass" onclick="QfqNS.addFields('#$templateName', '#$targetName', $max)">$addText</button>
 EOT;
 
         $htmlDelete = <<<EOT
@@ -2920,6 +2921,7 @@ EOT;
         $attribute = Support::doAttribute('class', $qfqFieldsName);
         $attribute .= Support::doAttribute('id', $targetName);
         $attribute .= Support::doAttribute('data-qfq-line-template', '#' . $templateName);
+        $attribute .= Support::doAttribute('data-qfq-line-add-button', '#' . $addButtonId);
 
         // Element where the effective FormElements will be copied to. The BS 'col-md-* Classes are inside the template, not here. This here should be pure data without wrapping.
         $html = Support::wrapTag("<div $attribute>", $html, false);
diff --git a/extension/qfq/qfq/BuildFormBootstrap.php b/extension/qfq/qfq/BuildFormBootstrap.php
index 8dcfecbe915d8827dc3e6c6e36af7c909e04f18e..53d3ba7505abe54d6da7b02acbf8e527b450e880 100644
--- a/extension/qfq/qfq/BuildFormBootstrap.php
+++ b/extension/qfq/qfq/BuildFormBootstrap.php
@@ -116,9 +116,11 @@ class BuildFormBootstrap extends AbstractBuildForm {
 
         $html .= $this->getFormTag();
 
-        //TODO: Problem fuer Forms ohne Pils
-        $html .= '<div class="tab-content ' . $this->formSpec[F_CLASS_BODY] . '">';
-//        $html .= '<div class="col-md-12 ' . $this->formSpec[F_CLASS_BODY] . '">';
+        $class = ['tab-content', $this->formSpec[F_CLASS_BODY]];
+        if ($pill == '') {
+            $class[] = 'col-md-12';
+        }
+        $html .= "<div " . Support::doAttribute('class', $class) . ">";
 
         return $html;
     }
diff --git a/extension/qfq/qfq/Constants.php b/extension/qfq/qfq/Constants.php
index 6b959577c7493d46e3c7d239f679c9487f43dde9..35c58047a022b626c82a3158b792fa4b79d4dd8f 100644
--- a/extension/qfq/qfq/Constants.php
+++ b/extension/qfq/qfq/Constants.php
@@ -38,6 +38,8 @@ const FORM_FORWARD_MODE_NO = 'no';
 const FORM_FORWARD_MODE_AUTO = 'auto';
 const FORM_FORWARD_MODE_PAGE = 'page';
 
+const F_BS_COLUMNS = 'bsColumns';
+
 const F_BS_LABEL_COLUMNS = 'bsLabelColumns';
 const F_BS_INPUT_COLUMNS = 'bsInputColumns';
 const F_BS_NOTE_COLUMNS = 'bsNoteColumns';
@@ -201,6 +203,7 @@ const ERROR_UNKNOWN_ACTION = 1502;
 const ERROR_NO_TARGET_PATH_FILE_NAME = 1503;
 
 const ERROR_LDAP_CONNECT = 1600;
+const ERROR_MISSING_TYPE_AHEAD_LDAP_SEARCH = 1601;
 
 // KeyValueParser
 const ERROR_KVP_VALUE_HAS_NO_KEY = 1900;
@@ -321,6 +324,8 @@ const SYSTEM_FORM_DATA_REQUIRED_ERROR = 'FORM_DATA_REQUIRED_ERROR';
 const SYSTEM_FORM_DATA_MATCH_ERROR = 'FORM_DATA_MATCH_ERROR';
 const SYSTEM_FORM_DATA_ERROR = 'FORM_DATA_ERROR';
 
+const SYSTEM_FORM_BS_COLUMNS = 'FORM_BS_COLUMNS';
+
 const SYSTEM_FORM_BS_LABEL_COLUMNS = 'FORM_BS_LABEL_COLUMNS';
 const SYSTEM_FORM_BS_INPUT_COLUMNS = 'FORM_BS_INPUT_COLUMNS';
 const SYSTEM_FORM_BS_NOTE_COLUMNS = 'FORM_BS_NOTE_COLUMNS';
diff --git a/extension/qfq/qfq/QuickFormQuery.php b/extension/qfq/qfq/QuickFormQuery.php
index 5304b24eb2774bc98f77a0de27c93ac5240d06be..00fe920bb48bebe8027bcf97e4a81aa454e21e00 100644
--- a/extension/qfq/qfq/QuickFormQuery.php
+++ b/extension/qfq/qfq/QuickFormQuery.php
@@ -283,6 +283,14 @@ class QuickFormQuery {
         $formAction = new FormAction($this->formSpec, $this->db, $this->phpUnit);
         switch ($formMode) {
             case FORM_LOAD:
+                $formAction->elements($recordId, $this->feSpecAction, FE_TYPE_BEFORE_LOAD);
+                $data = $build->process($formMode);
+                $data = Support::wrapTag("<div class='" . 'col-md-' . $this->formSpec[F_BS_COLUMNS] . "'>", $data);
+                $data = Support::wrapTag("<div class='row'>", $data);
+
+                $formAction->elements($recordId, $this->feSpecAction, FE_TYPE_AFTER_LOAD);
+                break;
+
             case FORM_UPDATE:
 
                 $formAction->elements($recordId, $this->feSpecAction, FE_TYPE_BEFORE_LOAD);
@@ -529,7 +537,8 @@ class QuickFormQuery {
      */
     private function syncSystemFormConfig(array $formSpec) {
 
-        $keys = [F_BS_LABEL_COLUMNS,
+        $keys = [F_BS_COLUMNS,
+            F_BS_LABEL_COLUMNS,
             F_BS_INPUT_COLUMNS,
             F_BS_NOTE_COLUMNS,
             F_FE_DATA_PATTERN_ERROR,
diff --git a/extension/qfq/qfq/helper/Ldap.php b/extension/qfq/qfq/helper/Ldap.php
index ffbf3a716e50c52b91421fc814845e4cf8cc09a8..c966fd224ba80b8574e14c3ff23aa37a1bd7094d 100644
--- a/extension/qfq/qfq/helper/Ldap.php
+++ b/extension/qfq/qfq/helper/Ldap.php
@@ -21,6 +21,7 @@ class Ldap {
      * @throws UserFormException
      */
     private function ldapConnect($ldapServer) {
+
         $ds = ldap_connect($ldapServer);  // must be a valid LDAP server!
         if (!$ds) {
             throw new UserFormException("Unable to connect to LDAP server: $ldapServer", ERROR_LDAP_CONNECT);
@@ -85,6 +86,7 @@ class Ldap {
     }
 
     /**
+     *
      * @param array $config [FE_LDAP_SERVER , FE_LDAP_BASE_DN, FE_LDAP_SEARCH, FE_TYPEAHEAD_LIMIT, FE_TYPEAHEAD_LDAP_KEY_PRINTF, FE_TYPEAHEAD_LDAP_VALUE_PRINTF]
      * @param string $searchValue value to search via $config[FE_LDAP_SEARCH]
      * @param string $mode MODE_LDAP_SINGLE | MODE_LDAP_MULTI
@@ -95,8 +97,15 @@ class Ldap {
         $arr = array();
 
         // For TypeAhead, use an optional given F_TYPEAHEAD_LDAP_SEARCH
-        if ($mode == MODE_LDAP_MULTI && $config[F_TYPEAHEAD_LDAP_SEARCH] != '') {
+        if ($mode == MODE_LDAP_MULTI) {
+            if (!isset($config[F_TYPEAHEAD_LDAP_SEARCH]) || $config[F_TYPEAHEAD_LDAP_SEARCH] == '') {
+                throw new UserFormException("Missing definition for `" . F_TYPEAHEAD_LDAP_SEARCH . "`", ERROR_MISSING_TYPE_AHEAD_LDAP_SEARCH);
+            }
             $config[F_LDAP_SEARCH] = $config[F_TYPEAHEAD_LDAP_SEARCH];
+        } else {
+            if (!isset($config[F_LDAP_SEARCH]) || $config[F_LDAP_SEARCH] == '') {
+                throw new UserFormException("Missing definition for `" . F_LDAP_SEARCH . "`", ERROR_MISSING_TYPE_AHEAD_LDAP_SEARCH);
+            }
         }
 
         $searchValue = Support::ldap_escape($searchValue, null, LDAP_ESCAPE_FILTER);
@@ -115,30 +124,33 @@ class Ldap {
                     array_merge($keyArr, $valueArr, $specificArr))));
 
         $sr = $this->ldapSearch($ds, $config, $attr);
-        $info = ldap_get_entries($ds, $sr);
+        if ($sr !== false) {
+            $info = ldap_get_entries($ds, $sr);
 
-        if ($mode == MODE_LDAP_MULTI) {
+            if ($mode == MODE_LDAP_MULTI) {
 
-            // Iterate over all Elements, per element collect all needed attributes
-            for ($i = 0; $i < $info["count"]; $i++) {
+                // Iterate over all Elements, per element collect all needed attributes
+                for ($i = 0; $i < $info["count"]; $i++) {
 
-                $key = $this->printfResult($keyFormat, $keyArr, $info[$i]);
-                $value = $this->printfResult($valueFormat, $valueArr, $info[$i]);
+                    // HTML Entities will be escaped on Client side.
+                    $key = $this->printfResult($keyFormat, $keyArr, $info[$i], false);
+                    $value = $this->printfResult($valueFormat, $valueArr, $info[$i], false);
 
-                if ($key == '' || $value == '') {
-                    continue; // if $key or $value is empty: skip
-                }
+                    if ($key == '' || $value == '') {
+                        continue; // if $key or $value is empty: skip
+                    }
 
-                $arr[] = [API_TYPEAHEAD_KEY => $key, API_TYPEAHEAD_VALUE => $value];
-            }
-        } else {
-            // Collect all attributes
-            foreach ($attr as $key) {
-                $value = isset($info[0][$key][0]) ? $info[0][$key][0] : '';
-                $arr[$key] = htmlentities($value);
+                    $arr[] = [API_TYPEAHEAD_KEY => $key, API_TYPEAHEAD_VALUE => $value];
+                }
+            } else {
+                // Collect all attributes
+                foreach ($attr as $key) {
+                    $value = isset($info[0][$key][0]) ? $info[0][$key][0] : '';
+                    $arr[$key] = $value;
+                }
             }
+            ldap_close($ds);
         }
-        ldap_close($ds);
 
         return $arr;
     }
@@ -188,12 +200,20 @@ class Ldap {
      * @throws CodeException
      * @throws UserFormException
      */
-    private function printfResult($format, array $keyArr, $infoElement) {
+    private function printfResult($format, array $keyArr, $infoElement, $doHtmlEntity = true) {
 
         $args = array($format);
 
         foreach ($keyArr as $key) {
-            $args[] = (isset($infoElement[$key][0])) ? htmlentities($infoElement[$key][0]) : '';
+            $val = '';
+
+            if (isset($infoElement[$key][0])) {
+                $val = $infoElement[$key][0];
+                if ($doHtmlEntity === true) {
+                    $val = htmlentities($val);
+                }
+            }
+            $args[] = $val;
         }
 
         return call_user_func_array('sprintf', $args);
diff --git a/extension/qfq/qfq/store/Config.php b/extension/qfq/qfq/store/Config.php
index 92316a589377b8913907fc80b3de88b18a18e03d..e340223a899fdec82da8bd43fd08a534e72f0dfc 100644
--- a/extension/qfq/qfq/store/Config.php
+++ b/extension/qfq/qfq/store/Config.php
@@ -55,6 +55,7 @@ class Config {
 
         // oldname > newname
         $setting = [
+            [SYSTEM_FORM_BS_COLUMNS, F_BS_COLUMNS],
             [SYSTEM_FORM_BS_LABEL_COLUMNS, F_BS_LABEL_COLUMNS],
             [SYSTEM_FORM_BS_INPUT_COLUMNS, F_BS_INPUT_COLUMNS],
             [SYSTEM_FORM_BS_NOTE_COLUMNS, F_BS_NOTE_COLUMNS],
diff --git a/extension/qfq/qfq/store/Store.php b/extension/qfq/qfq/store/Store.php
index c4bee36d3ad5a4cb9c01ee36ff4f464852be76dd..22c055792ba39530990d3ea4a4aaaf3af15937ee 100644
--- a/extension/qfq/qfq/store/Store.php
+++ b/extension/qfq/qfq/store/Store.php
@@ -190,6 +190,7 @@ class Store {
         // Defaults
         Support::setIfNotSet($config, SYSTEM_DATE_FORMAT, 'yyyy-mm-dd');
         Support::setIfNotSet($config, SYSTEM_SHOW_DEBUG_INFO, 'auto');
+        Support::setIfNotSet($config, F_BS_COLUMNS, '12');
         Support::setIfNotSet($config, F_BS_LABEL_COLUMNS, '3');
         Support::setIfNotSet($config, F_BS_INPUT_COLUMNS, '6');
         Support::setIfNotSet($config, F_BS_NOTE_COLUMNS, '3');
diff --git a/extension/qfq/tests/phpunit/StoreTest.php b/extension/qfq/tests/phpunit/StoreTest.php
index db105d1151e95a65d0d178f37acf19619775f7af..1e25f42b7508a9e58f183fd6a66e26fefdbc69ad 100644
--- a/extension/qfq/tests/phpunit/StoreTest.php
+++ b/extension/qfq/tests/phpunit/StoreTest.php
@@ -231,6 +231,7 @@ EOT;
             SYSTEM_SQL_LOG_MODE => 'modify',
             SYSTEM_DATE_FORMAT => 'yyyy-mm-dd',
             SYSTEM_SHOW_DEBUG_INFO => 'auto',
+            F_BS_COLUMNS => '12',
             F_BS_LABEL_COLUMNS => '3',
             F_BS_INPUT_COLUMNS => '6',
             F_BS_NOTE_COLUMNS => '3',
diff --git a/mockup/richtexteditor.html b/mockup/richtexteditor.html
index 1c08c978b33a19580cfa96ee4bec97a324994bee..6e7c3a3c4bb645b3d5079cb6e018605ee782d499 100644
--- a/mockup/richtexteditor.html
+++ b/mockup/richtexteditor.html
@@ -91,6 +91,19 @@
 
         </div>
 
+        <div class="form-group">
+            <div class="col-md-2">
+                <label for="text:4" class="control-label">Rich Text Editor (Codemirror)</label>
+            </div>
+
+            <div class="col-md-6">
+                <textarea id="text:4" class="qfq-tinymce" name="rte"
+                          data-config="{ &quot;plugins&quot;: [ &quot;codemirror&quot;], &quot;codemirror&quot;: {} }">Input
+                </textarea>
+            </div>
+
+        </div>
+
         <button type="submit">Do</button>
 
     </form>