refactor
some refactor