Yeah, it depends. I think your model representation is good, but whatever you prefer. The nice part about handing off the JSON instead of the `ZSProgram` object to the renderer, aside from that being the most useful format for us to receive it in, is that you can make all the changes you want to your representation and you don't have to worry about it breaking our code as long as `projectJSON` turns it back into the correct format, which is easy to write test cases for.