diff --git a/Changes b/Changes
index 82ba6c3..7a5b276 100755
--- a/Changes
+++ b/Changes
@@ -1,8 +1,8 @@
-0.39 2020-06-25
+0.39 2020-06-30
         - Add information on secret file to Readme.
         - Change default API endpoint to korap.ids-mannheim.de.
-        - Add information on secret file to Readme.
         - Fix label for toggle plugins.
+        - Activate plugin registry.
 
         WARNING: If you relied on the former default API endpoint
           being http://localhost:9999/, this will break your
diff --git a/dev/demo/plugin-serverdemo.js b/dev/demo/plugin-serverdemo.js
index 096050f..52d6609 100644
--- a/dev/demo/plugin-serverdemo.js
+++ b/dev/demo/plugin-serverdemo.js
@@ -6,59 +6,41 @@
 });
 
 
+KorAP.Plugins = [{
+  'name' : 'Export',
+  'desc' : 'Exports Kalamar results',
+  // 'about' : 'https://localhost:5678/',
+  'embed' : [{
+    'panel' : 'result',
+    'title' : 'Export',
+    'classes' : ['export'],
+    'onClick' : {
+      'action' : 'addWidget',
+      'template' : 'http://localhost:3003/demo/plugin-client.html',
+    }
+  },{
+    'panel' : 'result',
+    'title' : 'Glemm',
+    'onClick' : {
+      'action' : 'toggle',
+      'state' : 'glemm',
+      'template' : 'http://localhost:3003/demo/plugin-client.html',
+    }
+  }]
+},{
+  'name' : 'Example New',
+  'desc' : 'Some content about cats',
+  // 'about' : 'https://localhost:5678/',
+  'embed' : [{
+    'panel' : 'match',
+    'title' : 'Translate',
+    'classes' : ['translate'],
+    'onClick' : {
+      'action' : 'addWidget',
+      'template' : 'http://localhost:3003/demo/plugin-client.html',
+    }
+  }]
+}]; 
 
 
-define(['app/en','match', 'panel/match', 'panel/result', 'plugin/server','pipe','lib/domReady','init'], function (lang, matchClass, matchPanelClass, resultPanelClass, pluginClass, pipeClass, domReady) {
-  domReady(function () {
- 
-    // Load Plugin Server first 
-    KorAP.Plugin = pluginClass.create();
-
-    // Add services container to head
-    document.head.appendChild(KorAP.Plugin.element());
-
-    // Add pipe form
-    KorAP.Pipe = pipeClass.create();
-    document.getElementById("searchform").appendChild(KorAP.Pipe.element());
-    
-    //Register result plugin
-    KorAP.Plugin.register({
-       'name' : 'Export',
-       'desc' : 'Exports Kalamar results',
-       // 'about' : 'https://localhost:5678/',
-       'embed' : [{
-         'panel' : 'result',
-         'title' : 'Export',
-         'classes' : ['export'],
-         'onClick' : {
-           'action' : 'addWidget',
-           'template' : 'http://localhost:3003/demo/plugin-client.html',
-         }
-       },{
-         'panel' : 'result',
-         'title' : 'Glemm',
-         'onClick' : {
-           'action' : 'toggle',
-           'state' : 'glemm',
-           'template' : 'http://localhost:3003/demo/plugin-client.html',
-         }
-       }]
-     }); 
-
-    // Register match plugin
-    KorAP.Plugin.register({
-      'name' : 'Example New',
-      'desc' : 'Some content about cats',
-      // 'about' : 'https://localhost:5678/',
-      'embed' : [{
-        'panel' : 'match',
-        'title' : 'Translate',
-        'classes' : ['translate'],
-        'onClick' : {
-          'action' : 'addWidget',
-          'template' : 'http://localhost:3003/demo/plugin-client.html',
-        }
-      }]
-    });
-  });
-});
+require(['app/en','init']);
diff --git a/dev/js/spec/pipeSpec.js b/dev/js/spec/pipeSpec.js
index 078d4b1..93bf172 100644
--- a/dev/js/spec/pipeSpec.js
+++ b/dev/js/spec/pipeSpec.js
@@ -93,6 +93,7 @@
       let p = pipeClass.create();
       let e = p.element();
       expect(e.tagName).toEqual("INPUT");
