was I drunk when I decided this should take a string as input to determine what generator to use? These should prolly all be methods. That can happen later.