combinators for type conversion (serialization/deserialization, with GADTs)