some refactor

successfully test