diff --git a/py/misc.h b/py/misc.h
index 153218b..1bf4d8f 100644
--- a/py/misc.h
+++ b/py/misc.h
@@ -5,11 +5,7 @@
 
 /** types *******************************************************/
 
-typedef int bool;
-enum {
-    false = 0,
-    true = 1
-};
+#include <stdbool.h>
 
 typedef unsigned char byte;
 typedef unsigned int uint;
diff --git a/py/obj.h b/py/obj.h
index 1ba7427..49167bf 100644
--- a/py/obj.h
+++ b/py/obj.h
@@ -15,15 +15,14 @@
 typedef machine_float_t mp_float_t;
 #endif
 
-// Anything that wants to be a Micro Python object must
-// have mp_obj_base_t as its first member (except NULL and small ints)
+// Anything that wants to be a Micro Python object must have
+// mp_obj_base_t as its first member (except NULL and small ints)
 
-typedef struct _mp_obj_base_t mp_obj_base_t;
-typedef struct _mp_obj_type_t mp_obj_type_t;
-
+struct _mp_obj_type_t;
 struct _mp_obj_base_t {
-    const mp_obj_type_t *type;
+    const struct _mp_obj_type_t *type;
 };
+typedef struct _mp_obj_base_t mp_obj_base_t;
 
 // The NULL object is used to indicate the absence of an object
 // It *cannot* be used when an mp_obj_t is expected, except where explicitly allowed
@@ -43,12 +42,13 @@
 
 #define MP_DECLARE_CONST_FUN_OBJ(obj_name) extern const mp_obj_fun_native_t obj_name
 
-#define MP_DEFINE_CONST_FUN_OBJ_0(obj_name, fun_name) const mp_obj_fun_native_t obj_name = {{&fun_native_type}, 0, 0, fun_name}
-#define MP_DEFINE_CONST_FUN_OBJ_1(obj_name, fun_name) const mp_obj_fun_native_t obj_name = {{&fun_native_type}, 1, 1, fun_name}
-#define MP_DEFINE_CONST_FUN_OBJ_2(obj_name, fun_name) const mp_obj_fun_native_t obj_name = {{&fun_native_type}, 2, 2, fun_name}
-#define MP_DEFINE_CONST_FUN_OBJ_3(obj_name, fun_name) const mp_obj_fun_native_t obj_name = {{&fun_native_type}, 3, 3, fun_name}
-#define MP_DEFINE_CONST_FUN_OBJ_VAR(obj_name, n_args_min, fun_name) const mp_obj_fun_native_t obj_name = {{&fun_native_type}, n_args_min, (~((machine_uint_t)0)), fun_name}
-#define MP_DEFINE_CONST_FUN_OBJ_VAR_BETWEEN(obj_name, n_args_min, n_args_max, fun_name) const mp_obj_fun_native_t obj_name = {{&fun_native_type}, n_args_min, n_args_max, fun_name}
+#define MP_DEFINE_CONST_FUN_OBJ_VOID_PTR(obj_name, n_args_min, n_args_max, fun_name) const mp_obj_fun_native_t obj_name = {{&fun_native_type}, n_args_min, n_args_max, (void *)fun_name}
+#define MP_DEFINE_CONST_FUN_OBJ_0(obj_name, fun_name) MP_DEFINE_CONST_FUN_OBJ_VOID_PTR(obj_name, 0, 0, (mp_fun_0_t)fun_name)
+#define MP_DEFINE_CONST_FUN_OBJ_1(obj_name, fun_name) MP_DEFINE_CONST_FUN_OBJ_VOID_PTR(obj_name, 1, 1, (mp_fun_1_t)fun_name)
+#define MP_DEFINE_CONST_FUN_OBJ_2(obj_name, fun_name) MP_DEFINE_CONST_FUN_OBJ_VOID_PTR(obj_name, 2, 2, (mp_fun_2_t)fun_name)
+#define MP_DEFINE_CONST_FUN_OBJ_3(obj_name, fun_name) MP_DEFINE_CONST_FUN_OBJ_VOID_PTR(obj_name, 3, 3, (mp_fun_3_t)fun_name)
+#define MP_DEFINE_CONST_FUN_OBJ_VAR(obj_name, n_args_min, fun_name) MP_DEFINE_CONST_FUN_OBJ_VOID_PTR(obj_name, n_args_min, (~((machine_uint_t)0)), (mp_fun_var_t)fun_name)
+#define MP_DEFINE_CONST_FUN_OBJ_VAR_BETWEEN(obj_name, n_args_min, n_args_max, fun_name) MP_DEFINE_CONST_FUN_OBJ_VOID_PTR(obj_name, n_args_min, n_args_max, (mp_fun_var_t)fun_name)
 
 // Type definitions for methods
 
