updated data generation