Generator is now abstract

The generator can use custom charset