+ some refactoring