internal merge