added perpetual generator