Separating generation out to executable only.

Adding custom types.
Fixes for strings, modules, tests.