@@ -83,7 +83,7 @@
     mp_fun_1_t getiter;
     mp_fun_1_t iternext;
 
-    const mp_method_t methods[];
+    const mp_method_t *methods;
 
     /*
     What we might need to add here:
@@ -108,6 +108,8 @@
     */
 };
 
+typedef struct _mp_obj_type_t mp_obj_type_t;
+
 // Constant objects, globally accessible
 
 extern const mp_obj_type_t mp_const_type;
@@ -241,6 +243,7 @@
     // for const function objects, make an empty, const map
     // such functions won't be able to access the global scope, but that's probably okay
 } mp_obj_fun_native_t;
+
 extern const mp_obj_type_t fun_native_type;
 extern const mp_obj_type_t fun_bc_type;
 void mp_obj_fun_bc_get(mp_obj_t self_in, int *n_args, uint *n_state, const byte **code);
diff --git a/py/objbool.c b/py/objbool.c
index 77394da..cfab7db 100644
--- a/py/objbool.c
+++ b/py/objbool.c
@@ -34,14 +34,8 @@
 const mp_obj_type_t bool_type = {
     { &mp_const_type },
     "bool",
-    bool_print, // print
-    bool_make_new, // make_new
-    NULL, // call_n
-    NULL, // unary_op
-    NULL, // binary_op
-    NULL, // getiter
-    NULL, // iternext
-    .methods = {{NULL, NULL},},
+    .print = bool_print,
+    .make_new = bool_make_new,
 };
 
 static const mp_obj_bool_t false_obj = {{&bool_type}, false};
