feature(safety)  Use an option type for optional elements to aid cleaner

client code and better match other protobuf client apis.