mutithreading optimisation