multy-threading updated