some learning about protobuf