Index: turbojson/jsonify.py
===================================================================
--- turbojson/jsonify.py	(revision 4909)
+++ turbojson/jsonify.py	(working copy)
@@ -3,7 +3,8 @@
 import datetime
 import decimal
 
-from peak.rules import abstract, when
+from peak.rules import abstract
+from prioritized_methods import prioritized_when as when
 
 from simplejson import JSONEncoder
 
@@ -34,17 +35,17 @@
 jsonify.when = lambda *args, **kwargs: when(jsonify, *args, **kwargs)
 
 
-@jsonify.when("isinstance(obj, (datetime.date, datetime.datetime))")
+@jsonify.when("isinstance(obj, (datetime.date, datetime.datetime))", prio=-1)
 def jsonify_datetime(obj):
     """JSONify datetime and date objects."""
     return str(obj)
 
-@jsonify.when("isinstance(obj, decimal.Decimal)")
+@jsonify.when("isinstance(obj, decimal.Decimal)", prio=-1)
 def jsonify_decimal(obj):
     """JSONify decimal objects."""
     return float(obj)
 
-@jsonify.when("hasattr(obj, '__json__')")
+@jsonify.when("hasattr(obj, '__json__')", prio=-1)
 def jsonify_explicit(obj):
     """JSONify objects with explicit JSONification method."""
     return obj.__json__()
@@ -76,7 +77,7 @@
             and hasattr(obj.__class__, 'sqlmeta'))
 
     @jsonify.when("is_sqlobject(obj)"
-        " and not hasattr(obj, '__json__')")
+        " and not hasattr(obj, '__json__')", prio=-1)
     def jsonify_sqlobject(obj):
         """JSONify SQLObjects."""
         result = {'id': obj.id}
@@ -90,7 +91,7 @@
         pass
     else:
 
-        @jsonify.when("isinstance(obj, SelectResultsClass)")
+        @jsonify.when("isinstance(obj, SelectResultsClass)", prio=-1)
         def jsonify_select_results(obj):
             """JSONify SQLObject.SelectResults."""
             return list(obj)
@@ -112,7 +113,7 @@
             return hasattr(obj, '_sa_class_manager')
 
         @jsonify.when("is_saobject(obj)"
-            " and not hasattr(obj, '__json__')")
+            " and not hasattr(obj, '__json__')", prio=-1)
         def jsonify_saobject(obj):
             """JSONify SQLAlchemy objects."""
             props = {}
@@ -128,7 +129,7 @@
                 and isinstance(obj.c, OrderedProperties))
 
         @jsonify.when("is_saobject(obj)"
-            " and not hasattr(obj, '__json__')")
+            " and not hasattr(obj, '__json__')", prio=-1)
         def jsonify_saobject(obj):
             """JSONify SQLAlchemy objects."""
             props = {}
@@ -143,7 +144,7 @@
 
         else: # SQLAlchemy < 0.4
 
-            @jsonify.when("isinstance(obj, InstrumentedList)")
+            @jsonify.when("isinstance(obj, InstrumentedList)", prio=-1)
             def jsonify_instrumented_list(obj):
                 """JSONify SQLAlchemy instrumented lists."""
                 return list(obj)
