forget protobuf for now, we use json to encode/decode