diff --git a/dev/demo/plugin-client.html b/dev/demo/plugin-client.html
index b0b477d..0250c6c 100644
--- a/dev/demo/plugin-client.html
+++ b/dev/demo/plugin-client.html
@@ -35,13 +35,27 @@
 
       function pluginit (p) {
         p.onMessage = function(msg) {
-          console.log("State changed to", msg.key, msg.value);
+          switch (msg.key) {
+            // console.log("State changed to", msg.key, msg.value);
+            case 'glemm':
+              let data = {
+                'action' : 'pipe',
+                'service' : 'http://glemm/'
+              };
+                   
+              if (!msg.value) {
+                data['job'] = 'del';
+              };
+              KorAPlugin.sendMsg(data);
+              break;
+          }
         };
       };
       </script>
     <ul>
       <li><a onclick="KorAPlugin.log(333, 'Huhu!')">Send log!</a></li>
       <li><a onclick="KorAPlugin.resize()">Resize</a></li>
+      <li><a onclick="KorAPlugin.sendMsg({'action':'pipe','service':'Glemm'})">Add Glemm</a></li>
       <li><a onclick="flood()">Flood!</a></li>
     </ul>
     <p style="width: 2000px">------------------------------------------------------------------------------------------------------------------------</p>
diff --git a/dev/demo/plugin-server.html b/dev/demo/plugin-server.html
index 146d2eb..98cbac0 100644
--- a/dev/demo/plugin-server.html
+++ b/dev/demo/plugin-server.html
@@ -14,8 +14,13 @@
     //]]></script>  
     <script data-main="plugin-serverdemo.js" src="../js/lib/require.js" async="async"></script>
   </head>
-  <body>
+  <body>    
     <p>Start the demo server with <code>morbo -l 'http://*:3003' t/server/plugin.pl</code> and open <a href="http://localhost:3003/demo/plugin-server.html"><code>this website</code></a>.</p>
+
+    <header>
+      <form id="searchform" autocomplete="off" action="/kalamar"></form>
+    </header>
+    
     <main> 
         <script>
         KorAP.koralQuery = {
diff --git a/dev/demo/plugin-serverdemo.js b/dev/demo/plugin-serverdemo.js
index eb91f14..096050f 100644
--- a/dev/demo/plugin-serverdemo.js
+++ b/dev/demo/plugin-serverdemo.js
@@ -8,14 +8,18 @@
 
 
 
-define(['app/en','match', 'panel/match', 'panel/result', 'plugin/server','lib/domReady','init'], function (lang, matchClass, matchPanelClass, resultPanelClass, pluginClass, domReady) {
+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 
+    // 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({
diff --git a/dev/js/src/plugin/client.js b/dev/js/src/plugin/client.js
index 8c73625..389d093 100644
--- a/dev/js/src/plugin/client.js
+++ b/dev/js/src/plugin/client.js
@@ -52,7 +52,7 @@
     },
 
     // Send a message
-    _sendMsg : function (data) {
+    sendMsg : function (data) {
       data["originID"] = this.widgetID;
       window.parent.postMessage(data, this.server);
     },
@@ -79,7 +79,7 @@
      * Send a log message to the embedding KorAP
      */
     log : function (code, msg) {
-      this._sendMsg({
+      this.sendMsg({
         action : 'log',
         code : code,
         msg : msg
@@ -98,7 +98,7 @@
       if (de.scrollWidth > de.clientWidth) {
         height += 14;
       };
-      this._sendMsg({
+      this.sendMsg({
         'action' : 'resize',
         'height' : height
       });
diff --git a/dev/js/src/plugin/server.js b/dev/js/src/plugin/server.js
index 1c46dbe..d5c9cfb 100644
--- a/dev/js/src/plugin/server.js
+++ b/dev/js/src/plugin/server.js
@@ -393,6 +393,17 @@
       case 'log':
         KorAP.log(d.code, d.msg,  service.src);
         break;
+
+      // Modify pipes
+      case 'pipe':
+        if (KorAP.Pipe != undefined) {
+          if (d.job == 'del') {
+            KorAP.Pipe.remove(d.service);
+          } else {
+            KorAP.Pipe.append(d.service);
+          };
+        };
+        break;
       };
 
       // TODO:
