Refactor the generators to a Generator interface so that they can be a bit more standard.

The interface is really simple generalizing a lot of options that could possibly be used within an implementation.  Converted generators to use the builder pattern instead of being kinda random for construction.