functions have been restructured so now the client only responsible for the basic steps, but the UI drives the merge operation