diff --git a/dev/js/src/init.js b/dev/js/src/init.js
index 982929c..109fd48 100644
--- a/dev/js/src/init.js
+++ b/dev/js/src/init.js
@@ -355,9 +355,12 @@
 
         if (vc !== undefined) {
           input.value = vc.toQuery();
+          if (input.value == '')
+            input.removeAttribute('name');
         }
         else {
-          delete input['value'];
+          input.removeAttribute('value');
+          input.removeAttribute('name');
         };
       });
     };
diff --git a/dev/js/src/pipe.js b/dev/js/src/pipe.js
new file mode 100644
index 0000000..7b9afee
--- /dev/null
+++ b/dev/js/src/pipe.js
@@ -0,0 +1,76 @@
+/**
+ * Create a pipe object, that holds a list of services
+ * meant to transform the KQ passed before it's finally
+ * passed to the search engine.
+ *
+ * @author Nils Diewald
+ */
+define(function () {
+
+  "use strict";
+
+  const notNullRe = new RegExp("[a-zA-Z0-9]");
+
+  // Trim and check
+  function _notNull (service) {
+    service = service.trim();
+    if (service.match(notNullRe)) {
+      return service;
+    };
+    return null;
+  }
+  
+  return {
+
+    /**
+     * Constructor
+     */
+    create : function () {
+      let obj = Object.create(this);
+      obj._pipe = [];
+      return obj;
+    },
+
+    /**
+     * Append service to pipe.
+     */
+    append : function (service) {
+      service = _notNull(service);
+      if (service)
+        this._pipe.push(service);
+    },
+
+    /**
+     * Prepend service to pipe.
+     */
+    prepend : function (service) {
+      service = _notNull(service);
+      if (service)
+        this._pipe.unshift(service);
+    },
+
+    /**
+     * Remove service from the pipe.
+     */
+    remove : function (service) {
+      let i = this._pipe.indexOf(service);
+      if (i != -1) {
+        this._pipe.splice(i, 1);
+      };
+    },
+
+    /**
+     * The number of services in the pipe.
+     */
+    size : function () {
+      return this._pipe.length;
+    },
+
+    /**
+     * Return the pipe as a string.
+     */
+    toString : function () {
+      return this._pipe.join(',');
+    }
+  };
+});
