add Protobuf support