multi-threading
merge