Index: /quintagroup.plonegooglesitemaps/branches/blacklist/quintagroup/plonegooglesitemaps/browser/commonview.py
===================================================================
--- /quintagroup.plonegooglesitemaps/branches/blacklist/quintagroup/plonegooglesitemaps/browser/commonview.py	(revision 2938)
+++ /quintagroup.plonegooglesitemaps/branches/blacklist/quintagroup/plonegooglesitemaps/browser/commonview.py	(revision 2939)
@@ -1,5 +1,5 @@
 from string import find
 from zope.interface import implements, Interface, Attribute
-from zope.component import queryUtility
+from zope.component import queryMultiAdapter
 
 from Acquisition import aq_inner, aq_parent
@@ -9,5 +9,5 @@
 from quintagroup.plonegooglesitemaps import qPloneGoogleSitemapsMessageFactory as _
 from quintagroup.plonegooglesitemaps.config import BLACKOUT_PREFIX
-from quintagroup.plonegooglesitemaps.interfaces import IBlackoutFilterUtility
+from quintagroup.plonegooglesitemaps.interfaces import IBlackoutFilter
 from quintagroup.plonegooglesitemaps.browser.utils import additionalURLs, applyOperations
 
@@ -115,10 +115,8 @@
             fargs = fspec.pop()
             fname = BLACKOUT_PREFIX + (fspec and fspec.pop() or "id")
-            futility = queryUtility(IBlackoutFilterUtility, name=fname)
-            if futility:
-                kw = {"sitemap": self.context,
-                      "request": self.request,
-                      "extras": fspec}
-                objects = futility.filterOut(objects, fargs, **kw)
+            fengine = queryMultiAdapter((self.context, self.request),
+                          interface=IBlackoutFilter, name=fname)
+            if fengine:
+                objects = fengine.filterOut(objects, fargs)
         return objects
 
Index: /quintagroup.plonegooglesitemaps/branches/blacklist/quintagroup/plonegooglesitemaps/configure.zcml
===================================================================
--- /quintagroup.plonegooglesitemaps/branches/blacklist/quintagroup/plonegooglesitemaps/configure.zcml	(revision 2938)
+++ /quintagroup.plonegooglesitemaps/branches/blacklist/quintagroup/plonegooglesitemaps/configure.zcml	(revision 2939)
@@ -29,12 +29,18 @@
         />
 
-    <!-- Register utilities -->
-    <utility factory=".utilities.IdBlackoutFilterUtility"
-             name="seoptimzier.blackoutfilter.id"
-	     permission="zope.Public" />
+    <!-- Register default filters -->
+    <adapter
+	for="*
+	     zope.publisher.interfaces.browser.IBrowserRequest"
+	factory=".filters.IdBlackoutFilter"
+        name="seoptimzier.blackoutfilter.id"
+	permission="zope.Public" />
 
-    <utility factory=".utilities.PathBlackoutFilterUtility"
-             name="seoptimzier.blackoutfilter.path"
-	     permission="zope.Public" />
+    <adapter
+        for="*
+             zope.publisher.interfaces.browser.IBrowserRequest"
+        factory=".filters.PathBlackoutFilter"
+        name="seoptimzier.blackoutfilter.path"
+	permission="zope.Public" />
 
 
Index: /quintagroup.plonegooglesitemaps/branches/blacklist/quintagroup/plonegooglesitemaps/filters.py
===================================================================
--- /quintagroup.plonegooglesitemaps/branches/blacklist/quintagroup/plonegooglesitemaps/filters.py	(revision 2939)
+++ /quintagroup.plonegooglesitemaps/branches/blacklist/quintagroup/plonegooglesitemaps/filters.py	(revision 2939)
@@ -0,0 +1,39 @@
+from zope.interface import implements
+from zope.component import queryMultiAdapter
+from quintagroup.plonegooglesitemaps.interfaces import IBlackoutFilter
+
+class IdBlackoutFilter(object):
+    """Filter-out by ID."""
+
+    implements(IBlackoutFilter)
+
+    def __init__(self, context, request):
+        self.context = context
+        self.request = request
+
+    def filterOut(self, fdata, fargs):
+        """Filter-out fdata list by id in fargs."""
+        return [b for b in fdata if (b.getId or b.id) != fargs]
+
+
+class PathBlackoutFilter(object):
+    """Filter-out by PATH."""
+
+    implements(IBlackoutFilter)
+
+    def __init__(self, context, request):
+        self.context = context
+        self.request = request
+
+    def filterOut(self, fdata, fargs):
+        """Filter-out fdata list by path in fargs."""
+        if fargs.startswith("/"):
+            # absolute path filter
+            portal = queryMultiAdapter((self.context, self.request),
+                         name=u"plone_portal_state").portal()
+            return [b for b in fdata if b.getPath() != '/%s%s' % (portal.getId(), fargs)]
+        elif fargs.startswith("./"):
+            # relative path filter
+            contpath = '/'.join(self.context.getPhysicalPath()[:-1])
+            return [b for b in fdata if b.getPath() != (contpath + fargs[1:])]
+        return fdata
Index: /quintagroup.plonegooglesitemaps/branches/blacklist/quintagroup/plonegooglesitemaps/interfaces.py
===================================================================
--- /quintagroup.plonegooglesitemaps/branches/blacklist/quintagroup/plonegooglesitemaps/interfaces.py	(revision 2938)
+++ /quintagroup.plonegooglesitemaps/branches/blacklist/quintagroup/plonegooglesitemaps/interfaces.py	(revision 2939)
@@ -22,12 +22,12 @@
     """Marker interface that defines browser layer for the package."""
 
