improve data generator