refactored
merge & refactoring