refactor, stack, save