some refactoring
some refactoring