don't rely on gc_collect_cycles