Refactoring & add Merge method