diff --git a/bin/Controls/SimpleGoogleMaps.js b/bin/Controls/SimpleGoogleMaps.js
deleted file mode 100644
index 7efa92d83bdc5b019be47f17aaee2758aa3a0fa3..0000000000000000000000000000000000000000
--- a/bin/Controls/SimpleGoogleMaps.js
+++ /dev/null
@@ -1,51 +0,0 @@
-/**
- * QUIQQER Simple Google Map Control
- *
- * @author www.pcsg.de (Michael Danielczok)
- * @module Bricks\Controls\SimpleGoogleMaps
- *
- * @require qui/QUI
- * @require qui/controls/Control
- */
-define('package/quiqqer/bricks/bin/Controls/SimpleGoogleMaps', [
-
-    'qui/QUI',
-    'qui/controls/Control'
-
-], function (QUI, QUIControl)
-{
-    "use strict";
-
-    return new Class({
-
-        Extends: QUIControl,
-        Type   : 'Controls/SimpleGoogleMaps',
-
-        Binds: [
-            '$onImport'
-        ],
-
-        initialize: function (options)
-        {
-            this.parent(options);
-
-            this.mapWrapper = null;
-
-            this.addEvents({
-                onImport: this.$onImport
-            });
-        },
-
-        /**
-         * event : on import
-         */
-        $onImport: function ()
-        {
-            this.mapWrapper = document.getElement('.simpleGoogleMap-wrapper');
-
-            this.mapWrapper.addEvent('click', function() {
-                this.mapWrapper.addClass('simpleGoogleMap-hideWrapper');
-            }.bind(this));
-        }
-    });
-});
diff --git a/bin/Controls/Slider/PromoSliderSettings.css b/bin/Controls/Slider/PromoSliderSettings.css
index 8c43c135620ff63586ce6f3620b2fb03036e079b..2c5f1fca275c6e7edcb9e402f05f59f2cb0654c7 100644
--- a/bin/Controls/Slider/PromoSliderSettings.css
+++ b/bin/Controls/Slider/PromoSliderSettings.css
@@ -1,65 +1,8 @@
-.quiqqer-bricks-promoslider-settings {
-    position: relative;
+.quiqqer-bricks-promoslider-settings-entry-form table {
+    border: none;
 }
 
-.quiqqer-bricks-promoslider-settings-entry {
-    background: #f0f0f0;
-    border: 1px solid #ddd;
-    height: 100%;
-    left: 0;
-    overflow: auto;
-    opacity: 0;
-    position: absolute;
-    top: -50px;
-    width: 100%;
+.quiqqer-bricks-promoslider-settings-entry-form td {
+    padding-left: 0;
+    padding-right: 0;
 }
-
-.quiqqer-bricks-promoslider-settings-entry-header {
-    background: #e1e4e9;
-    clear: both;
-    float: left;
-    height: 30px;
-    width: 100%;
-}
-
-.quiqqer-bricks-promoslider-settings-entry-close {
-    cursor: pointer;
-    line-height: 30px;
-    position: absolute;
-    right: 0;
-    text-align: center;
-    top: 0;
-    width: 30px;
-}
-
-.quiqqer-bricks-promoslider-settings-entry-close:hover {
-    background: rgba(0, 0, 0, 0.1);
-}
-
-.quiqqer-bricks-promoslider-settings-entry-form {
-    clear: both;
-    float: left;
-    height: calc(100% - 100px);
-    margin-top: 10px;
-    overflow: auto;
-    padding: 0 10px 0 10px;
-    width: 100%;
-}
-
-.quiqqer-bricks-promoslider-settings-entry-form .field-container-field {
-    background: #fff;
-    max-width: none;
-}
-
-.quiqqer-bricks-promoslider-settings-entry-form .field-container-item {
-    width: 100px;
-}
-
-.quiqqer-bricks-promoslider-settings-entry-buttons {
-    clear: both;
-    float: left;
-    height: 50px;
-    padding: 10px 0;
-    text-align: center;
-    width: 100%;
-}
\ No newline at end of file
diff --git a/bin/Controls/Slider/PromosliderSettings.js b/bin/Controls/Slider/PromosliderSettings.js
index b738eb76b2178197623f35f7fb5920a8dab5d181..27e6e74e8a09c5cfdd4fd0bec9183efbe3a9cc32 100644
--- a/bin/Controls/Slider/PromosliderSettings.js
+++ b/bin/Controls/Slider/PromosliderSettings.js
@@ -3,17 +3,6 @@
  * @author www.pcsg.de (Henning Leutz)
  *
  * Inhaltseinstellung für Promoslider
- *
- * @require qui/QUI
- * @require qui/controls/Control
- * @require qui/controls/windows/Confirm
- * @require qui/controls/buttons/Button
- * @require Locale
- * @require Mustache
- * @require controls/grid/Grid
- * @require utils/Controls
- * @require text!package/quiqqer/bricks/bin/Controls/Slider/PromosliderSettingsEntry.html
- * @require css!package/quiqqer/bricks/bin/Controls/Slider/PromoSliderSettings.css
  */
 define('package/quiqqer/bricks/bin/Controls/Slider/PromosliderSettings', [
 
@@ -163,12 +152,12 @@ define('package/quiqqer/bricks/bin/Controls/Slider/PromosliderSettings', [
                     dataType : 'string',
                     width    : 300
                 }, {
-                    header   : QUILocale.get(lg, 'quiqqer.products.control.slidesettings.type'),
+                    header   : QUILocale.get(lg, 'quiqqer.bricks.promoslider.create.align'),
                     dataIndex: 'type',
                     dataType : 'string',
                     width    : 200
                 }, {
-                    header   : QUILocale.get(lg, 'quiqqer.products.control.slidesettings.url'),
+                    header   : QUILocale.get(lg, 'quiqqer.bricks.promoslider.create.url'),
                     dataIndex: 'url',
                     dataType : 'string',
                     width    : 300
@@ -176,10 +165,6 @@ define('package/quiqqer/bricks/bin/Controls/Slider/PromosliderSettings', [
                     dataIndex: 'image',
                     dataType : 'string',
                     hidden   : true
-                }, {
-                    header   : QUILocale.get(lg, 'quiqqer.products.control.slidesettings.text'),
-                    dataIndex: 'text',
-                    hidden   : true
                 }]
             });
 
@@ -188,19 +173,19 @@ define('package/quiqqer/bricks/bin/Controls/Slider/PromosliderSettings', [
                     var buttons = this.$Grid.getButtons(),
 
                         Edit    = buttons.filter(function (Btn) {
-                            return Btn.getAttribute('name') == 'edit';
+                            return Btn.getAttribute('name') === 'edit';
                         })[0],
 
                         Up      = buttons.filter(function (Btn) {
-                            return Btn.getAttribute('name') == 'up';
+                            return Btn.getAttribute('name') === 'up';
                         })[0],
 
                         Down    = buttons.filter(function (Btn) {
-                            return Btn.getAttribute('name') == 'down';
+                            return Btn.getAttribute('name') === 'down';
                         })[0],
 
                         Delete  = buttons.filter(function (Btn) {
-                            return Btn.getAttribute('name') == 'delete';
+                            return Btn.getAttribute('name') === 'delete';
                         })[0];
 
                     Up.enable();
@@ -220,7 +205,7 @@ define('package/quiqqer/bricks/bin/Controls/Slider/PromosliderSettings', [
             try {
                 this.$data = JSON.decode(this.$Input.value);
 
-                if (typeOf(this.$data) != 'array') {
+                if (typeOf(this.$data) !== 'array') {
                     this.$data = [];
                 }
 
@@ -273,6 +258,10 @@ define('package/quiqqer/bricks/bin/Controls/Slider/PromosliderSettings', [
                     insert.type = entry.type;
                 }
 
+                if ("url" in entry) {
+                    insert.url = entry.url;
+                }
+
                 data.push(insert);
             }
 
@@ -283,19 +272,19 @@ define('package/quiqqer/bricks/bin/Controls/Slider/PromosliderSettings', [
             var buttons = this.$Grid.getButtons(),
 
                 Edit    = buttons.filter(function (Btn) {
-                    return Btn.getAttribute('name') == 'edit';
+                    return Btn.getAttribute('name') === 'edit';
                 })[0],
 
                 Up      = buttons.filter(function (Btn) {
-                    return Btn.getAttribute('name') == 'up';
+                    return Btn.getAttribute('name') === 'up';
                 })[0],
 
                 Down    = buttons.filter(function (Btn) {
-                    return Btn.getAttribute('name') == 'down';
+                    return Btn.getAttribute('name') === 'down';
                 })[0],
 
                 Delete  = buttons.filter(function (Btn) {
-                    return Btn.getAttribute('name') == 'delete';
+                    return Btn.getAttribute('name') === 'delete';
                 })[0];
 
             Up.disable();
@@ -403,7 +392,7 @@ define('package/quiqqer/bricks/bin/Controls/Slider/PromosliderSettings', [
         del: function (index) {
             var newList = [];
 
-            if (typeOf(index) != 'array') {
+            if (typeOf(index) !== 'array') {
                 index = [index];
             }
 
@@ -427,7 +416,7 @@ define('package/quiqqer/bricks/bin/Controls/Slider/PromosliderSettings', [
             var controls = QUI.Controls.getControlsInElement(this.getElm());
 
             controls.each(function (Control) {
-                if (Control == this) {
+                if (Control === this) {
                     return;
                 }
 
@@ -449,7 +438,8 @@ define('package/quiqqer/bricks/bin/Controls/Slider/PromosliderSettings', [
                     image: gridData[i].image,
                     title: gridData[i].title,
                     text : gridData[i].text,
-                    type : gridData[i].type
+                    type : gridData[i].type,
+                    url  : gridData[i].url
                 });
             }
 
@@ -458,61 +448,8 @@ define('package/quiqqer/bricks/bin/Controls/Slider/PromosliderSettings', [
         },
 
         /**
-         * Open edit dialog
-         *
-         * @retrun {Promise}
+         * Dialogs
          */
-        $openEditDialog: function () {
-            var data  = this.$Grid.getSelectedData();
-            var index = this.$Grid.getSelectedIndices();
-
-            if (!data.length) {
-                return;
-            }
-
-            data  = data[0];
-            index = index[0];
-
-            return this.$createDialog().then(function (Container) {
-                var CloseButton = Container.getElement(
-                    '.quiqqer-bricks-promoslider-settings-entry-buttons button'
-                );
-
-                var Form        = Container.getElement('form');
-                var Image       = Form.elements.image;
-                var Title       = Form.elements.title;
-                var Description = Form.elements.description;
-                var Type        = Form.elements.type;
-                var Button      = QUI.Controls.getById(CloseButton.get('data-quiid'));
-
-                Button.addEvent('click', function () {
-                    this.edit(index, {
-                        image: Image.value,
-                        title: Title.value,
-                        text : Description.value,
-                        type : Type.value
-                    });
-
-                    moofx(Container).animate({
-                        opacity: 0,
-                        top    : -30
-                    }, {
-                        duration: 250,
-                        callback: function () {
-                            Container.destroy();
-                        }
-                    });
-                }.bind(this));
-
-                Image.value       = data.image;
-                Title.value       = data.title;
-                Description.value = data.text;
-                Type.value        = data.type;
-
-                Image.fireEvent('change');
-                Description.fireEvent('change');
-            }.bind(this));
-        },
 
         /**
          * opens the delete dialog
@@ -544,45 +481,107 @@ define('package/quiqqer/bricks/bin/Controls/Slider/PromosliderSettings', [
             }).open();
         },
 
+        /**
+         * Open edit dialog
+         *
+         * @retrun {Promise}
+         */
+        $openEditDialog: function () {
+            var self  = this,
+                data  = this.$Grid.getSelectedData(),
+                index = this.$Grid.getSelectedIndices();
+
+            if (!data.length) {
+                return Promise.resolve();
+            }
+
+            data  = data[0];
+            index = index[0];
+
+            return this.$createDialog().then(function (Dialog) {
+                Dialog.addEvent('onSubmit', function () {
+                    Dialog.Loader.show();
+
+                    var Content = Dialog.getContent();
+                    var Form    = Content.getElement('form');
+
+                    var Image       = Form.elements.image;
+                    var Title       = Form.elements.title;
+                    var Description = Form.elements.description;
+                    var Type        = Form.elements.type;
+                    var Url         = Form.elements.url;
+
+                    self.edit(index, {
+                        image: Image.value,
+                        title: Title.value,
+                        text : Description.value,
+                        type : Type.value,
+                        url  : Url.value
+                    });
+
+                    Dialog.close();
+                });
+
+
+                Dialog.addEvent('onOpenAfterCreate', function () {
+                    var Content = Dialog.getContent();
+                    var Form    = Content.getElement('form');
+
+                    var Image       = Form.elements.image;
+                    var Title       = Form.elements.title;
+                    var Description = Form.elements.description;
+                    var Type        = Form.elements.type;
+                    var Url         = Form.elements.url;
+
+                    Image.value       = data.image;
+                    Title.value       = data.title;
+                    Description.value = data.text;
+                    Type.value        = data.type;
+                    Url.value         = data.url;
+
+                    Image.fireEvent('change');
+                    Description.fireEvent('change');
+                });
+
+                Dialog.setAttribute('title', QUILocale.get(lg, 'quiqqer.bricks.promoslider.editialog.title'));
+                Dialog.open();
+            });
+        },
+
         /**
          * opens the add dialog
          *
          * @return {Promise}
          */
         $openAddDialog: function () {
-            return this.$createDialog().then(function (Container) {
-                var CloseButton = Container.getElement(
-                    '.quiqqer-bricks-promoslider-settings-entry-buttons button'
-                );
+            var self = this;
 
-                var Button = QUI.Controls.getById(CloseButton.get('data-quiid'));
+            return this.$createDialog().then(function (Dialog) {
+                Dialog.addEvent('onSubmit', function () {
+                    Dialog.Loader.show();
 
-                Button.addEvent('click', function () {
-                    var Form = Container.getElement('form');
+                    var Content = Dialog.getContent();
+                    var Form    = Content.getElement('form');
 
                     var Image       = Form.elements.image;
                     var Title       = Form.elements.title;
                     var Description = Form.elements.description;
                     var Type        = Form.elements.type;
+                    var Url         = Form.elements.url;
 
-                    this.add({
+                    self.add({
                         image: Image.value,
                         title: Title.value,
                         text : Description.value,
-                        type : Type.value
+                        type : Type.value,
+                        url  : Url.value
                     });
 
-                    moofx(Container).animate({
-                        opacity: 0,
-                        top    : -30
-                    }, {
-                        duration: 250,
-                        callback: function () {
-                            Container.destroy();
-                        }
-                    });
-                }.bind(this));
-            }.bind(this));
+                    Dialog.close();
+                });
+
+                Dialog.open();
+            });
         },
 
         /**
@@ -591,80 +590,72 @@ define('package/quiqqer/bricks/bin/Controls/Slider/PromosliderSettings', [
          * @return {Promise}
          */
         $createDialog: function () {
-            return new Promise(function (resolve) {
-                var Container = new Element('div', {
-                    html   : Mustache.render(templateEntry, {
-                        fieldImage      : QUILocale.get(lg, 'quiqqer.products.control.create.image'),
-                        fieldUrl        : QUILocale.get(lg, 'quiqqer.products.control.create.url'),
-                        fieldTitle      : QUILocale.get(lg, 'quiqqer.products.control.create.title'),
-                        fieldDescription: QUILocale.get(lg, 'quiqqer.products.control.create.text'),
-                        fieldType       : QUILocale.get(lg, 'quiqqer.products.control.create.align')
-                    }),
-                    'class': 'quiqqer-bricks-promoslider-settings-entry'
-                }).inject(this.getElm());
-
-                var Close = Container.getElement(
-                    '.quiqqer-bricks-promoslider-settings-entry-close'
-                );
-
-                var Buttons = Container.getElement(
-                    '.quiqqer-bricks-promoslider-settings-entry-buttons'
-                );
-
-                var Text = Container.getElement('.field-description');
-
-                Text.getParent().setStyles({
-                    height: 100
-                });
+            var self = this;
 
-                Close.addEvent('click', function () {
-                    moofx(Container).animate({
-                        opacity: 0,
-                        top    : -30
-                    }, {
-                        duration: 250,
-                        callback: function () {
-                            Container.destroy();
+            return new Promise(function (resolve) {
+                var Dialog = new QUIConfirm({
+                    title    : QUILocale.get(lg, 'quiqqer.bricks.promoslider.adddialog.title'),
+                    icon     : 'fa fa-edit',
+                    maxWidth : 800,
+                    maxHeight: 600,
+                    autoclose: false,
+                    events   : {
+                        onOpen: function (Win) {
+                            Win.Loader.show();
+                            Win.getContent().set('html', '');
+
+                            var Container = new Element('div', {
+                                html   : Mustache.render(templateEntry, {
+                                    fieldImage      : QUILocale.get(lg, 'quiqqer.bricks.promoslider.create.image'),
+                                    fieldUrl        : QUILocale.get(lg, 'quiqqer.bricks.promoslider.create.url'),
+                                    fieldTitle      : QUILocale.get(lg, 'quiqqer.bricks.promoslider.create.title'),
+                                    fieldDescription: QUILocale.get(lg, 'quiqqer.bricks.promoslider.create.text'),
+                                    fieldType       : QUILocale.get(lg, 'quiqqer.bricks.promoslider.create.align')
+                                }),
+                                'class': 'quiqqer-bricks-promoslider-settings-entry'
+                            }).inject(Win.getContent());
+
+                            var Text = Container.getElement('.field-description');
+
+                            Text.getParent().setStyles({
+                                height: 100
+                            });
+
+                            QUI.parse(Container).then(function () {
+                                return ControlsUtils.parse(Container);
+                            }).then(function () {
+                                var controls = QUI.Controls.getControlsInElement(Container),
+                                    project  = self.getAttribute('project');
+
+                                controls.each(function (Control) {
+                                    if (Control === self) {
+                                        return;
+                                    }
+
+                                    if ("setProject" in Control) {
+                                        Control.setProject(project);
+                                    }
+                                });
+
+                                Win.fireEvent('openAfterCreate', [Win]);
+
+                                moofx(Container).animate({
+                                    opacity: 1,
+                                    top    : 0
+                                }, {
+                                    duration: 250,
+                                    callback: function () {
+                                        resolve(Container);
+                                        Win.Loader.hide();
+                                    }
+                                });
+                            });
                         }
-                    });
-                });
-
-                new QUIButton({
-                    text  : QUILocale.get('quiqqer/system', 'accept'),
-                    styles: {
-                        'float': 'none'
                     }
-                }).inject(Buttons);
-
-
-                QUI.parse(Container).then(function () {
-                    return ControlsUtils.parse(Container);
-                }).then(function () {
-
-                    var controls = QUI.Controls.getControlsInElement(Container),
-                        project  = this.getAttribute('project');
-
-                    controls.each(function (Control) {
-                        if (Control == this) {
-                            return;
-                        }
+                });
 
-                        if ("setProject" in Control) {
-                            Control.setProject(project);
-                        }
-                    }.bind(this));
-
-                    moofx(Container).animate({
-                        opacity: 1,
-                        top    : 0
-                    }, {
-                        duration: 250,
-                        callback: function () {
-                            resolve(Container);
-                        }
-                    });
-                }.bind(this));
-            }.bind(this));
+                resolve(Dialog);
+            });
         }
     });
 });
diff --git a/bin/Controls/Slider/PromosliderSettingsEntry.html b/bin/Controls/Slider/PromosliderSettingsEntry.html
index 3a7bdec70d16389af1a4ceb2c632848b655c7d83..466a662003820da0ffa1588990242888c6328171 100644
--- a/bin/Controls/Slider/PromosliderSettingsEntry.html
+++ b/bin/Controls/Slider/PromosliderSettingsEntry.html
@@ -1,58 +1,65 @@
-<div class="quiqqer-bricks-promoslider-settings-entry-header">
-    <div class="quiqqer-bricks-promoslider-settings-entry-close">
-        <span class="fa fa-remove"></span>
-    </div>
-</div>
-
 <form name="quiqqer-bricks-promoslider-settings-entry"
       class="quiqqer-bricks-promoslider-settings-entry-form"
 >
-    <label class="field-container">
-        <span class="field-container-item">
-            {{fieldImage}}
-        </span>
-        <span class="field-container-field">
-            <input name="image" class="field-image media-image"/>
-        </span>
-    </label>
-
-    <label class="field-container">
-        <span class="field-container-item">
-            {{fieldUrl}}
-        </span>
-        <input name="url" class="field-container-field field-description"
-               data-qui="controls/projects/project/site/Input"
-        />
-    </label>
-
-    <label class="field-container">
-        <span class="field-container-item">
-            {{fieldTitle}}
-        </span>
-        <input name="title" class="field-container-field field-title"/>
-    </label>
-
-    <label class="field-container">
-        <span class="field-container-item">
-            {{fieldDescription}}
-        </span>
-        <input name="description" class="field-container-field field-description"
-               data-qui="controls/editors/Input"
-        />
-    </label>
-
-    <label class="field-container">
-        <span class="field-container-item">
-            {{fieldType}}
-        </span>
-        <select name="type" class="field-container-field field-type">
-            <option value="right">Text rechts platzieren</option>
-            <option value="left">Text links platzieren</option>
-        </select>
-    </label>
-
+    <table class="data-table data-table-flexbox">
+        <tbody>
+        <tr>
+            <td>
+                <label class="field-container">
+                    <span class="field-container-item">
+                        {{fieldImage}}
+                    </span>
+                    <input name="image" class="field-container-field media-image"/>
+                </label>
+            </td>
+        </tr>
+        <tr>
+            <td>
+                <label class="field-container">
+                    <span class="field-container-item">
+                        {{fieldUrl}}
+                    </span>
+                    <input name="url" class="field-container-field"
+                           data-qui="controls/projects/project/site/Input"
+                    />
+                </label>
+            </td>
+        </tr>
+        <tr>
+            <td>
+                <label class="field-container">
+                    <span class="field-container-item">
+                        {{fieldTitle}}
+                    </span>
+                    <input name="title" class="field-container-field"/>
+                </label>
+            </td>
+        </tr>
+        <tr>
+            <td>
+                <label class="field-container">
+                    <span class="field-container-item">
+                        {{fieldDescription}}
+                    </span>
+                    <input name="description" class="field-container-field field-description"
+                           data-qui="controls/editors/Input"
+                    />
+                </label>
+            </td>
+        </tr>
+        <tr>
+            <td>
+                <label class="field-container">
+                    <span class="field-container-item">
+                        {{fieldType}}
+                    </span>
+                    <select name="type" class="field-container-field field-type">
+                        <option value="right">Text rechts platzieren</option>
+                        <option value="left">Text links platzieren</option>
+                    </select>
+                </label>
+            </td>
+        </tr>
+        </tbody>
+    </table>
 </form>
-
-<div class="quiqqer-bricks-promoslider-settings-entry-buttons">
-
-</div>
\ No newline at end of file
diff --git a/bin/Controls/Slider/PromosliderSettingsOnlyContent.js b/bin/Controls/Slider/PromosliderSettingsOnlyContent.js
index f506265de23a3b98bbbb3cdb892c87906022dbd3..430b47231390ce14f4642b6c7e079a745eac2c78 100644
--- a/bin/Controls/Slider/PromosliderSettingsOnlyContent.js
+++ b/bin/Controls/Slider/PromosliderSettingsOnlyContent.js
@@ -3,17 +3,6 @@
  * @author www.pcsg.de (Henning Leutz)
  *
  * Wallpaper Slider mit zwei Inhaltsbereichen
- *
- * @require qui/QUI
- * @require qui/controls/Control
- * @require qui/controls/windows/Confirm
- * @require qui/controls/buttons/Button
- * @require Locale
- * @require Mustache
- * @require controls/grid/Grid
- * @require utils/Controls
- * @require text!package/quiqqer/bricks/bin/Controls/Slider/PromosliderSettingsOnlyContentEntry.html
- * @require css!package/quiqqer/bricks/bin/Controls/Slider/PromoSliderSettings.css
  */
 define('package/quiqqer/bricks/bin/Controls/Slider/PromosliderSettingsOnlyContent', [
 
@@ -185,19 +174,19 @@ define('package/quiqqer/bricks/bin/Controls/Slider/PromosliderSettingsOnlyConten
                     var buttons = this.$Grid.getButtons(),
 
                         Edit    = buttons.filter(function (Btn) {
-                            return Btn.getAttribute('name') == 'edit';
+                            return Btn.getAttribute('name') === 'edit';
                         })[0],
 
                         Up      = buttons.filter(function (Btn) {
-                            return Btn.getAttribute('name') == 'up';
+                            return Btn.getAttribute('name') === 'up';
                         })[0],
 
                         Down    = buttons.filter(function (Btn) {
-                            return Btn.getAttribute('name') == 'down';
+                            return Btn.getAttribute('name') === 'down';
                         })[0],
 
                         Delete  = buttons.filter(function (Btn) {
-                            return Btn.getAttribute('name') == 'delete';
+                            return Btn.getAttribute('name') === 'delete';
                         })[0];
 
                     Up.enable();
@@ -217,7 +206,7 @@ define('package/quiqqer/bricks/bin/Controls/Slider/PromosliderSettingsOnlyConten
             try {
                 this.$data = JSON.decode(this.$Input.value);
 
-                if (typeOf(this.$data) != 'array') {
+                if (typeOf(this.$data) !== 'array') {
                     this.$data = [];
                 }
 
@@ -284,19 +273,19 @@ define('package/quiqqer/bricks/bin/Controls/Slider/PromosliderSettingsOnlyConten
             var buttons = this.$Grid.getButtons(),
 
                 Edit    = buttons.filter(function (Btn) {
-                    return Btn.getAttribute('name') == 'edit';
+                    return Btn.getAttribute('name') === 'edit';
                 })[0],
 
                 Up      = buttons.filter(function (Btn) {
-                    return Btn.getAttribute('name') == 'up';
+                    return Btn.getAttribute('name') === 'up';
                 })[0],
 
                 Down    = buttons.filter(function (Btn) {
-                    return Btn.getAttribute('name') == 'down';
+                    return Btn.getAttribute('name') === 'down';
                 })[0],
 
                 Delete  = buttons.filter(function (Btn) {
-                    return Btn.getAttribute('name') == 'delete';
+                    return Btn.getAttribute('name') === 'delete';
                 })[0];
 
             Up.disable();
@@ -385,7 +374,7 @@ define('package/quiqqer/bricks/bin/Controls/Slider/PromosliderSettingsOnlyConten
         del: function (index) {
             var newList = [];
 
-            if (typeOf(index) != 'array') {
+            if (typeOf(index) !== 'array') {
                 index = [index];
             }
 
@@ -409,7 +398,7 @@ define('package/quiqqer/bricks/bin/Controls/Slider/PromosliderSettingsOnlyConten
             var controls = QUI.Controls.getControlsInElement(this.getElm());
 
             controls.each(function (Control) {
-                if (Control == this) {
+                if (Control === this) {
                     return;
                 }
 
@@ -420,56 +409,8 @@ define('package/quiqqer/bricks/bin/Controls/Slider/PromosliderSettingsOnlyConten
         },
 
         /**
-         * Open edit dialog
-         *
-         * @retrun {Promise}
+         * Dialogs
          */
-        $openEditDialog: function () {
-            var data  = this.$Grid.getSelectedData();
-            var index = this.$Grid.getSelectedIndices();
-
-            if (!data.length) {
-                return;
-            }
-
-            data  = data[0];
-            index = index[0];
-
-            return this.$createDialog().then(function (Container) {
-                var CloseButton = Container.getElement(
-                    '.quiqqer-bricks-promoslider-settings-entry-buttons button'
-                );
-
-                var Button = QUI.Controls.getById(CloseButton.get('data-quiid'));
-                var Form   = Container.getElement('form');
-
-                var Left  = Form.elements.left;
-                var Right = Form.elements.right;
-                var Image = Form.elements.image;
-                var Url   = Form.elements.url;
-
-                Button.addEvent('click', function () {
-                    this.edit(index, Left.value, Right.value, Image.value, Url.value);
-
-                    moofx(Container).animate({
-                        opacity: 0,
-                        top    : -30
-                    }, {
-                        duration: 250,
-                        callback: function () {
-                            Container.destroy();
-                        }
-                    });
-                }.bind(this));
-
-                Left.value  = data.left;
-                Right.value = data.right;
-                Image.value = data.image;
-                Url.value   = data.url;
-
-                Image.fireEvent('change');
-            }.bind(this));
-        },
 
         /**
          * opens the delete dialog
@@ -501,39 +442,88 @@ define('package/quiqqer/bricks/bin/Controls/Slider/PromosliderSettingsOnlyConten
             }).open();
         },
 
+        /**
+         * Open edit dialog
+         *
+         * @retrun {Promise}
+         */
+        $openEditDialog: function () {
+            var self  = this,
+                data  = this.$Grid.getSelectedData(),
+                index = this.$Grid.getSelectedIndices();
+
+            if (!data.length) {
+                return Promise.resolve();
+            }
+
+            data  = data[0];
+            index = index[0];
+
+            return this.$createDialog().then(function (Dialog) {
+                Dialog.addEvent('onOpenAfterCreate', function () {
+                    var Content = Dialog.getContent();
+                    var Form    = Content.getElement('form');
+
+                    var Left  = Form.elements.left;
+                    var Right = Form.elements.right;
+                    var Image = Form.elements.image;
+                    var Url   = Form.elements.url;
+
+                    Left.value  = data.left;
+                    Right.value = data.right;
+                    Image.value = data.image;
+                    Url.value   = data.url;
+
+                    Image.fireEvent('change');
+                });
+
+                Dialog.addEvent('onSubmit', function () {
+                    Dialog.Loader.show();
+
+                    var Content = Dialog.getContent();
+                    var Form    = Content.getElement('form');
+
+                    var Left  = Form.elements.left;
+                    var Right = Form.elements.right;
+                    var Image = Form.elements.image;
+                    var Url   = Form.elements.url;
+
+                    self.edit(index, Left.value, Right.value, Image.value, Url.value);
+
+                    Dialog.close();
+                });
+
+                Dialog.setAttribute('title', QUILocale.get(lg, 'quiqqer.bricks.promoslider.editialog.title'));
+                Dialog.open();
+            });
+        },
+
         /**
          *
          * @returns {Promise}
          */
         $openAddDialog: function () {
-            return this.$createDialog().then(function (Container) {
-                var CloseButton = Container.getElement(
-                    '.quiqqer-bricks-promoslider-settings-entry-buttons button'
-                );
+            var self = this;
 
-                var Button = QUI.Controls.getById(CloseButton.get('data-quiid'));
+            return this.$createDialog().then(function (Dialog) {
+                Dialog.addEvent('onSubmit', function () {
+                    Dialog.Loader.show();
 
-                Button.addEvent('click', function () {
-                    var Form = Container.getElement('form');
+                    var Content = Dialog.getContent();
+                    var Form    = Content.getElement('form');
 
                     var Left  = Form.elements.left;
                     var Right = Form.elements.right;
                     var Image = Form.elements.image;
                     var Url   = Form.elements.url;
 
-                    this.add(Left.value, Right.value, Image.value, Url.value);
+                    self.add(Left.value, Right.value, Image.value, Url.value);
 
-                    moofx(Container).animate({
-                        opacity: 0,
-                        top    : -30
-                    }, {
-                        duration: 250,
-                        callback: function () {
-                            Container.destroy();
-                        }
-                    });
-                }.bind(this));
-            }.bind(this));
+                    Dialog.close();
+                });
+
+                Dialog.open();
+            });
         },
 
         /**
@@ -542,79 +532,74 @@ define('package/quiqqer/bricks/bin/Controls/Slider/PromosliderSettingsOnlyConten
          * @return {Promise}
          */
         $createDialog: function () {
-            return new Promise(function (resolve) {
-                var Container = new Element('div', {
-                    html   : Mustache.render(templateEntry, {
-                        fieldImage: QUILocale.get(lg, 'quiqqer.products.control.promoslider.image'),
-                        fieldUrl  : QUILocale.get(lg, 'quiqqer.products.control.promoslider.url'),
-                        fieldLeft : QUILocale.get(lg, 'quiqqer.products.control.promoslider.left'),
-                        fieldRight: QUILocale.get(lg, 'quiqqer.products.control.promoslider.right')
-                    }),
-                    'class': 'quiqqer-bricks-promoslider-settings-entry'
-                }).inject(this.getElm());
-
-                var Close = Container.getElement(
-                    '.quiqqer-bricks-promoslider-settings-entry-close'
-                );
-
-                var Buttons = Container.getElement(
-                    '.quiqqer-bricks-promoslider-settings-entry-buttons'
-                );
-
-                var Text = Container.getElement('.field-description');
-
-                Text.getParent().setStyles({
-                    height: 100
-                });
+            var self = this;
 
-                Close.addEvent('click', function () {
-                    moofx(Container).animate({
-                        opacity: 0,
-                        top    : -30
-                    }, {
-                        duration: 250,
-                        callback: function () {
-                            Container.destroy();
+            return new Promise(function (resolve) {
+                var Dialog = new QUIConfirm({
+                    title    : QUILocale.get(lg, 'quiqqer.bricks.promoslider.adddialog.title'),
+                    icon     : 'fa fa-edit',
+                    maxWidth : 800,
+                    maxHeight: 600,
+                    autoclose: false,
+                    events   : {
+                        onOpen: function (Win) {
+                            Win.Loader.show();
+                            Win.getContent().set('html', '');
+
+                            var Container = new Element('div', {
+                                html   : Mustache.render(templateEntry, {
+                                    fieldImage      : QUILocale.get(lg, 'quiqqer.bricks.promoslider.create.image'),
+                                    fieldUrl        : QUILocale.get(lg, 'quiqqer.bricks.promoslider.create.url'),
+                                    fieldTitle      : QUILocale.get(lg, 'quiqqer.bricks.promoslider.create.title'),
+                                    fieldDescription: QUILocale.get(lg, 'quiqqer.bricks.promoslider.create.text'),
+                                    fieldType       : QUILocale.get(lg, 'quiqqer.bricks.promoslider.create.align'),
+                                    fieldLeft       : QUILocale.get(lg, 'quiqqer.products.control.promoslider.left'),
+                                    fieldRight      : QUILocale.get(lg, 'quiqqer.products.control.promoslider.right')
+                                }),
+                                'class': 'quiqqer-bricks-promoslider-settings-entry'
+                            }).inject(Win.getContent());
+
+                            var Text = Container.getElement('.field-description');
+
+                            Text.getParent().setStyles({
+                                height: 100
+                            });
+
+                            QUI.parse(Container).then(function () {
+                                return ControlsUtils.parse(Container);
+                            }).then(function () {
+                                var controls = QUI.Controls.getControlsInElement(Container),
+                                    project  = self.getAttribute('project');
+
+                                controls.each(function (Control) {
+                                    if (Control === self) {
+                                        return;
+                                    }
+
+                                    if ("setProject" in Control) {
+                                        Control.setProject(project);
+                                    }
+                                });
+
+                                Win.fireEvent('openAfterCreate', [Win]);
+
+                                moofx(Container).animate({
+                                    opacity: 1,
+                                    top    : 0
+                                }, {
+                                    duration: 250,
+                                    callback: function () {
+                                        resolve(Container);
+                                        Win.Loader.hide();
+                                    }
+                                });
+                            });
                         }
-                    });
-                });
-
-                new QUIButton({
-                    text  : QUILocale.get('quiqqer/system', 'accept'),
-                    styles: {
-                        'float': 'none'
                     }
-                }).inject(Buttons);
-
-
-                QUI.parse(Container).then(function () {
-                    return ControlsUtils.parse(Container);
-                }).then(function () {
-
-                    var controls = QUI.Controls.getControlsInElement(Container),
-                        project  = this.getAttribute('project');
-
-                    controls.each(function (Control) {
-                        if (Control == this) {
-                            return;
-                        }
+                });
 
-                        if ("setProject" in Control) {
-                            Control.setProject(project);
-                        }
-                    }.bind(this));
-
-                    moofx(Container).animate({
-                        opacity: 1,
-                        top    : 0
-                    }, {
-                        duration: 250,
-                        callback: function () {
-                            resolve(Container);
-                        }
-                    });
-                }.bind(this));
-            }.bind(this));
+                resolve(Dialog);
+            });
         }
     });
 });
\ No newline at end of file
diff --git a/bin/Controls/Slider/PromosliderSettingsOnlyContentEntry.html b/bin/Controls/Slider/PromosliderSettingsOnlyContentEntry.html
index d83394116f82d12efefd137f61ec4cd645827483..912d226ca362b08b3fcba3b99246106b0787448d 100644
--- a/bin/Controls/Slider/PromosliderSettingsOnlyContentEntry.html
+++ b/bin/Controls/Slider/PromosliderSettingsOnlyContentEntry.html
@@ -1,47 +1,53 @@
-<div class="quiqqer-bricks-promoslider-settings-entry-header">
-    <div class="quiqqer-bricks-promoslider-settings-entry-close">
-        <span class="fa fa-remove"></span>
-    </div>
-</div>
-
 <form name="quiqqer-bricks-promoslider-settings-entry"
       class="quiqqer-bricks-promoslider-settings-entry-form"
 >
-    <label class="field-container">
-        <span class="field-container-item">
-            {{fieldImage}}
-        </span>
-        <span class="field-container-field">
-            <input name="image" class="field-image media-image"/>
-        </span>
-    </label>
-
-    <label class="field-container">
-        <span class="field-container-item">
-            {{fieldUrl}}
-        </span>
-        <span class="field-container-field">
-            <input name="url" data-qui="controls/projects/project/site/Input"/>
-        </span>
-    </label>
-
-    <label class="field-container">
-        <span class="field-container-item">
-            {{fieldLeft}}
-        </span>
-        <input name="left" class="field-container-field field-description"
-               data-qui="controls/editors/Input"
-        />
-    </label>
-
-    <label class="field-container">
-        <span class="field-container-item">
-            {{fieldRight}}
-        </span>
-        <input name="right" class="field-container-field field-description"
-               data-qui="controls/editors/Input"
-        />
-    </label>
+    <table class="data-table data-table-flexbox">
+        <tbody>
+        <tr>
+            <td>
+                <label class="field-container">
+                    <span class="field-container-item">
+                        {{fieldImage}}
+                    </span>
+                    <input name="image" class="field-container-field field-image media-image"/>
+                </label>
+            </td>
+        </tr>
+        <tr>
+            <td>
+                <label class="field-container">
+                    <span class="field-container-item">
+                        {{fieldUrl}}
+                    </span>
+                    <input name="url" class="field-container-field"
+                           data-qui="controls/projects/project/site/Input"/>
+                </label>
+            </td>
+        </tr>
+        <tr>
+            <td>
+                <label class="field-container">
+                    <span class="field-container-item">
+                        {{fieldLeft}}
+                    </span>
+                    <input name="left" class="field-container-field field-description"
+                           data-qui="controls/editors/Input"
+                    />
+                </label>
+            </td>
+        </tr>
+        <tr>
+            <td>
+                <label class="field-container">
+                    <span class="field-container-item">
+                        {{fieldRight}}
+                    </span>
+                    <input name="right" class="field-container-field field-description"
+                           data-qui="controls/editors/Input"
+                    />
+                </label>
+            </td>
+        </tr>
+        </tbody>
+    </table>
 </form>
-
-<div class="quiqqer-bricks-promoslider-settings-entry-buttons"></div>
\ No newline at end of file
diff --git a/bin/Controls/Slider/PromosliderWallpaper.js b/bin/Controls/Slider/PromosliderWallpaper.js
index c32071ae6e40f83e5bfb00a4153616aef495e4a9..57d61174271e9b5248f659cb8941f38b72b07dc3 100644
--- a/bin/Controls/Slider/PromosliderWallpaper.js
+++ b/bin/Controls/Slider/PromosliderWallpaper.js
@@ -10,9 +10,10 @@
 define('package/quiqqer/bricks/bin/Controls/Slider/PromosliderWallpaper', [
 
     'qui/QUI',
-    'qui/controls/Control'
+    'qui/controls/Control',
+    'qui/controls/loader/Loader'
 
-], function (QUI, QUIControl) {
+], function (QUI, QUIControl, QUILoader) {
     "use strict";
 
     return new Class({
@@ -45,6 +46,8 @@ define('package/quiqqer/bricks/bin/Controls/Slider/PromosliderWallpaper', [
         initialize: function (options) {
             this.parent(options);
 
+            this.Loader = new QUILoader();
+
             this.$Container = null;
             this.$Next      = null;
             this.$Previous  = null;
@@ -89,6 +92,8 @@ define('package/quiqqer/bricks/bin/Controls/Slider/PromosliderWallpaper', [
                 duration: 250
             });
 
+            this.Loader.inject(this.getElm());
+
             // create dots
             this.$refreshDots();
             this.$calcMaxScroll();
@@ -304,16 +309,17 @@ define('package/quiqqer/bricks/bin/Controls/Slider/PromosliderWallpaper', [
 
             // click events
             this.$Container.getElements("li[data-url]").each(function (LiElement) {
-                if (LiElement.get('data-url') === '') {
-                    return;
-                }
 
-                LiElement.setStyle('cursor', 'pointer');
-                LiElement.addEvent('click', function () {
-                    if (QUI.isScrolling() === false) {
-                        window.location = this.get('data-url');
-                    }
-                });
+                // if (LiElement.get('data-url') === '') {
+                //     return;
+                // }
+                //
+                // LiElement.setStyle('cursor', 'pointer');
+                // LiElement.addEvent('click', function () {
+                //     if (QUI.isScrolling() === false) {
+                //         window.location = this.get('data-url');
+                //     }
+                // });
             });
 
 
@@ -344,9 +350,12 @@ define('package/quiqqer/bricks/bin/Controls/Slider/PromosliderWallpaper', [
                 // bei mobilen geräten die bilder und slides laden
                 var lis = this.$List.getElements('li');
 
-                for (i = 1, len = lis.length; i < len; i++) {
+                for (i = 0, len = lis.length; i < len; i++) {
                     this.$showSheet(i);
                 }
+            } else {
+                // load first image
+                this.$showSheet(0);
             }
 
             // select first dot
@@ -591,24 +600,39 @@ define('package/quiqqer/bricks/bin/Controls/Slider/PromosliderWallpaper', [
                 return;
             }
 
-            var Background = Slide.getElement('.quiqqer-bricks-promoslider-wallpaper-image');
-            var display    = Background.getStyle('display');
+            var self       = this,
+                Background = Slide.getElement('.quiqqer-bricks-promoslider-wallpaper-image'),
+                display    = Background.getStyle('display'),
+                image      = Slide.get('data-url');
 
             if (display !== 'none') {
                 return;
             }
 
+            if (!Background.get('background-url')) {
+                var ending = image.substr(image.lastIndexOf('.'));
+                var split  = image.substr(0, image.lastIndexOf('.')).split('__')[0];
+                var width  = parseInt(this.getElm().getSize().x);
+
+                image = split + '__' + width + ending;
+            }
+
             Background.setStyle('opacity', 0);
-            Background.setStyle('display', null);
 
-            var image = Background.getStyle('background-image').slice(4, -1).replace(/"/g, "");
+            this.Loader.show();
 
             require(['image!' + image], function () {
+                Background.setStyle('display', null);
+                Background.setStyle('background-image', "url('" + image + "')");
+
+                self.Loader.hide();
+
                 // loaded
                 moofx(Background).animate({
                     opacity: 1
                 });
             }, function () {
+                self.Loader.hide();
             });
         },
 
diff --git a/bin/guides/General.js b/bin/guides/General.js
index 2bbf8a90b5746575c73979f55239c5b098febc07..51bb8700b55897162be41eae9588e214989db4ff 100644
--- a/bin/guides/General.js
+++ b/bin/guides/General.js
@@ -63,6 +63,9 @@ define('package/quiqqer/bricks/bin/guides/General', [
     Bricks.addStep({
         title   : QUILocale.get(lg, 'tour.general.bricks.Step1.Title'),
         text    : QUILocale.get(lg, 'tour.general.bricks.Step2.Text'),
+        tetherOptions: {
+            constraints: null // this disables pinning (which breaks the arrows)
+        },
         buttons : false,
         attachTo: {
             element: function () {
@@ -244,7 +247,7 @@ define('package/quiqqer/bricks/bin/guides/General', [
             element: function () {
                 return BrickSettings.getElm().getElement('[name="information"]')
             },
-            on     : 'right'
+            on     : 'left'
         },
         buttons : {
             text  : QUILocale.get(lg, 'tour.general.bricks.Button.Weiter'),
@@ -262,7 +265,7 @@ define('package/quiqqer/bricks/bin/guides/General', [
             element: function () {
                 return BrickSettings.getElm().getElement('[name="settings"]')
             },
-            on     : 'right'
+            on     : 'left'
         },
         buttons : {
             text  : QUILocale.get(lg, 'tour.general.bricks.Button.Weiter'),
@@ -394,7 +397,7 @@ define('package/quiqqer/bricks/bin/guides/General', [
             element: function () {
                 return BrickSettings.getElm().getElement('[name="extra"]')
             },
-            on     : 'right'
+            on     : 'left'
         },
         buttons : {
             text  : QUILocale.get(lg, 'tour.general.bricks.Button.Weiter'),
@@ -417,7 +420,7 @@ define('package/quiqqer/bricks/bin/guides/General', [
             element: function () {
                 return BrickSettings.getElm().getElement('[name="content"]')
             },
-            on     : 'right'
+            on     : 'left'
         },
         buttons : {
             text  : QUILocale.get(lg, 'tour.general.bricks.Button.Weiter'),
@@ -502,10 +505,10 @@ define('package/quiqqer/bricks/bin/guides/General', [
                         Panel.openProject();
 
                         PanelUtils.openSitePanel(projectName, projectLang, 1)
-                                  .then(function (CreatedPanel) {
-                                      SitePanel = CreatedPanel;
-                                      Bricks.next.delay(500);
-                                  });
+                            .then(function (CreatedPanel) {
+                                SitePanel = CreatedPanel;
+                                Bricks.next.delay(500);
+                            });
                     });
                 });
             }
@@ -519,7 +522,7 @@ define('package/quiqqer/bricks/bin/guides/General', [
             element: function () {
                 return SitePanel.getElm().getElement('[name="quiqqer.bricks"]');
             },
-            on     : 'right'
+            on     : 'left'
         },
         buttons : {
             text  : QUILocale.get(lg, 'tour.general.bricks.Button.Weiter'),
@@ -599,21 +602,21 @@ define('package/quiqqer/bricks/bin/guides/General', [
             on     : 'right'
         },
         buttons : false,
-            // {
-            // text  : QUILocale.get(lg, 'tour.general.bricks.Button.Weiter'),
-            // action: function () {
-            //     //console.log(document.getElements('.qui-window-popup.box .qui-window-popup-content.box .qui-elements-list-item.smooth')[0]);
-            //     //document.getElements('.qui-window-popup.box .qui-window-popup-content.box .qui-elements-list-item.smooth')[0].fireEvent('click');
-            //     var list = QUI.Controls.getByType('qui/controls/elements/List');
-            //     console.log(list);
-            //     list = list[list.length-1];
-            //     console.log(list);
-            //     var entries  = list.getElm().getChildren();
-            //     var entry = entries[entries.length - 1];
-            //     console.log(entry);
-            //     entry.click();            //Das funktioniert leider nicht die entries haben keine click funktion
-            //     Bricks.next.delay(1000);
-            // }
+        // {
+        // text  : QUILocale.get(lg, 'tour.general.bricks.Button.Weiter'),
+        // action: function () {
+        //     //console.log(document.getElements('.qui-window-popup.box .qui-window-popup-content.box .qui-elements-list-item.smooth')[0]);
+        //     //document.getElements('.qui-window-popup.box .qui-window-popup-content.box .qui-elements-list-item.smooth')[0].fireEvent('click');
+        //     var list = QUI.Controls.getByType('qui/controls/elements/List');
+        //     console.log(list);
+        //     list = list[list.length-1];
+        //     console.log(list);
+        //     var entries  = list.getElm().getChildren();
+        //     var entry = entries[entries.length - 1];
+        //     console.log(entry);
+        //     entry.click();            //Das funktioniert leider nicht die entries haben keine click funktion
+        //     Bricks.next.delay(1000);
+        // }
         // },
         when    : {
             show: function () {
diff --git a/bin/images/Gitlab.jpg b/bin/images/Gitlab.jpg
old mode 100755
new mode 100644
diff --git a/bin/images/Logo.jpg b/bin/images/Logo.jpg
old mode 100755
new mode 100644
diff --git a/bin/images/Readme.jpg b/bin/images/Readme.jpg
old mode 100755
new mode 100644
diff --git a/bricks.xml b/bricks.xml
index 5f13cedd963d14c9373df47164a850129e10ea45..b8f59a7d497c5bfe92f900a110a3475a83f6fbc2 100644
--- a/bricks.xml
+++ b/bricks.xml
@@ -84,7 +84,7 @@
                     <locale group="quiqqer/bricks" var="brick.control.setting.order"/>
 
                     <option value=""/>
-                    <option value="name ASC">
+                    <option value="name ASC" selected="selected">
                         <locale group="quiqqer/system" var="name_asc"/>
                     </option>
                     <option value="name DESC">
@@ -968,8 +968,8 @@
                     <option value="authorTop">
                         <locale group="quiqqer/bricks" var="brick.listTemplate.authorTop"/>
                     </option>
-                    <option value="grid3x3">
-                        <locale group="quiqqer/bricks" var="brick.listTemplate.grid3x3"/>
+                    <option value="cardRows">
+                        <locale group="quiqqer/bricks" var="brick.listTemplate.cardRows"/>
                     </option>
                 </setting>
 
diff --git a/composer.json b/composer.json
index 8941665ec56ea03da02a2b57b69200834bc8384a..c5e573cc7a5f5a1d194ee3f6df9b91b705f6cbc7 100644
--- a/composer.json
+++ b/composer.json
@@ -3,7 +3,7 @@
   "type": "quiqqer-module",
   "description": "The brick system allows you to design your website according to your wishes. You can quickly move, create, or remove bricks to different places in the template.",
   "version": "dev-master",
-  "license": "",
+  "license": "GPL-3.0+",
   "authors": [
     {
       "name": "Henning Leutz",
diff --git a/locale.xml b/locale.xml
index af1e349612c7ca20e4240a0e2858e102e0e2e9f2..a06d82115be9f9262a9d4af2749754d56c893851 100644
--- a/locale.xml
+++ b/locale.xml
@@ -684,23 +684,35 @@ M&ouml;chten Sie die Bausteine aus der Bausteinzone entfernen?</p>]]></de>
             <en><![CDATA[The slide can not be restored]]></en>
         </locale>
 
-        <locale name="quiqqer.products.control.create.image">
+        <locale name="quiqqer.bricks.promoslider.create.image">
             <de><![CDATA[Bild]]></de>
             <en><![CDATA[Image]]></en>
         </locale>
-        <locale name="quiqqer.products.control.create.title">
+        <locale name="quiqqer.bricks.promoslider.create.url">
+            <de><![CDATA[URL]]></de>
+            <en><![CDATA[URL]]></en>
+        </locale>
+        <locale name="quiqqer.bricks.promoslider.create.title">
             <de><![CDATA[Titel]]></de>
             <en><![CDATA[Title]]></en>
         </locale>
-        <locale name="quiqqer.products.control.create.text">
+        <locale name="quiqqer.bricks.promoslider.create.text">
             <de><![CDATA[Text]]></de>
             <en><![CDATA[Text]]></en>
         </locale>
-        <locale name="quiqqer.products.control.create.align">
+        <locale name="quiqqer.bricks.promoslider.create.align">
             <de><![CDATA[Ausrichtung]]></de>
             <en><![CDATA[Align]]></en>
         </locale>
 
+        <locale name="quiqqer.bricks.promoslider.adddialog.title">
+            <de><![CDATA[Slide erstellen]]></de>
+            <en><![CDATA[Add Slide]]></en>
+        </locale>
+        <locale name="quiqqer.bricks.promoslider.editialog.title">
+            <de><![CDATA[Slide bearbieten]]></de>
+            <en><![CDATA[Edit Slide]]></en>
+        </locale>
     </groups>
     <groups name="quiqqer/bricks" datatype="js,php">
         <locale name="brick.control.navigation.setting.content">
@@ -788,44 +800,48 @@ M&ouml;chten Sie die Bausteine aus der Bausteinzone entfernen?</p>]]></de>
         <locale name="brick.control.simplegooglemaps.title">
             <de><![CDATA[Bausteine: Einfache Google Maps Karte]]></de>
             <en><![CDATA[Bricks: Simple Google Maps]]></en>
+            <pl><![CDATA[Bricks: Simple Google Maps]]></pl>
         </locale>
         <locale name="brick.control.simplegooglemaps.description">
             <de><![CDATA[Einstellungen für Karten]]></de>
             <en><![CDATA[Maps settings]]></en>
-        </locale>
-        <locale name="brick.control.simplegooglemaps.clickToActivate">
-            <de><![CDATA[Zum Aktivieren klicken]]></de>
-            <en><![CDATA[Click to activate]]></en>
-            <pl><![CDATA[Kliknij, zeby aktywowac]]></pl>
+            <pl><![CDATA[Ustawienia mapy]]></pl>
         </locale>
 
         <locale name="brick.control.simplegooglemaps.settings.place">
             <de><![CDATA[Google Place]]></de>
             <en><![CDATA[Google Place]]></en>
+            <pl><![CDATA[Google Place]]></pl>
         </locale>
         <locale name="brick.control.simplegooglemaps.settings.title">
             <de><![CDATA[Title]]></de>
             <en><![CDATA[Title]]></en>
+            <pl><![CDATA[Tytuł]]></pl>
         </locale>
         <locale name="brick.control.simplegooglemaps.settings.street">
             <de><![CDATA[Straße]]></de>
             <en><![CDATA[Street]]></en>
+            <pl><![CDATA[Ulica]]></pl>
         </locale>
         <locale name="brick.control.simplegooglemaps.settings.zip">
             <de><![CDATA[PLZ]]></de>
             <en><![CDATA[ZIP code]]></en>
+            <pl><![CDATA[Kod pocztowy]]></pl>
         </locale>
         <locale name="brick.control.simplegooglemaps.settings.city">
             <de><![CDATA[Stadt]]></de>
             <en><![CDATA[City]]></en>
+            <pl><![CDATA[Miejscowość]]></pl>
         </locale>
         <locale name="brick.control.simplegooglemaps.settings.zoom">
             <de><![CDATA[Zoom]]></de>
             <en><![CDATA[Zoom]]></en>
+            <pl><![CDATA[Zoom]]></pl>
         </locale>
         <locale name="brick.control.simplegooglemaps.settings.api">
             <de><![CDATA[API Key]]></de>
             <en><![CDATA[API Key]]></en>
+            <pl><![CDATA[Klucz API]]></pl>
         </locale>
 
         <!-- Box Content -->
@@ -935,6 +951,11 @@ M&ouml;chten Sie die Bausteine aus der Bausteinzone entfernen?</p>]]></de>
             <en><![CDATA[Author and date top]]></en>
             <pl><![CDATA[Autor i data na górze]]></pl>
         </locale>
+        <locale name="brick.listTemplate.cardRows">
+            <de><![CDATA[Cards]]></de>
+            <en><![CDATA[Cards]]></en>
+            <pl><![CDATA[Cards]]></pl>
+        </locale>
 
 
         <!-- max siten -->
diff --git a/package.xml b/package.xml
new file mode 100644
index 0000000000000000000000000000000000000000..101452d90a0822f1b6bbcc179b3506ef4c6b23fb
--- /dev/null
+++ b/package.xml
@@ -0,0 +1,27 @@
+<quiqqer>
+    <package>
+        <title>
+            <locale group="quiqqer/bricks" var="package.title"/>
+        </title>
+
+        <description>
+            <locale group="quiqqer/bricks" var="package.description"/>
+        </description>
+
+        <support>
+            <email>support@pcsg.de</email>
+            <forum>https://community.quiqqer.com</forum>
+            <source>https://dev.quiqqer.com/quiqqer/package-bricks</source>
+            <issues>https://dev.quiqqer.com/quiqqer/package-bricks/issues</issues>
+            <wiki>https://dev.quiqqer.com/quiqqer/package-bricks/wikis/home</wiki>
+        </support>
+
+        <image src="URL_OPT_DIR/quiqqer/package-bricks/bin/images/Logo.jpg"/>
+
+        <copyright>
+            <name><![CDATA[PCSG - Computer & Internet Service OHG]]></name>
+            <license>GPL-3.0+</license>
+        </copyright>
+
+    </package>
+</quiqqer>
\ No newline at end of file
diff --git a/src/QUI/Bricks/Controls/SimpleGoogleMaps.css b/src/QUI/Bricks/Controls/SimpleGoogleMaps.css
index 202f8e7b906330ee00374d1806b90e0c6053237c..0020072d0e17d2054bfe5f863fe87711081ffb30 100644
--- a/src/QUI/Bricks/Controls/SimpleGoogleMaps.css
+++ b/src/QUI/Bricks/Controls/SimpleGoogleMaps.css
@@ -11,52 +11,4 @@
     min-height: 300px;
     position: relative;
     width: 100%;
-}
-
-.simpleGoogleMap-wrapper {
-    position: absolute;
-    width: 100%;
-    height: 100%;
-    top: 0;
-    left: 0;
-    background: rgba(0, 0, 0, 0.4);
-    z-index: 1;
-    display: flex;
-    align-items: center;
-    justify-content: center;
-    opacity: 0;
-    transition: 0.3s all ease-in-out;
-}
-
-.simpleGoogleMap-wrapper span {
-    text-align: center;
-    display: inline-block;
-    font-size: 1.7em;
-    color: #fff;
-    padding: 10px 20px;
-    border: 2px solid rgba(255, 255, 255, 0.7);
-    cursor: default;
-    transition: 0.3s all ease-in-out;
-    margin: 0 10px;
-}
-
-.simpleGoogleMap-wrapper span:hover {
-    box-shadow: 0 0 6px 0 #fff;
-    background: rgba(255, 255, 255, 0);
-
-}
-
-.simpleGoogleMap-wrapper:hover {
-    opacity: 1;
-    transition-delay: 350ms;
-}
-
-.simpleGoogleMap-wrapper.simpleGoogleMap-hideWrapper {
-    display: none;
-}
-
-@media screen and (max-width: 767px) {
-    .simpleGoogleMap-wrapper {
-        display: none;
-    }
 }
\ No newline at end of file
diff --git a/src/QUI/Bricks/Controls/SimpleGoogleMaps.html b/src/QUI/Bricks/Controls/SimpleGoogleMaps.html
index 1768d7057e8a0338dfdef91fa9930e9fe1bc9569..eb6ea808c246c6f77239b108766a81381cd0ebd4 100644
--- a/src/QUI/Bricks/Controls/SimpleGoogleMaps.html
+++ b/src/QUI/Bricks/Controls/SimpleGoogleMaps.html
@@ -9,9 +9,7 @@
     {$this->getAttribute('content')}
 </div>
 {/if}
+
 <div class="simpleGoogleMap">
-    <div class="simpleGoogleMap-wrapper">
-        <span>{locale group='quiqqer/bricks' var='brick.control.simplegooglemaps.clickToActivate'}</span>
-    </div>
     <iframe class="simpleGoogleMap-iframe" src="{$url}"></iframe>
 </div>
\ No newline at end of file
diff --git a/src/QUI/Bricks/Controls/SimpleGoogleMaps.php b/src/QUI/Bricks/Controls/SimpleGoogleMaps.php
index 847733d5ee60c95fc500cb5e916cd10dcf01a9dd..a2c140fd4b67c58a04fe55ebd98e8df07641404a 100644
--- a/src/QUI/Bricks/Controls/SimpleGoogleMaps.php
+++ b/src/QUI/Bricks/Controls/SimpleGoogleMaps.php
@@ -33,7 +33,7 @@ public function __construct($attributes = array())
             dirname(__FILE__) . '/SimpleGoogleMaps.css'
         );
 
-        $this->setAttribute('qui-class', "package/quiqqer/bricks/bin/Controls/SimpleGoogleMaps");
+//        $this->setAttribute('qui-class', "package/quiqqer/bricks/bin/Controls/SimpleGoogleMaps");
     }
 
     /**
diff --git a/src/QUI/Bricks/Controls/Slider/PromosliderWallpaper.html b/src/QUI/Bricks/Controls/Slider/PromosliderWallpaper.html
index 2c54e9132353ce70c709dea805a2cb39c7c82f00..b5d47524a7582f15b6e1dfbcb9deec53d5c8e639 100644
--- a/src/QUI/Bricks/Controls/Slider/PromosliderWallpaper.html
+++ b/src/QUI/Bricks/Controls/Slider/PromosliderWallpaper.html
@@ -2,21 +2,14 @@
     {strip}
     <ul class="hide-on-mobile">
         {foreach $desktopSlides as $key => $slide}
-        <li>
-            {assign var=extraStyle value=""}
+        <li data-url="{image image=$slide.image onlysrc=1}">
             {assign var=extraClass value=""}
 
-            {if $key >= 1}
-            {assign var=extraStyle value="display: none;"}
-            {/if}
-
             {if isset($slide.pos) && $slide.pos == 'quiqqer-bricks-promoslider-slide-right'}
             {assign var=extraClass value=" quiqqer-bricks-promoslider-wallpaper-text__right"}
             {/if}
 
-            <div class="quiqqer-bricks-promoslider-wallpaper-image"
-                 style="{$extraStyle}background-image: url('{image image=$slide.image onlysrc=1 width=1900}')"
-            >&nbsp;</div>
+            <div class="quiqqer-bricks-promoslider-wallpaper-image" style="display: none">&nbsp;</div>
 
             {if $slide.title != '' || $slide.text != ''}
             <div class="grid-container">
@@ -49,21 +42,14 @@
     {strip}
     <ul class="hide-on-desktop">
         {foreach $mobileSlides as $key => $slide}
-        <li>
-            {assign var=extraStyle value=""}
+        <li data-url="{image image=$slide.image onlysrc=1}">
             {assign var=extraClass value=""}
 
-            {if $key >= 1}
-            {assign var=extraStyle value="display: none;"}
-            {/if}
-
             {if isset($slide.pos) && $slide.pos == 'quiqqer-bricks-promoslider-slide-right'}
             {assign var=extraClass value=" quiqqer-bricks-promoslider-wallpaper-text__right"}
             {/if}
 
-            <div class="quiqqer-bricks-promoslider-wallpaper-image"
-                 style="{$extraStyle}background-image: url('{image image=$slide.image onlysrc=1 width=1900}')"
-            >&nbsp;</div>
+            <div class="quiqqer-bricks-promoslider-wallpaper-image" style="display: none">&nbsp;</div>
 
             {if $slide.title != '' || $slide.text != ''}
             <div class="grid-container">
@@ -87,7 +73,7 @@
             </div>
             {/if}
 
-            &nbsp
+            &nbsp;
         </li>
         {/foreach}
     </ul>
diff --git a/src/QUI/Bricks/Controls/Slider/PromosliderWallpaper2Content.html b/src/QUI/Bricks/Controls/Slider/PromosliderWallpaper2Content.html
index d25da3870af465927744b6195573b20190b1d596..205f44bdbe53740bf28b995401c5fd4af8b350e1 100644
--- a/src/QUI/Bricks/Controls/Slider/PromosliderWallpaper2Content.html
+++ b/src/QUI/Bricks/Controls/Slider/PromosliderWallpaper2Content.html
@@ -2,18 +2,8 @@
     {strip}
     <ul class="hide-on-mobile">
         {foreach $desktopSlides as $key => $slide}
-        <li data-url="{url url=$slide.url rewritten=1}">
-            {assign var=extraStyle value=""}
-            {assign var=extraClass value=""}
-
-            {if $key >= 1}
-            {assign var=extraStyle value="display: none;"}
-            {/if}
-
-            <div class="quiqqer-bricks-promoslider-wallpaper-image"
-                 style="{$extraStyle}background-image: url('{image image=$slide.image onlysrc=1 width=1900}')"
-            >&nbsp
-            </div>
+        <li data-url="{image image=$slide.image onlysrc=1}">
+            <div class="quiqqer-bricks-promoslider-wallpaper-image" style="display: none">&nbsp;</div>
 
             <div class="grid-container">
                 <div class="quiqqer-bricks-promoslider-wallpaper2Content-left">
@@ -35,18 +25,8 @@
     {strip}
     <ul class="hide-on-desktop">
         {foreach $mobileSlides as $key => $slide}
-        <li data-url="{url url=$slide.url rewritten=1}">
-            {assign var=extraStyle value=""}
-            {assign var=extraClass value=""}
-
-            {if $key >= 1}
-            {assign var=extraStyle value="display: none;"}
-            {/if}
-
-            <div class="quiqqer-bricks-promoslider-wallpaper-image"
-                 style="{$extraStyle}background-image: url('{image image=$slide.image onlysrc=1 width=1900}')"
-            >&nbsp
-            </div>
+        <li data-url="{image image=$slide.image onlysrc=1}">
+            <div class="quiqqer-bricks-promoslider-wallpaper-image" style="display: none">&nbsp;</div>
 
             <div class="grid-container">
                 <div class="quiqqer-bricks-promoslider-wallpaper2Content-left">
diff --git a/src/QUI/Bricks/Manager.php b/src/QUI/Bricks/Manager.php
index 09827d6af1637451ea576589ac0d5896ad98c42c..fa27ef3f1494fa20bb1831f6b6fea8a82b26264d 100644
--- a/src/QUI/Bricks/Manager.php
+++ b/src/QUI/Bricks/Manager.php
@@ -645,6 +645,9 @@ public function saveBrick($brickId, array $brickData)
         ), array(
             'id' => (int)$brickId
         ));
+
+        // @todo it is a workaround
+        QUI\Cache\Manager::clearAll();
     }
 
     /**