diff --git a/py/objset.c b/py/objset.c
index 43bb610..ba083ad 100644
--- a/py/objset.c
+++ b/py/objset.c
@@ -46,23 +46,6 @@
 }
 
 
-static mp_obj_t set_binary_op(int op, mp_obj_t lhs_in, mp_obj_t rhs_in) {
-    mp_obj_set_t *o = lhs_in;
-    switch (op) {
-        case RT_COMPARE_OP_IN:
-        case RT_COMPARE_OP_NOT_IN:
-        {
-            mp_obj_t elem = mp_set_lookup(&o->set, rhs_in, false);
-            return ((op == RT_COMPARE_OP_IN) ^ (elem == NULL))
-                ? mp_const_true : mp_const_false;
-        }
-        default:
-            // op not supported
-            return NULL;
-    }
-}
-
-
 static mp_obj_t set_make_new(mp_obj_t type_in, int n_args, const mp_obj_t *args) {
     switch (n_args) {
         case 0:
@@ -423,6 +406,13 @@
         return set_issuperset(lhs, rhs);
     case RT_COMPARE_OP_NOT_EQUAL:
         return MP_BOOL(set_equal(lhs, rhs) == mp_const_false);
+    case RT_COMPARE_OP_IN:
+    case RT_COMPARE_OP_NOT_IN:
+    {
+        mp_obj_set_t *o = lhs;
+        mp_obj_t elem = mp_set_lookup(&o->set, rhs, MP_MAP_LOOKUP);
+        return MP_BOOL((op == RT_COMPARE_OP_IN) ^ (elem == NULL));
+    }
     default:
         // op not supported
         return NULL;
@@ -458,7 +448,6 @@
     { &mp_const_type },
     "set",
     .print = set_print,
-    .binary_op = set_binary_op,
     .make_new = set_make_new,
     .binary_op = set_binary_op,
     .getiter = set_getiter,
