refactoring to call gc_move directly