major refactoring
refactor merge with will