modify multithreading