merge with Refactoring