Refactoring; TODO: Since we have destruction function, we need to delete usage after merge