fixed multithread