+      expect(e.getAttribute("type")).toEqual("text");
       p.append('service1');
       expect(e.getAttribute("value")).toEqual("service1");
       p.append('service2');
diff --git a/dev/js/src/init.js b/dev/js/src/init.js
index 62d0800..f9eaa13 100644
--- a/dev/js/src/init.js
+++ b/dev/js/src/init.js
@@ -28,6 +28,8 @@
   'panel/result',
   'panel/query',
   'tour/tours',
+  'plugin/server',
+  'pipe',
   'api',
   'mailToChiffre',
   'util',
@@ -43,7 +45,9 @@
              selectMenuClass,
              resultPanelClass,
              queryPanelClass,
-             tourClass) {
+             tourClass,
+             pluginClass,
+             pipeClass) {
 
   const d = document;
 
@@ -420,7 +424,34 @@
       sform.insertBefore(queryPanel.element(), vcView);
       KorAP.Panel['query'] = queryPanel;
     }
-    
+
+    /**
+     * Initialize Plugin registry.
+     */
+    let p = KorAP.Plugins;
+    if (p && p.length > 0) {
+      // Load Plugin Server first
+      KorAP.Plugin = pluginClass.create();
+
+      // Add services container to head
+      d.head.appendChild(KorAP.Plugin.element());
+
+      // Add pipe form
+      KorAP.Pipe = pipeClass.create();
+      d.getElementById("searchform").appendChild(KorAP.Pipe.element());
+
+      try {
+      
+        // Register all plugins
+        for (var i = 0; i < p.length; i++) {
+          KorAP.Plugin.register(p[i]);
+        }
+      }
+      catch (e) {
+        KorAP.log(0, e);
+      }
+    };
+
     return obj;
   });
   
diff --git a/dev/js/src/plugin/service.js b/dev/js/src/plugin/service.js
index be567be..3152f38 100644
--- a/dev/js/src/plugin/service.js
+++ b/dev/js/src/plugin/service.js
@@ -30,7 +30,13 @@
     load : function () {
       if (this._load)
         return this._load;
-      
+
+      if (window.location.protocol == 'https:' &&
+          this.src.toLowerCase().indexOf('https:') != 0) {
+        KorAP.log(0, "Service endpoint is insecure");
+        return;
+      };
+
       // Spawn new iframe
       let e = document.createElement('iframe');
       e.setAttribute('allowTransparency',"true");
diff --git a/dev/js/src/view.js b/dev/js/src/view.js
index fa830d6..d0a517c 100644
--- a/dev/js/src/view.js
+++ b/dev/js/src/view.js
@@ -53,8 +53,14 @@
         cl.add.apply(cl, this._classes);
 
       // TODO: The show may need to be wrapped in another DIV!
-      if (this.show !== undefined)
-        e.appendChild(this.show());
+      if (this.show !== undefined) {
+        let s = this.show();
+        if (s) {
+          e.appendChild(s);
+        } else {
+          return e
+        }
+      }
 
       this._shown = true;
 
diff --git a/dev/scss/header/header.scss b/dev/scss/header/header.scss
index 20f1e67..65e2483 100644
--- a/dev/scss/header/header.scss
+++ b/dev/scss/header/header.scss
@@ -159,3 +159,9 @@
   color: transparent;
   text-shadow: 0 0 0 white;
 }
+
+
+// Hide pipe
+input.pipe {
+  display: none;
+}
\ No newline at end of file
diff --git a/package.json b/package.json
index 6e451ba..97bed86 100755
--- a/package.json
+++ b/package.json
@@ -2,7 +2,7 @@
   "name": "Kalamar",
   "description": "Mojolicious-based Frontend for KorAP",
   "license": "BSD-2-Clause",
-  "version": "0.39.0",
+  "version": "0.39.1",
   "pluginVersion": "0.2",
   "engines": {
     "node": ">=6.0.0"
