The principle is that whatever goes into a `ZSProgram` object should came back out when you call `projectJSON`. So this should always be true:

```objc
NSDictionary *pongJSON = [something that fetches JSON from the bundle];
ZSProgram *program = [ZSProgram programForResource:@"pong"];
NSDictionary *expectedJSON = [program projectJSON];

[expectedJSON isEqual:pongJSON]; // This should always return true
```

So if objects have an `image` key coming in, they should have that same image key when they come back out. Does that make sense?