fixed multi-threaded data generation