Another note for future refactorings (which, again, I'll open an issue for):  `new_binary`/`get_binary` are bad. Instead we should have registered (de-)serializers that depend on the media type. Whether someone is getting the reified types or the raw bytes should depend on the object property they access, e.g. `data` and `raw_data`/`encoded_data`. Converting from one to the other can be done lazily.