diff --git a/code/pymqi/__init__.py b/code/pymqi/__init__.py
index 4db15d6e3210fb6ad82774413d3499ed5625f8d4_Y29kZS9weW1xaS9fX2luaXRfXy5weQ==..b6bc0ca1bd242af365e4e5953021df9c21a51b37_Y29kZS9weW1xaS9fX2luaXRfXy5weQ== 100644
--- a/code/pymqi/__init__.py
+++ b/code/pymqi/__init__.py
@@ -2597,11 +2597,5 @@
         'excludes_gen': CMQCFC.MQCFOP_EXCLUDES_GEN,
         }
 
-    def __init__(self, pub_filter):
-        self.pub_filter = pub_filter
-
-    def __call__(self, value):
-
-        ensure_not_unicode(value)  # Python 3 bytes accepted here
-
+    def __init__(self, selector, opName):
         # Do we support the given attribute filter?
@@ -2607,9 +2601,9 @@
         # Do we support the given attribute filter?
-        if CMQC.MQIA_FIRST <= self.pub_filter.selector <= CMQC.MQIA_LAST:
-            priv_filter_class = IntegerFilter
-        elif CMQC.MQCA_FIRST <= self.pub_filter.selector <= CMQC.MQCA_LAST:
-            priv_filter_class = StringFilter
+        if CMQC.MQIA_FIRST <= selector <= CMQC.MQIA_LAST:
+            self.internal_filter_cls = IntegerFilter
+        elif CMQC.MQCA_FIRST <= selector <= CMQC.MQCA_LAST:
+            self.internal_filter_cls = StringFilter
         else:
             msg = 'selector [%s] is of an unsupported type (neither integer ' \
                 'nor a string attribute). Please see' \
                 'https://dsuch.github.io/pymqi/support.html'
@@ -2612,7 +2606,8 @@
         else:
             msg = 'selector [%s] is of an unsupported type (neither integer ' \
                 'nor a string attribute). Please see' \
                 'https://dsuch.github.io/pymqi/support.html'
-            raise Error(msg % self.pub_filter.selector)
-
+            raise Error(msg % selector)
+        self.selector = selector
+        self.operator = self.operator_mapping.get(opName)
         # Do we support the operator?
@@ -2618,4 +2613,3 @@
         # Do we support the operator?
-        operator = self.operator_mapping.get(self.pub_filter.operator)
-        if not operator:
+        if not self.operator:
             msg = 'Operator [%s] is not supported.'
@@ -2621,7 +2615,9 @@
             msg = 'Operator [%s] is not supported.'
-            raise Error(msg % self.pub_filter.operator)
-
-        return priv_filter_class(self.pub_filter.selector, value, operator)
+            raise Error(msg % opName)
+
+    def __call__(self, value):
+        ensure_not_unicode(value)  # Python 3 bytes accepted here
+        return (self.internal_filter_cls)(self.selector, value, self.operator)
 
 class Filter(object):
     """ The user-facing MQAI filtering class which provides syntactic sugar
@@ -2629,9 +2625,8 @@
     """
     def __init__(self, selector):
         self.selector = selector
-        self.operator = None
 
     def __getattribute__(self, name):
         """ A generic method for either fetching the pymqi.Filter object's
         attributes or calling magic methods like 'like', 'contains' etc.
         """
@@ -2633,7 +2628,7 @@
 
     def __getattribute__(self, name):
         """ A generic method for either fetching the pymqi.Filter object's
         attributes or calling magic methods like 'like', 'contains' etc.
         """
-        if name in('selector', 'operator'):
+        if name=='selector':
             return object.__getattribute__(self, name)
@@ -2639,7 +2634,6 @@
             return object.__getattribute__(self, name)
-        self.operator = name
-
-        return FilterOperator(self)
+
+        return FilterOperator(self.selector,name)
 
 #
 # This piece of magic shamelessly plagiarised from xmlrpclib.py. It