refactor, and goto do stop collect