* some refactoring