updated generater