using protobuf rather than Protobuf, to support new deriving semantics