move the generators into an independent file