diff --git a/dev/js/src/plugin/server.js b/dev/js/src/plugin/server.js
index b0d8f52..d4190fb 100644
--- a/dev/js/src/plugin/server.js
+++ b/dev/js/src/plugin/server.js
@@ -47,7 +47,7 @@
     /**
      * Open a new widget as a child to a certain element
      */
-    addWidget : function (element, src) {
+    addWidget : function (element, name, src) {
 
       // Is it the first widget?
       if (!this._listener) {
@@ -72,7 +72,7 @@
       var id = 'id-' + this._randomID();
 
       // Create a new widget
-      var widget = widgetClass.create(src, id);
+      var widget = widgetClass.create(name, src, id);
 
       // Store the widget based on the identifier
       widgets[id] = widget;
diff --git a/dev/js/src/plugin/widget.js b/dev/js/src/plugin/widget.js
index 1fe417a..338faa3 100644
--- a/dev/js/src/plugin/widget.js
+++ b/dev/js/src/plugin/widget.js
@@ -19,12 +19,13 @@
     /**
      * Create new widget
      */
-    create : function (src, id) {
-      return Object.create(this)._init(src, id);
+    create : function (name, src, id) {
+      return Object.create(this)._init(name, src, id);
     },
 
     // Initialize widget
-    _init : function (src, id) {
+    _init : function (name, src, id) {
+      this.name = name;
       this.src = src;
       this.id = id;
       return this;
@@ -60,6 +61,12 @@
       close.classList.add('close');
       close.setAttribute('title', loc.CLOSE);
 
+      // Add info button on plugin
+      var plugin = ul.addE('li');
+      plugin.addE('span').addT(this.name);
+      plugin.classList.add('plugin');
+      plugin.setAttribute('title', this.name);
+      
       // Close match
       close.addEventListener('click', function (e) {
         e.halt();
