diff --git a/bin/Area.js b/bin/Area.js
index f1e84942a01993079106fa9787b8405894f10552..3878ff614d6527424ee4142602089f7129dd4713 100644
--- a/bin/Area.js
+++ b/bin/Area.js
@@ -5,14 +5,6 @@
  * @module package/quiqqer/bricks/bin/BrickAreas
  * @author www.pcsg.de (Henning Leutz)
  *
- * @require qui/QUI
- * @require qui/controls/Control
- * @require qui/controls/buttons/Button
- * @require package/quiqqer/bricks/bin/AreaWindow
- * @require Ajax
- * @require Locale
- * @require css!package/quiqqer/bricks/bin/Area.css
- *
  * @event onLoaded [ this ]
  */
 define('package/quiqqer/bricks/bin/Area', [
@@ -61,12 +53,12 @@ define('package/quiqqer/bricks/bin/Area', [
             this.$Elm = new Element('div', {
                 'class': 'quiqqer-bricks-area smooth',
                 html   : '<div class="quiqqer-bricks-area-icon">' +
-                         '<span class="fa fa-list-alt"></span>' +
-                         '</div>' +
-                         '<div class="quiqqer-bricks-area-content">' +
-                         '<div class="quiqqer-bricks-area-content-title"></div>' +
-                         '<div class="quiqqer-bricks-area-content-description"></div>' +
-                         '</div>',
+                '<span class="fa fa-list-alt"></span>' +
+                '</div>' +
+                '<div class="quiqqer-bricks-area-content">' +
+                '<div class="quiqqer-bricks-area-content-title"></div>' +
+                '<div class="quiqqer-bricks-area-content-description"></div>' +
+                '</div>',
                 events : {
                     click: this.toggle
                 }
diff --git a/bin/AreaWindow.js b/bin/AreaWindow.js
index 2aae032ae668b2d4ec570a2366f57550009421fc..e8b1a4a8cb0ed15baee49d2898cae0097e8fb1dc 100644
--- a/bin/AreaWindow.js
+++ b/bin/AreaWindow.js
@@ -5,12 +5,6 @@
  * @module package/quiqqer/bricks/bin/AreaWindow
  * @author www.pcsg.de (Henning Leutz)
  *
- * @require qui/QUI
- * @require qui/controls/windows/Confirm
- * @require package/quiqqer/bricks/bin/Area
- * @require Ajax
- * @require Locale
- *
  * @event onSubmit [ this, areas ]
  */
 define('package/quiqqer/bricks/bin/AreaWindow', [
@@ -93,6 +87,8 @@ define('package/quiqqer/bricks/bin/AreaWindow', [
          * @param {Function} callback
          */
         getList: function (callback) {
+            require(['']);
+
             Ajax.get('package_quiqqer_bricks_ajax_project_getAreas', callback, {
                 'package': 'quiqqer/brick',
                 project  : JSON.encode({
diff --git a/bin/Areas.js b/bin/Areas.js
new file mode 100644
index 0000000000000000000000000000000000000000..dbd8d12301fde728c7709012186ba06da4af7c4f
--- /dev/null
+++ b/bin/Areas.js
@@ -0,0 +1,12 @@
+/**
+ * Main areas handler
+ *
+ * @module package/quiqqer/bricks/bin/Areas
+ * @author www.pcsg.de (Henning Leutz)
+ */
+define('package/quiqqer/bricks/bin/Areas', [
+    'package/quiqqer/bricks/bin/classes/Areas'
+], function (Areas) {
+    "use strict";
+    return new Areas();
+});
\ No newline at end of file
diff --git a/bin/BrickAreas.js b/bin/BrickAreas.js
index 83a12972e4713b54633aab39a979b80f6182a5c2..bb03b6682a671b9fae5acabd6bdb1d1f68333f72 100644
--- a/bin/BrickAreas.js
+++ b/bin/BrickAreas.js
@@ -1,4 +1,3 @@
-
 /**
  * BrickAreas Control
  * Edit and change the areas for the brick
@@ -6,14 +5,6 @@
  * @module package/quiqqer/bricks/bin/BrickAreas
  * @author www.pcsg.de (Henning Leutz)
  *
- * @require qui/QUI
- * @require qui/controls/Control
- * @require qui/controls/buttons/Button
- * @require package/quiqqer/bricks/bin/AreaWindow
- * @require Ajax
- * @require Locale
- * @require css!package/quiqqer/bricks/bin/BrickAreas.css
- *
  * @event onLoaded [ this ]
  */
 define('package/quiqqer/bricks/bin/BrickAreas', [
@@ -22,32 +13,33 @@ define('package/quiqqer/bricks/bin/BrickAreas', [
     'qui/controls/Control',
     'qui/controls/buttons/Button',
     'package/quiqqer/bricks/bin/AreaWindow',
+    'package/quiqqer/bricks/bin/Areas',
     'Ajax',
     'Locale',
 
     'css!package/quiqqer/bricks/bin/BrickAreas.css'
 
-], function (QUI, QUIControl, QUIButton, AreaWindow, Ajax, QUILocale) {
+], function (QUI, QUIControl, QUIButton, AreaWindow, Areas, Ajax, QUILocale) {
     "use strict";
 
     return new Class({
 
-        Extends : QUIControl,
-        Type    : 'package/quiqqer/bricks/bin/BrickAreas',
+        Extends: QUIControl,
+        Type   : 'package/quiqqer/bricks/bin/BrickAreas',
 
-        Binds : [
+        Binds: [
             '$onDestroy'
         ],
 
-        options : {
-            brickId : false, // brickId
-            styles  : false,
-            projectName : false,
-            projectLang : false,
-            areas   : false
+        options: {
+            brickId    : false, // brickId
+            styles     : false,
+            projectName: false,
+            projectLang: false,
+            areas      : false
         },
 
-        initialize : function (options) {
+        initialize: function (options) {
             this.parent(options);
 
             this.$areas = {};
@@ -58,13 +50,13 @@ define('package/quiqqer/bricks/bin/BrickAreas', [
          *
          * @return {HTMLElement}
          */
-        create : function () {
+        create: function () {
             var self = this;
 
             this.$Elm = new Element('div', {
-                'class' : 'quiqqer-bricks-brickareas',
-                html    : '<div class="quiqqer-bricks-brickareas-container"></div>' +
-                          '<div class="quiqqer-bricks-brickareas-buttons"></div>'
+                'class': 'quiqqer-bricks-brickareas',
+                html   : '<div class="quiqqer-bricks-brickareas-container"></div>' +
+                '<div class="quiqqer-bricks-brickareas-buttons"></div>'
             });
 
             if (this.getAttribute('styles')) {
@@ -75,21 +67,19 @@ define('package/quiqqer/bricks/bin/BrickAreas', [
             this.$Buttons   = this.$Elm.getElement('.quiqqer-bricks-brickareas-buttons');
 
             new QUIButton({
-                text   : QUILocale.get('quiqqer/bricks', 'brick.edit.area.add'),
-                styles : {
-                    width : '100%'
+                text  : QUILocale.get('quiqqer/bricks', 'brick.edit.area.add'),
+                styles: {
+                    width: '100%'
                 },
-                events :
-                {
-                    onClick : function () {
+                events: {
+                    onClick: function () {
                         new AreaWindow({
-                            projectName : self.getAttribute('projectName'),
-                            projectLang : self.getAttribute('projectLang'),
-                            events  :
-                            {
-                                onSubmit : function (Win, areas) {
+                            projectName: self.getAttribute('projectName'),
+                            projectLang: self.getAttribute('projectLang'),
+                            events     : {
+                                onSubmit: function (Win, areas) {
                                     for (var i = 0, len = areas.length; i < len; i++) {
-                                        self.addArea(areas[ i ]);
+                                        self.addArea(areas[i]);
                                     }
                                 }
                             }
@@ -113,36 +103,66 @@ define('package/quiqqer/bricks/bin/BrickAreas', [
 
         /**
          * Add an area
+         *
          * @param {String} area - name of the area
          */
-        addArea : function (area) {
+        addArea: function (area) {
             if (area in this.$areas) {
                 return;
             }
 
             var self = this;
 
-            this.$areas[ area ] = true;
+            this.$areas[area] = true;
 
             var BrickNode = new Element('div', {
-                'class'     : 'quiqqer-bricks-brickareas-area',
-                html        : area,
-                'data-area' : area
+                'class'    : 'quiqqer-bricks-brickareas-area',
+                html       : '<span class="fa fa-spinner fa-spin"></span>',
+                'data-area': area
             }).inject(this.$Container);
 
+
+            Areas.getList(
+                this.getAttribute('projectName'),
+                this.getAttribute('projectLang')
+            ).then(function (list) {
+                var name = this.get('data-area');
+
+                var title = list.filter(function (Entry) {
+                    return Entry.name === name;
+                }).map(function (Entry) {
+                    return Entry.title;
+                });
+
+                if ("group" in title[0]) {
+                    title = QUILocale.get(
+                        title[0].group,
+                        title[0].var
+                    );
+                } else {
+                    title = title[0];
+                }
+
+                var Loader = this.getElement('.fa');
+
+                Loader.removeClass('fa');
+                Loader.removeClass('fa-spinner');
+                Loader.removeClass('fa-spin');
+                Loader.set('html', title);
+            }.bind(BrickNode));
+
             new Element('span', {
-                'class' : 'fa fa-times',
-                styles  : {
-                    cursor: 'pointer',
+                'class': 'fa fa-times',
+                styles : {
+                    cursor    : 'pointer',
                     marginLeft: 10
                 },
-                events :
-                {
-                    click : function () {
+                events : {
+                    click: function () {
                         var area = BrickNode.get('data-area');
 
-                        if (self.$areas[ area ]) {
-                            delete self.$areas[ area ];
+                        if (self.$areas[area]) {
+                            delete self.$areas[area];
                         }
 
                         BrickNode.destroy();
@@ -156,7 +176,7 @@ define('package/quiqqer/bricks/bin/BrickAreas', [
          *
          * @return {Array}
          */
-        getAreas : function () {
+        getAreas: function () {
             var result = [];
 
             for (var area in this.$areas) {
diff --git a/bin/Controls/Slider/PromosliderWallpaper.js b/bin/Controls/Slider/PromosliderWallpaper.js
index 57d61174271e9b5248f659cb8941f38b72b07dc3..26ba174e68d8f1b6ac45c3547e220edfd4b731ff 100644
--- a/bin/Controls/Slider/PromosliderWallpaper.js
+++ b/bin/Controls/Slider/PromosliderWallpaper.js
@@ -245,8 +245,8 @@ define('package/quiqqer/bricks/bin/Controls/Slider/PromosliderWallpaper', [
                         // click event
                         var Li = this.$List.getElement('li:nth-child(' + parseInt(currentSlide + 1) + ')');
 
-                        if (Li.get('data-url') && Li.get('data-url') !== '') {
-                            window.location = Li.get('data-url');
+                        if (Li.get('data-href') && Li.get('data-href') !== '') {
+                            window.location = Li.get('data-href');
                             return;
                         }
                     }
@@ -308,18 +308,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');
-                //     }
-                // });
+            this.$Container.getElements("li[data-href]").each(function (LiElement) {
+                if (LiElement.get('data-href') === '') {
+                    return;
+                }
+
+                LiElement.setStyle('cursor', 'pointer');
+                LiElement.addEvent('click', function () {
+                    if (QUI.isScrolling() === false) {
+                        window.location = this.get('data-href');
+                    }
+                });
             });
 
 
@@ -603,7 +602,7 @@ define('package/quiqqer/bricks/bin/Controls/Slider/PromosliderWallpaper', [
             var self       = this,
                 Background = Slide.getElement('.quiqqer-bricks-promoslider-wallpaper-image'),
                 display    = Background.getStyle('display'),
-                image      = Slide.get('data-url');
+                image      = Slide.get('data-image');
 
             if (display !== 'none') {
                 return;
diff --git a/bin/Manager.js b/bin/Manager.js
index ff2e0affa79348d8a1caf9d375029e6114b6894e..3fd66e5bd5269459b8733649c217b9c73d5bc1c2 100644
--- a/bin/Manager.js
+++ b/bin/Manager.js
@@ -3,18 +3,6 @@
  *
  * @module package/quiqqer/bricks/bin/Manager
  * @author www.pcsg.de (Henning Leutz)
- *
- * @require qui/QUI
- * @require qui/controls/desktop/Panel
- * @require qui/controls/buttons/Select
- * @require qui/controls/buttons/Button
- * @require qui/controls/buttons/Separator
- * @require qui/controls/windows/Confirm
- * @require controls/grid/Grid
- * @require Locale
- * @require Projects
- * @require Ajax
- * @require css!package/quiqqer/bricks/bin/Manager.css
  */
 define('package/quiqqer/bricks/bin/Manager', [
 
diff --git a/bin/classes/Areas.js b/bin/classes/Areas.js
new file mode 100644
index 0000000000000000000000000000000000000000..280cfb3dc5e3bf653f17d9b52e5069a5159dd2c0
--- /dev/null
+++ b/bin/classes/Areas.js
@@ -0,0 +1,49 @@
+define('package/quiqqer/bricks/bin/classes/Areas', [
+
+    'qui/QUI',
+    'qui/classes/DOM',
+    'Ajax'
+
+], function (QUI, QDOM, QUIAjax) {
+    "use strict";
+
+    return new Class({
+
+        Extends: QDOM,
+        Type   : 'classes/editor/Manager',
+
+        initialize: function (options) {
+            this.parent(options);
+
+            this.$areas = null;
+        },
+
+        /**
+         * Return the area list
+         *
+         * @param project
+         * @param lang
+         * @return {Promise|*}
+         */
+        getList: function (project, lang) {
+            if (this.$areas) {
+                return Promise.resolve(this.$areas);
+            }
+
+            var self = this;
+
+            return new Promise(function (resolve) {
+                QUIAjax.get('package_quiqqer_bricks_ajax_project_getAreas', function (result) {
+                    self.$areas = result;
+                    resolve(self.$areas);
+                }, {
+                    'package': 'quiqqer/brick',
+                    project  : JSON.encode({
+                        name: project,
+                        lang: lang
+                    })
+                });
+            });
+        }
+    });
+});
diff --git a/composer.json b/composer.json
index c5e573cc7a5f5a1d194ee3f6df9b91b705f6cbc7..00932712dcb72e6277ec87dd894dd0263fdbcc10 100644
--- a/composer.json
+++ b/composer.json
@@ -20,12 +20,12 @@
     "quiqqer\/qui": ">=1|dev-master|dev-dev",
     "quiqqer/utils": ">=1.4|dev-dev",
     "npm-asset/hammerjs": "2.*",
-    "npm-asset\/mustache": "2.*"
+    "npm-asset\/mustache": "2.*",
+    "ramsey/uuid": "3.*"
   },
   "autoload": {
-    "psr-0": {
-      "QUI": "src/"
+    "psr-4": {
+      "QUI\\Bricks\\": "src/QUI/Bricks"
     }
   }
 }
-
diff --git a/src/QUI/Bricks/Controls/Slider/PromosliderWallpaper.html b/src/QUI/Bricks/Controls/Slider/PromosliderWallpaper.html
index b5d47524a7582f15b6e1dfbcb9deec53d5c8e639..b44395741af8dd5c282c97348a2bd854c77a69ee 100644
--- a/src/QUI/Bricks/Controls/Slider/PromosliderWallpaper.html
+++ b/src/QUI/Bricks/Controls/Slider/PromosliderWallpaper.html
@@ -2,7 +2,7 @@
     {strip}
     <ul class="hide-on-mobile">
         {foreach $desktopSlides as $key => $slide}
-        <li data-url="{image image=$slide.image onlysrc=1}">
+        <li data-image="{image image=$slide.image onlysrc=1}" data-href="{$slide.url}">
             {assign var=extraClass value=""}
 
             {if isset($slide.pos) && $slide.pos == 'quiqqer-bricks-promoslider-slide-right'}
@@ -42,7 +42,7 @@
     {strip}
     <ul class="hide-on-desktop">
         {foreach $mobileSlides as $key => $slide}
-        <li data-url="{image image=$slide.image onlysrc=1}">
+        <li data-image="{image image=$slide.image onlysrc=1}" data-href="{$slide.url}">
             {assign var=extraClass value=""}
 
             {if isset($slide.pos) && $slide.pos == 'quiqqer-bricks-promoslider-slide-right'}
diff --git a/src/QUI/Bricks/Controls/Slider/PromosliderWallpaper2Content.html b/src/QUI/Bricks/Controls/Slider/PromosliderWallpaper2Content.html
index 205f44bdbe53740bf28b995401c5fd4af8b350e1..8e4d92fc55397a3542446160841948b2fecf1510 100644
--- a/src/QUI/Bricks/Controls/Slider/PromosliderWallpaper2Content.html
+++ b/src/QUI/Bricks/Controls/Slider/PromosliderWallpaper2Content.html
@@ -2,7 +2,7 @@
     {strip}
     <ul class="hide-on-mobile">
         {foreach $desktopSlides as $key => $slide}
-        <li data-url="{image image=$slide.image onlysrc=1}">
+        <li data-image="{image image=$slide.image onlysrc=1}" data-href="{$slide.url}">
             <div class="quiqqer-bricks-promoslider-wallpaper-image" style="display: none">&nbsp;</div>
 
             <div class="grid-container">
@@ -25,7 +25,7 @@
     {strip}
     <ul class="hide-on-desktop">
         {foreach $mobileSlides as $key => $slide}
-        <li data-url="{image image=$slide.image onlysrc=1}">
+        <li data-image="{image image=$slide.image onlysrc=1}" data-href="{$slide.url}">
             <div class="quiqqer-bricks-promoslider-wallpaper-image" style="display: none">&nbsp;</div>
 
             <div class="grid-container">