(Sorry for all the back and forth here!)

It's probably just cleaner/better to use `Marshal.dump` to directly dump an array of those two properties -- e.g.:

`Marshal.dump([@values, @api_key])`

Then, in `_load`, we should be able to load from that. The only real customization we needed to override these methods for is using `construct_from`, right?

```
def self._load(args)
  values, api_key = Marshal.load(args)
  construct_from(values, api_key)
end
```

What do you think? It's basically what you have here, only taking advantage of the build-in serialization that Marshal.dump/load give you instead of implementing our own.