Index: lib/elemHideEmulation.js
===================================================================
--- a/lib/elemHideEmulation.js
+++ b/lib/elemHideEmulation.js
@@ -17,17 +17,16 @@
 
 "use strict";
 
 /**
  * @fileOverview Element hiding emulation implementation.
  */
 
 const {ElemHideExceptions} = require("./elemHideExceptions");
-const {Filter} = require("./filterClasses");
 
 let filters = new Set();
 
 /**
  * Container for element hiding emulation filters
  * @class
  */
 let ElemHideEmulation = {
@@ -40,39 +39,38 @@
   },
 
   /**
    * Add a new element hiding emulation filter
    * @param {ElemHideEmulationFilter} filter
    */
   add(filter)
   {
-    filters.add(filter.text);
+    filters.add(filter);
   },
 
   /**
    * Removes an element hiding emulation filter
    * @param {ElemHideEmulationFilter} filter
    */
   remove(filter)
   {
-    filters.delete(filter.text);
+    filters.delete(filter);
   },
 
   /**
    * Returns a list of all rules active on a particular domain
    * @param {string} domain
    * @return {ElemHideEmulationFilter[]}
    */
   getRulesForDomain(domain)
   {
     let result = [];
-    for (let text of filters.values())
+    for (let filter of filters)
     {
-      let filter = Filter.fromText(text);
       if (filter.isActiveOnDomain(domain) &&
           !ElemHideExceptions.getException(filter.selector, domain))
       {
         result.push(filter);
       }
     }
     return result;
   }
Index: lib/snippets.js
===================================================================
--- a/lib/snippets.js
+++ b/lib/snippets.js
@@ -17,17 +17,16 @@
 
 "use strict";
 
 /**
  * @fileOverview Snippets implementation.
  */
 
 const {EventEmitter} = require("./events");
-const {Filter} = require("./filterClasses");
 
 const singleCharacterEscapes = new Map([
   ["n", "\n"], ["r", "\r"], ["t", "\t"]
 ]);
 
 let filters = new Set();
 
 /**
@@ -51,47 +50,46 @@
   /**
    * Add a new snippet filter
    * @param {SnippetFilter} filter
    */
   add(filter)
   {
     let {size} = filters;
 
-    filters.add(filter.text);
+    filters.add(filter);
 
     if (size != filters.size)
       this.emit("snippets.filterAdded", filter);
   },
 
   /**
    * Removes a snippet filter
    * @param {SnippetFilter} filter
    */
   remove(filter)
   {
     let {size} = filters;
 
-    filters.delete(filter.text);
+    filters.delete(filter);
 
     if (size != filters.size)
       this.emit("snippets.filterRemoved", filter);
   },
 
   /**
    * Returns a list of all snippet filters active on a particular domain
    * @param {string} domain
    * @return {Array.<SnippetFilter>}
    */
   getFiltersForDomain(domain)
   {
     let result = [];
-    for (let text of filters)
+    for (let filter of filters)
     {
-      let filter = Filter.fromText(text);
       if (filter.isActiveOnDomain(domain))
         result.push(filter);
     }
     return result;
   }
 });
 
 exports.Snippets = Snippets;
Index: test/filterListener.js
===================================================================
--- a/test/filterListener.js
+++ b/test/filterListener.js
@@ -85,23 +85,23 @@
 
   let elemHideExceptions = sandboxedRequire("../lib/elemHideExceptions");
   result.elemhideexception = [];
   for (let exception of elemHideExceptions.knownExceptions)
     result.elemhideexception.push(exception.text);
 
   let elemHideEmulation = sandboxedRequire("../lib/elemHideEmulation");
   result.elemhideemulation = [];
-  for (let filterText of elemHideEmulation.filters)
-    result.elemhideemulation.push(filterText);
+  for (let filter of elemHideEmulation.filters)
+    result.elemhideemulation.push(filter.text);
 
   let snippets = sandboxedRequire("../lib/snippets");
   result.snippets = [];
-  for (let filterText of snippets.filters)
-    result.snippets.push(filterText);
+  for (let filter of snippets.filters)
+    result.snippets.push(filter.text);
 
   let types = ["blacklist", "whitelist", "elemhide", "elemhideexception",
                "elemhideemulation", "snippets"];
   for (let type of types)
   {
     if (!(type in expected))
       expected[type] = [];
     else
