Models

This still needs some work but I want @kring to take a look at this so that I know I didn't do anything "against the rules", especially since I had to edit `GenerateCSharp.config.json`