                          :for "htmlFor"
                          :charset "charSet"})
 
-(defn obj-get [o k]
+(defn cache-get [o k]
   (when ^boolean (.hasOwnProperty o k)
     (aget o k)))
 
 (defn cached-prop-name [k]
   (if (named? k)
-    (if-some [k' (obj-get prop-name-cache (name k))]
+    (if-some [k' (cache-get prop-name-cache (name k))]
       k'
       (aset prop-name-cache (name k)
             (util/dash-to-camel k)))


(defn vec-to-elem [v]
  (assert (pos? (count v)) (hiccup-err v "Hiccup form should not be empty"))
  (let [tag (nth v 0)]
    (assert (valid-tag? tag) (hiccup-err v "Invalid Hiccup form"))
    (cond
      (hiccup-tag? tag)

        :id id
        :className class}))

(defn try-get-key [x]
  ;; try catch to avoid clojurescript peculiarity with
  ;; sorted-maps with keys that are numbers
  (try (get x :key)
       (catch :default e)))

(defn get-key [x]
  (when (map? x)
    (try-get-key x)))

(defn key-from-vec [v]
  (if-some [k (-> (meta v) get-key)]
    k
    (-> v (nth 1 nil) get-key)))

(defn reag-element [tag v]
  (let [c (comp/as-class tag)
        jsprops #js{:argv v}]
    (when-some [key (key-from-vec v)]
      (.! jsprops :key key))
    (.' util/react createElement c jsprops)))

(defn adapt-react-class [c]
