         dctor-as2   (symbol (str 'describe-as- ctor-name '2))
         mctor      (symbol (str 'map-> name))]
     `(let [validators# (build-validators ~props)
-           defaults#   (extract-key ~props :default)
-           inits#      (extract-key ~props :init)]
+           inits#      (build-initializers ~props)
+           defaults#   (build-defaults ~props)]
        ;;(prn "-------- " ~type)
-       ;;(prn :props props)
-       ;;(prn :fields fields)
+       ;;(prn :props ~props)
+       ;;(prn :fields ~fields)
        ;;(prn :validators validators#)
-       ;;(prn :inits inits)
-       ;;(prn :defaults defaults)
+       ;;(prn :inits inits#)
+       ;;(prn :defaults defaults#)
        (defrecord ~name [~@fields]
          trio/PTripleSeq
          (~'triple-seq

               :default (fn [_] (utils/timestamp))}
   :modified  {:prop (:modified dcterms)
               :validate [(v/number) (v/pos)]
               :default (fn [_] (utils/timestamp))}
   :rights    {:prop (:accessRights dcterms)
               :init (pick-id-coll :rights)
               :default (fn [_] [])
               :validate {:* [(v/uuid4)]}
               :card :*}})

(defentity Collection (:MediaCollection imago)

               :optional true}
   :homepage  {:prop (:homepage foaf)
               :validate [(v/url)]
               :card :*
               :optional true}
   :password  {:prop (:passwordSha256Hash imago)
               :validate [(v/string) (v/fixed-length 64)]
