Extracted generators for each declaration

Slowly moving towards extensible / configurable code gen