major updates to add and modify features, make merge more accurate and reliable.