diff --git a/py/objboundmeth.c b/py/objboundmeth.c
index 4e6d2e0..78e5c62 100644
--- a/py/objboundmeth.c
+++ b/py/objboundmeth.c
@@ -36,14 +36,7 @@
 const mp_obj_type_t bound_meth_type = {
     { &mp_const_type },
     "bound_method",
-    NULL, // print
-    NULL, // make_new
-    bound_meth_call_n, // call_n
-    NULL, // unary_op
-    NULL, // binary_op
-    NULL, // getiter
-    NULL, // iternext
-    .methods = {{NULL, NULL},},
+    .call_n = bound_meth_call_n,
 };
 
 mp_obj_t mp_obj_new_bound_meth(mp_obj_t self, mp_obj_t meth) {
diff --git a/py/objcell.c b/py/objcell.c
index 3465f99..264125b 100644
--- a/py/objcell.c
+++ b/py/objcell.c
@@ -26,14 +26,6 @@
 const mp_obj_type_t cell_type = {
     { &mp_const_type },
     "cell",
-    NULL, // print
-    NULL, // make_new
-    NULL, // call_n
-    NULL, // unary_op
-    NULL, // binary_op
-    NULL, // getiter
-    NULL, // iternext
-    .methods = {{NULL, NULL},},
 };
 
 mp_obj_t mp_obj_new_cell(mp_obj_t obj) {
diff --git a/py/objclass.c b/py/objclass.c
index 536abdf..d13d177 100644
--- a/py/objclass.c
+++ b/py/objclass.c
@@ -63,14 +63,7 @@
 const mp_obj_type_t class_type = {
     { &mp_const_type },
     "class",
-    NULL, // print
-    NULL, // make_new
-    class_call_n, // call_n
-    NULL, // unary_op
-    NULL, // binary_op
-    NULL, // getiter
-    NULL, // iternext
-    .methods = {{NULL, NULL},},
+    .call_n = class_call_n,
 };
 
 mp_obj_t mp_obj_new_class(mp_map_t *class_locals) {
diff --git a/py/objclosure.c b/py/objclosure.c
index 3317eb8..b372ee6 100644
--- a/py/objclosure.c
+++ b/py/objclosure.c
@@ -35,14 +35,7 @@
 const mp_obj_type_t closure_type = {
     { &mp_const_type },
     "closure",
-    NULL, // print
-    NULL, // make_new
-    closure_call_n, // call_n
-    NULL, // unary_op
-    NULL, // binary_op
-    NULL, // getiter
-    NULL, // iternext
-    .methods = {{NULL, NULL},},
+    .call_n = closure_call_n,
 };
 
 mp_obj_t mp_obj_new_closure(mp_obj_t fun, mp_obj_t closure_tuple) {
diff --git a/py/objcomplex.c b/py/objcomplex.c
index 46f43b5..1036bae 100644
--- a/py/objcomplex.c
+++ b/py/objcomplex.c
@@ -87,14 +87,10 @@
 const mp_obj_type_t complex_type = {
     { &mp_const_type },
     "complex",
-    complex_print, // print
-    complex_make_new, // make_new
-    NULL, // call_n
-    complex_unary_op, // unary_op
-    complex_binary_op, // binary_op
-    NULL, // getiter
-    NULL, // iternext
-    .methods = { { NULL, NULL }, },
+    .print = complex_print,
+    .make_new = complex_make_new,
+    .unary_op = complex_unary_op,
+    .binary_op = complex_binary_op,
 };
 
 mp_obj_t mp_obj_new_complex(mp_float_t real, mp_float_t imag) {
diff --git a/py/objdict.c b/py/objdict.c
index b3e21ae..66a442f 100644
--- a/py/objdict.c
+++ b/py/objdict.c
@@ -66,8 +66,6 @@
     .print = dict_print,
     .make_new = dict_make_new,
     .binary_op = dict_binary_op,
-    .getiter = NULL,
-    .methods = {{NULL, NULL},},
 };
 
 mp_obj_t mp_obj_new_dict(int n_args) {
diff --git a/py/objexcept.c b/py/objexcept.c
index 22b8c58..829b147 100644
--- a/py/objexcept.c
+++ b/py/objexcept.c
@@ -38,14 +38,7 @@
 const mp_obj_type_t exception_type = {
     { &mp_const_type },
     "exception",
-    exception_print, // print
-    NULL, // make_new
-    NULL, // call_n
-    NULL, // unary_op
-    NULL, // binary_op
-    NULL, // getiter
-    NULL, // iternext
-    .methods = {{NULL, NULL},},
+    .print = exception_print,
 };
 
 mp_obj_t mp_obj_new_exception(qstr id) {
diff --git a/py/objfloat.c b/py/objfloat.c
index 336ae59..d21472d 100644
--- a/py/objfloat.c
+++ b/py/objfloat.c
@@ -68,7 +68,6 @@
     .make_new = float_make_new,
     .unary_op = float_unary_op,
     .binary_op = float_binary_op,
-    .methods = { { NULL, NULL }, },
 };
 
 mp_obj_t mp_obj_new_float(mp_float_t value) {
diff --git a/py/objfun.c b/py/objfun.c
index 0db6459..51b4329 100644
--- a/py/objfun.c
+++ b/py/objfun.c
@@ -72,16 +72,7 @@
 const mp_obj_type_t fun_native_type = {
     { &mp_const_type },
     "function",
-    NULL, // print
-    NULL, // make_new
-    fun_native_call_n, // call_n
-    NULL, // unary_op
-    NULL, // binary_op
-    NULL, // getiter
-    NULL, // iternext
-    .methods = {
-        {NULL, NULL}, // end-of-list sentinel
-    },
+    .call_n = fun_native_call_n,
 };
 
 mp_obj_t rt_make_function_0(mp_fun_0_t fun) {
@@ -174,16 +165,7 @@
 const mp_obj_type_t fun_bc_type = {
     { &mp_const_type },
     "function",
-    NULL, // print
-    NULL, // make_new
-    fun_bc_call_n, // call_n
-    NULL, // unary_op
-    NULL, // binary_op
-    NULL, // getiter
-    NULL, // iternext
-    .methods = {
-        {NULL, NULL}, // end-of-list sentinel
-    },
+    .call_n = fun_bc_call_n,
 };
 
 mp_obj_t mp_obj_new_fun_bc(int n_args, uint n_state, const byte *code) {
@@ -288,16 +270,7 @@
 static const mp_obj_type_t fun_asm_type = {
     { &mp_const_type },
     "function",
-    NULL, // print
-    NULL, // make_new
-    fun_asm_call_n, // call_n
-    NULL, // unary_op
-    NULL, // binary_op
-    NULL, // getiter
-    NULL, // iternext
-    .methods = {
-        {NULL, NULL}, // end-of-list sentinel
-    },
+    .call_n = fun_asm_call_n,
 };
 
 mp_obj_t mp_obj_new_fun_asm(uint n_args, void *fun) {
diff --git a/py/objgenerator.c b/py/objgenerator.c
index a91b0d6..7eeb4ef 100644
--- a/py/objgenerator.c
+++ b/py/objgenerator.c
@@ -39,14 +39,7 @@
 const mp_obj_type_t gen_wrap_type = {
     { &mp_const_type },
     "generator",
-    NULL, // print
-    NULL, // make_new
-    gen_wrap_call_n, // call_n
-    NULL, // unary_op
-    NULL, // binary_op
-    NULL, // getiter
-    NULL, // iternext
-    .methods = {{NULL, NULL},},
+    .call_n = gen_wrap_call_n,
 };
 
 mp_obj_t mp_obj_new_gen_wrap(uint n_locals, uint n_stack, mp_obj_t fun) {
@@ -94,14 +87,9 @@
 const mp_obj_type_t gen_instance_type = {
     { &mp_const_type },
     "generator",
-    gen_instance_print, // print
-    NULL, // make_new
-    NULL, // call_n
-    NULL, // unary_op
-    NULL, // binary_op
-    gen_instance_getiter, // getiter
-    gen_instance_iternext, // iternext
-    .methods = {{NULL, NULL},},
+    .print = gen_instance_print,
+    .getiter = gen_instance_getiter,
+    .iternext = gen_instance_iternext,
 };
 
 // args are in reverse order in the array
diff --git a/py/objinstance.c b/py/objinstance.c
index 8ef2773..209643e 100644
--- a/py/objinstance.c
+++ b/py/objinstance.c
@@ -92,14 +92,6 @@
 const mp_obj_type_t instance_type = {
     { &mp_const_type },
     "instance",
-    NULL, // print
-    NULL, // make_new
-    NULL, // call_n
-    NULL, // unary_op
-    NULL, // binary_op
-    NULL, // getiter
-    NULL, // iternext
-    .methods = {{NULL, NULL},},
 };
 
 mp_obj_t mp_obj_new_instance(mp_obj_t class) {
diff --git a/py/objint.c b/py/objint.c
index 8d69c4e..9cd5eba 100644
--- a/py/objint.c
+++ b/py/objint.c
@@ -34,7 +34,6 @@
     { &mp_const_type },
     "int",
     .make_new = int_make_new,
-    .methods = { { NULL, NULL }, },
 };
 
 mp_obj_t mp_obj_new_int(machine_int_t value) {
diff --git a/py/objlist.c b/py/objlist.c
index 02a6b15..df9e197 100644
--- a/py/objlist.c
+++ b/py/objlist.c
@@ -57,6 +57,7 @@
         default:
             nlr_jump(mp_obj_new_exception_msg_1_arg(MP_QSTR_TypeError, "list takes at most 1 argument, %d given", (void*)(machine_int_t)n_args));
     }
+    return NULL;
 }
 
 static mp_obj_t list_binary_op(int op, mp_obj_t lhs, mp_obj_t rhs) {
@@ -260,27 +261,28 @@
 static MP_DEFINE_CONST_FUN_OBJ_1(list_reverse_obj, list_reverse);
 static MP_DEFINE_CONST_FUN_OBJ_2(list_sort_obj, list_sort);
 
+static const mp_method_t list_type_methods[] = {
+    { "append", &list_append_obj },
+    { "clear", &list_clear_obj },
+    { "copy", &list_copy_obj },
+    { "count", &list_count_obj },
+    { "index", &list_index_obj },
+    { "insert", &list_insert_obj },
+    { "pop", &list_pop_obj },
+    { "remove", &list_remove_obj },
+    { "reverse", &list_reverse_obj },
+    { "sort", &list_sort_obj },
+    { NULL, NULL }, // end-of-list sentinel
+};
+
 const mp_obj_type_t list_type = {
     { &mp_const_type },
     "list",
     .print = list_print,
     .make_new = list_make_new,
-    .unary_op = NULL,
     .binary_op = list_binary_op,
     .getiter = list_getiter,
-    .methods = {
-        { "append", &list_append_obj },
-        { "clear", &list_clear_obj },
-        { "copy", &list_copy_obj },
-        { "count", &list_count_obj },
-        { "index", &list_index_obj },
-        { "insert", &list_insert_obj },
-        { "pop", &list_pop_obj },
-        { "remove", &list_remove_obj },
-        { "reverse", &list_reverse_obj },
-        { "sort", &list_sort_obj },
-        { NULL, NULL }, // end-of-list sentinel
-    },
+    .methods = list_type_methods,
 };
 
 static mp_obj_list_t *list_new(uint n) {
@@ -344,7 +346,6 @@
     { &mp_const_type },
     "list_iterator",
     .iternext = list_it_iternext,
-    .methods = { { NULL, NULL }, },
 };
 
 mp_obj_t mp_obj_new_list_iterator(mp_obj_list_t *list, int cur) {
diff --git a/py/objmodule.c b/py/objmodule.c
index 2d6f955..3e7a0f7 100644
--- a/py/objmodule.c
+++ b/py/objmodule.c
@@ -24,14 +24,7 @@
 const mp_obj_type_t module_type = {
     { &mp_const_type },
     "module",
-    module_print, // print
-    NULL, // make_new
-    NULL, // call_n
-    NULL, // unary_op
-    NULL, // binary_op
-    NULL, // getiter
-    NULL, // iternext
-    .methods = {{NULL, NULL},},
+    .print = module_print,
 };
 
 mp_obj_t mp_obj_new_module(qstr module_name) {
diff --git a/py/objnone.c b/py/objnone.c
index 877e61f..c0efe6c 100644
--- a/py/objnone.c
+++ b/py/objnone.c
@@ -18,7 +18,6 @@
     { &mp_const_type },
     "NoneType",
     .print = none_print,
-    .methods = {{NULL, NULL},},
 };
 
 static const mp_obj_none_t none_obj = {{&none_type}};
diff --git a/py/objrange.c b/py/objrange.c
index 1ef4267..a2a0e67 100644
--- a/py/objrange.c
+++ b/py/objrange.c
@@ -25,14 +25,7 @@
 static const mp_obj_type_t range_type = {
     { &mp_const_type} ,
     "range",
-    NULL, // print
-    NULL, // make_new
-    NULL, // call_n
-    NULL, // unary_op
-    NULL, // binary_op
-    range_getiter,
-    NULL, // iternext
-    .methods = {{NULL, NULL},},
+    .getiter = range_getiter,
 };
 
 // range is a class and instances are immutable sequence objects
@@ -70,14 +63,7 @@
 static const mp_obj_type_t range_it_type = {
     { &mp_const_type },
     "range_iterator",
-    NULL, // print
-    NULL, // make_new
-    NULL, // call_n
-    NULL, // unary_op
-    NULL, // binary_op
-    NULL, // getiter
-    range_it_iternext,
-    .methods = {{NULL, NULL},},
+    .iternext = range_it_iternext,
 };
 
 mp_obj_t mp_obj_new_range_iterator(int cur, int stop, int step) {
diff --git a/py/objset.c b/py/objset.c
index dd9a4d1..67dab11 100644
--- a/py/objset.c
+++ b/py/objset.c
@@ -57,14 +57,8 @@
 const mp_obj_type_t set_type = {
     { &mp_const_type },
     "set",
-    set_print, // print
-    set_make_new, // make_new
-    NULL, // call_n
-    NULL, // unary_op
-    NULL, // binary_op
-    NULL, // getiter
-    NULL, // iternext
-    .methods = { { NULL, NULL }, },
+    .print = set_print,
+    .make_new = set_make_new,
 };
 
 mp_obj_t mp_obj_new_set(int n_args, mp_obj_t *items) {
diff --git a/py/objslice.c b/py/objslice.c
index da69b92..d95ccef 100644
--- a/py/objslice.c
+++ b/py/objslice.c
@@ -23,14 +23,7 @@
 const mp_obj_type_t ellipsis_type = {
     { &mp_const_type },
     "ellipsis",
-    ellipsis_print, // print
-    NULL, // make_new
-    NULL, // call_n
-    NULL, // unary_op
-    NULL, // binary_op
-    NULL, // getiter
-    NULL, // iternext
-    .methods = {{NULL, NULL},},
+    .print = ellipsis_print,
 };
 
 static const mp_obj_ellipsis_t ellipsis_obj = {{&ellipsis_type}};
@@ -58,7 +51,6 @@
     { &mp_const_type },
     "slice",
     .print = slice_print,
-    .methods = { { NULL, NULL }, },
 };
 
 // TODO: Make sure to handle "empty" values, which are signified by None in CPython
diff --git a/py/objstr.c b/py/objstr.c
index db3e0be..cc9f7f8 100644
--- a/py/objstr.c
+++ b/py/objstr.c
@@ -184,17 +184,19 @@
 static MP_DEFINE_CONST_FUN_OBJ_2(str_join_obj, str_join);
 static MP_DEFINE_CONST_FUN_OBJ_VAR(str_format_obj, 1, str_format);
 
+static const mp_method_t str_type_methods[] = {
+    { "join", &str_join_obj },
+    { "format", &str_format_obj },
+    { NULL, NULL }, // end-of-list sentinel
+};
+
 const mp_obj_type_t str_type = {
     { &mp_const_type },
     "str",
     .print = str_print,
     .binary_op = str_binary_op,
     .getiter = str_getiter,
-    .methods = {
-        { "join", &str_join_obj },
-        { "format", &str_format_obj },
-        { NULL, NULL }, // end-of-list sentinel
-    },
+    .methods = str_type_methods,
 };
 
 mp_obj_t mp_obj_new_str(qstr qstr) {
@@ -235,7 +237,6 @@
     { &mp_const_type },
     "str_iterator",
     .iternext = str_it_iternext,
-    .methods = { { NULL, NULL }, },
 };
 
 mp_obj_t mp_obj_new_str_iterator(mp_obj_str_t *str, int cur) {
diff --git a/py/objtuple.c b/py/objtuple.c
index ceca420..593b14e 100644
--- a/py/objtuple.c
+++ b/py/objtuple.c
@@ -103,7 +103,6 @@
     .make_new = tuple_make_new,
     .binary_op = tuple_binary_op,
     .getiter = tuple_getiter,
-    .methods = {{NULL, NULL},},
 };
 
 // the zero-length tuple
@@ -166,7 +165,6 @@
     { &mp_const_type },
     "tuple_iterator",
     .iternext = tuple_it_iternext,
-    .methods = {{NULL, NULL},},
 };
 
 static mp_obj_t mp_obj_new_tuple_iterator(mp_obj_tuple_t *tuple, int cur) {
diff --git a/py/objtype.c b/py/objtype.c
index 37d40b3..8778c18 100644
--- a/py/objtype.c
+++ b/py/objtype.c
@@ -27,5 +27,4 @@
     "type",
     .print = type_print,
     .call_n = type_call_n,
-    .methods = {{NULL, NULL},},
 };
diff --git a/py/runtime.c b/py/runtime.c
index 6bc71ab..0457f0d 100644
--- a/py/runtime.c
+++ b/py/runtime.c
@@ -775,10 +775,12 @@
     } else if (MP_OBJ_IS_OBJ(base)) {
         // generic method lookup
         mp_obj_base_t *o = base;
-        const mp_method_t *meth = &o->type->methods[0];
-        for (; meth->name != NULL; meth++) {
-            if (strcmp(meth->name, qstr_str(attr)) == 0) {
-                return mp_obj_new_bound_meth(base, (mp_obj_t)meth->fun);
+        const mp_method_t *meth = o->type->methods;
+        if (meth != NULL) {
+            for (; meth->name != NULL; meth++) {
+                if (strcmp(meth->name, qstr_str(attr)) == 0) {
+                    return mp_obj_new_bound_meth(base, (mp_obj_t)meth->fun);
+                }
             }
         }
     }
@@ -799,12 +801,14 @@
     } else if (MP_OBJ_IS_OBJ(base)) {
         // generic method lookup
         mp_obj_base_t *o = base;
-        const mp_method_t *meth = &o->type->methods[0];
-        for (; meth->name != NULL; meth++) {
-            if (strcmp(meth->name, qstr_str(attr)) == 0) {
-                dest[1] = (mp_obj_t)meth->fun;
-                dest[0] = base;
-                return;
+        const mp_method_t *meth = o->type->methods;
+        if (meth != NULL) {
+            for (; meth->name != NULL; meth++) {
+                if (strcmp(meth->name, qstr_str(attr)) == 0) {
+                    dest[1] = (mp_obj_t)meth->fun;
+                    dest[0] = base;
+                    return;
+                }
             }
         }
     }
