We want to separate:
- the logic of extracting fields from an object
- the logic of building an object from fields.
At the moment both are done by the sanitizer.
Because of it, we are not able to use the logic of extracting field inside a message type __init__ method.
Reviewing the structure for this should allow to simplify the code.
It might be best to do that after using contracts (instead of our acceptor implementation)