refactoring, improvements
merge