only generate the data file once