diff --git a/py/lexerstr.c b/py/lexerstr.c
index cab3ed3612225adca8fbed9285ab8f448ed21183..5481b1032dea9a061bd41d0c5efaf0524bd54e4b 100644
--- a/py/lexerstr.c
+++ b/py/lexerstr.c
@@ -43,7 +43,7 @@ STATIC mp_uint_t str_buf_next_byte(mp_lexer_str_buf_t *sb) {
 
 STATIC void str_buf_free(mp_lexer_str_buf_t *sb) {
     if (sb->free_len > 0) {
-        m_free((char*)sb->src_beg, sb->free_len);
+        m_del(char, (char*)sb->src_beg, sb->free_len);
     }
     m_del_obj(mp_lexer_str_buf_t, sb);
 }
diff --git a/py/objarray.c b/py/objarray.c
index 25d9daea97d5e12c218dbe68b69481d461684335..e2fee1f2edc806778c93bfba8beb8f6422d2d82c 100644
--- a/py/objarray.c
+++ b/py/objarray.c
@@ -116,7 +116,7 @@ STATIC mp_obj_array_t *array_new(char typecode, mp_uint_t n) {
     o->typecode = typecode;
     o->free = 0;
     o->len = n;
-    o->items = m_malloc(typecode_size * o->len);
+    o->items = m_new(byte, typecode_size * o->len);
     return o;
 }
 #endif
@@ -298,7 +298,7 @@ STATIC mp_obj_t array_append(mp_obj_t self_in, mp_obj_t arg) {
         int item_sz = mp_binary_get_size('@', self->typecode, NULL);
         // TODO: alloc policy
         self->free = 8;
-        self->items = m_realloc(self->items,  item_sz * self->len, item_sz * (self->len + self->free));
+        self->items = m_renew(byte, self->items, item_sz * self->len, item_sz * (self->len + self->free));
         mp_seq_clear(self->items, self->len + 1, self->len + self->free, item_sz);
     }
     mp_binary_set_val_array(self->typecode, self->items, self->len++, arg);
@@ -324,7 +324,7 @@ STATIC mp_obj_t array_extend(mp_obj_t self_in, mp_obj_t arg_in) {
     // make sure we have enough room to extend
     // TODO: alloc policy; at the moment we go conservative
     if (self->free < len) {
-        self->items = m_realloc(self->items, (self->len + self->free) * sz, (self->len + len) * sz);
+        self->items = m_renew(byte, self->items, (self->len + self->free) * sz, (self->len + len) * sz);
         self->free = 0;
     } else {
         self->free -= len;
diff --git a/py/objexcept.c b/py/objexcept.c
index 8bd802e94f81bb2612914f8d3523f395ea3cc3c7..987a54fda78b52998188d4d663adecef9e0afb00 100644
--- a/py/objexcept.c
+++ b/py/objexcept.c
@@ -64,7 +64,7 @@ mp_obj_t mp_alloc_emergency_exception_buf(mp_obj_t size_in) {
     mp_int_t size = mp_obj_get_int(size_in);
     void *buf = NULL;
     if (size > 0) {
-        buf = m_malloc(size);
+        buf = m_new(byte, size);
     }
 
     int old_size = mp_emergency_exception_buf_size;
@@ -78,7 +78,7 @@ mp_obj_t mp_alloc_emergency_exception_buf(mp_obj_t size_in) {
     MICROPY_END_ATOMIC_SECTION(atomic_state);
 
     if (old_buf != NULL) {
-        m_free(old_buf, old_size);
+        m_del(byte, old_buf, old_size);
     }
     return mp_const_none;
 }
diff --git a/py/objint.c b/py/objint.c
index 4a4a21aaf347fa2714dd367fc54b34c6a32119ee..0fb2a3826286892e854a71cad7c022c907624fbd 100644
--- a/py/objint.c
+++ b/py/objint.c
@@ -137,7 +137,7 @@ void mp_obj_int_print(void (*print)(void *env, const char *fmt, ...), void *env,
     print(env, "%s", str);
 
     if (buf != stack_buf) {
-        m_free(buf, buf_size);
+        m_del(char, buf, buf_size);
     }
 }
 
diff --git a/py/objtuple.c b/py/objtuple.c
index 55358a66a067a30c52bf1191dad521ec044fe695..d575decfd41489a85dfb6ea21c33e4f8363d8b4f 100644
--- a/py/objtuple.c
+++ b/py/objtuple.c
@@ -95,7 +95,7 @@ STATIC mp_obj_t mp_obj_tuple_make_new(mp_obj_t type_in, mp_uint_t n_args, mp_uin
             }
 
             mp_obj_t tuple = mp_obj_new_tuple(len, items);
-            m_free(items, alloc);
+            m_del(mp_obj_t, items, alloc);
 
             return tuple;
         }
diff --git a/py/pfenv.c b/py/pfenv.c
index 09ca0ef80e9309d095c71c68cb3624bc326f105e..8bc42dcdf99a7ff90778ea5d34a4b7aa7a3cf25a 100644
--- a/py/pfenv.c
+++ b/py/pfenv.c
@@ -308,7 +308,7 @@ int pfenv_print_mp_int(const pfenv_t *pfenv, mp_obj_t x, int sgn, int base, int
     }
 
     if (buf != stack_buf) {
-        m_free(buf, buf_size);
+        m_del(char, buf, buf_size);
     }
     return len;
 }
diff --git a/stmhal/sdcard.c b/stmhal/sdcard.c
index 8c9febd9aaaa2519958dada25bcf775f34cf9939..5686f949a3561e9eab198b639f485b8650223590 100644
--- a/stmhal/sdcard.c
+++ b/stmhal/sdcard.c
@@ -282,7 +282,7 @@ STATIC mp_obj_t sd_read(mp_obj_t self, mp_obj_t block_num) {
     mp_uint_t ret = sdcard_read_blocks(dest, mp_obj_get_int(block_num), 1);
 
     if (ret != 0) {
-        m_free(dest, SDCARD_BLOCK_SIZE);
+        m_del(uint8_t, dest, SDCARD_BLOCK_SIZE);
         nlr_raise(mp_obj_new_exception_msg_varg(&mp_type_Exception, "sdcard_read_blocks failed [%u]", ret));
     }