refactor + merge