-class IBlackoutFilterUtility(Interface):
-    """Base interface for filter utility."""
+class IBlackoutFilter(Interface):
+    """Base interface for filter adapter."""
 
-    def filterOut(fdata, fkey, **kwargs):
+    def filterOut(fdata, fargs):
         """Filter out fdata by passed arguments in kwargs.
-            * fdata (list/tuple) - is data to filtering.
-            * fkey (string) - is key for filtering.
-            * **kwargs - contains additional data, needed for filtering.
+            * fdata (list/tuple) - data for filtering
+              (list of catalog brains).
+            * fargs (string) - is key for filtering.
            Return list/tuple like object without filtered out items.
         """
Index: /quintagroup.plonegooglesitemaps/branches/blacklist/quintagroup/plonegooglesitemaps/tests/testBlackoutList.py
===================================================================
--- /quintagroup.plonegooglesitemaps/branches/blacklist/quintagroup/plonegooglesitemaps/tests/testBlackoutList.py	(revision 2938)
+++ /quintagroup.plonegooglesitemaps/branches/blacklist/quintagroup/plonegooglesitemaps/tests/testBlackoutList.py	(revision 2939)
@@ -4,22 +4,26 @@
 from base import *
 from types import ListType, TupleType
-from zope.component import queryUtility, queryMultiAdapter
+from zope.component import queryMultiAdapter
 
 from Products.CMFPlone.utils import _createObjectByType
 from quintagroup.plonegooglesitemaps.config import BLACKOUT_PREFIX
-from quintagroup.plonegooglesitemaps.interfaces import IBlackoutFilterUtility
+from quintagroup.plonegooglesitemaps.interfaces import IBlackoutFilter
 
 idfname = BLACKOUT_PREFIX + "id"
 pathfname = BLACKOUT_PREFIX + "path"
 
-class TestBOFilterUtilities(TestCase):
+class TestBOFilters(TestCase):
 
-    def testDefaultIdUtility(self):
-        self.assertTrue(queryUtility(IBlackoutFilterUtility, name=idfname) is not None,
-            "Not registered default '%s' IBlackoutFilterUtility" % idfname)
+    def testDefaultId(self):
+        idfilter = queryMultiAdapter((self.portal, self.app.REQUEST),
+                       IBlackoutFilter, name=idfname)
+        self.assertTrue(idfilter is not None,
+            "Not registered default '%s' IBlackoutFilter" % idfname)
 
-    def testDefaultPathUtility(self):
-        self.assertTrue(queryUtility(IBlackoutFilterUtility, name=pathfname) is not None,
-            "Not registered default '%s' IBlackoutFilterUtility" % pathfname)
+    def testDefaultPath(self):
+        pathfilter = queryMultiAdapter((self.portal, self.app.REQUEST),
+                         IBlackoutFilter, name=pathfname)
+        self.assertTrue(pathfilter is not None,
+            "Not registered default '%s' IBlackoutFilter" % pathfname)
 
 
@@ -46,7 +50,6 @@
 
     def getPreparedLists(self, fname, fargs):
-        futil = queryUtility(IBlackoutFilterUtility, name=fname)
-        filtered = [f.getPath() for f in futil.filterOut(self.catres, fkey=fargs,
-                    sitemap=self.sm, request=self.req)]
+        fengine = queryMultiAdapter((self.sm, self.req), IBlackoutFilter, name=fname)
+        filtered = [f.getPath() for f in fengine.filterOut(self.catres, fargs)]
         catpaths = [c.getPath() for c in self.catres]
         return catpaths, filtered
@@ -129,5 +132,5 @@
     from unittest import TestSuite, makeSuite
     suite = TestSuite()
-    suite.addTest(makeSuite(TestBOFilterUtilities))
+    suite.addTest(makeSuite(TestBOFilters))
     suite.addTest(makeSuite(TestDefaultFilters))
     suite.addTest(makeSuite(TestBlacklistFormProcessing))
Index: intagroup.plonegooglesitemaps/branches/blacklist/quintagroup/plonegooglesitemaps/utilities.py
===================================================================
--- /quintagroup.plonegooglesitemaps/branches/blacklist/quintagroup/plonegooglesitemaps/utilities.py	(revision 2938)
+++ 	(revision )
@@ -1,33 +1,0 @@
-from zope.interface import implements
-from zope.component import queryMultiAdapter
-from quintagroup.plonegooglesitemaps.interfaces import IBlackoutFilterUtility
-
-class IdBlackoutFilterUtility(object):
-    """Filter-out by ID utility."""
-
-    implements(IBlackoutFilterUtility)
-
-    def filterOut(self, fdata, fkey, **kwargs):
-        """Filter-out fdata list by id in fkey."""
-        return [b for b in fdata if (b.getId or b.id) != fkey]
-
-
-class PathBlackoutFilterUtility(object):
-    """Filter-out by PATH utility."""
-
-    implements(IBlackoutFilterUtility)
-
-    def filterOut(self, fdata, fkey, **kwargs):
-        """Filter-out fdata list by path in fkey."""
-        sm = kwargs.get("sitemap", None)
-        req = kwargs.get("request", None)
-        if fkey.startswith("/"):
-            # absolute path filter
-            # portal_state = getMultiAdapter((self.context, self.request), name=u'plone_portal_state')
-            portal = queryMultiAdapter((sm, req), name=u"plone_portal_state").portal()
-            return [b for b in fdata if b.getPath() != '/%s%s' % (portal.getId(), fkey)]
-        elif fkey.startswith("./"):
-            # relative path filter
-            contpath = '/'.join(sm.getPhysicalPath()[:-1])
-            return [b for b in fdata if b.getPath() != (contpath + fkey[1:])]
-        return fdata
