new generator structure