Add protobuf descriptor

Intermediate PR to receive early feedback.
function should be marked final