Cleanup refactoring. Hid the generators behind a facade, separated factory generation into it's own class.