i think `var key = stack.join('_');` at the end of for, shall create less unused strings