added optimized
merge