Surprisingly few bugs in the last bit of code that I wrote so far. Testing out more of the functionality I found one missed case where a certain kind of data wouldn't be deserialized and a missed check to make sure an optional had a value before attempting to get it. Both issues are now fixed.