There's a bunch of stuff in here
If a GObject doesn't have an id, it will generate a new object, otherwise, get one
Refactoring changes.  Primarily moved serialization to VM