add google protobuf support