some refactoring
refactoring...