   (clj->proto [this]
     (-> (Configtx$ConfigValue/newBuilder)
         (.setVersion version)
-        (.setValue value)
+        (.setValue (with-default-empty-byte-string [value]
+                     value))
         (.setModPolicy mod-policy)
         (.build))))
 

    (make-config-group :version (.getVersion this)
                       :groups (utils/map-vals #(proto->clj % nil) (.getGroups this))
                       :values (utils/map-vals #(proto->clj % nil) (.getValues this))
                       :poilices (utils/map-vals #(proto->clj % nil) (.getPolicies this))
                       :mod-policy (.getModPolicy this)))
  
  Configtx$ConfigUpdate

  (clj->proto [this]
    (-> (Configtx$ConfigGroup/newBuilder)
        (.setVersion version)
        (.putAllGroups (utils/map-vals #(clj->proto %) groups))
        (.putAllValues (utils/map-vals #(clj->proto %) values))
        (.putAllPolicies (utils/map-vals #(clj->proto %) policies))
        (.setModPolicy mod-policy)
        (.build))))

(defn make-config-group
  [& {:keys [version groups values policies mod-policy]
      :or {groups {} values {} policies {}}}]
  (map->ConfigGroup {:version version :groups groups :values values
                     :policies policies :mod-policy mod-policy}))

(defrecord ConfigUpdate [channel-id read-set write-set type isolated-data]
  ICljToProto
