 
 (defn vec-to-comp [v level]
   (assert (pos? (count v)) "Hiccup form should not be empty")
-  (assert (valid-tag? (v 0))
+  (assert (valid-tag? (nth v 0))
           (str "Invalid Hiccup form: " (pr-str v)))
-  (let [c (as-class (v 0))
+  (let [c (as-class (nth v 0))
         jsprops (js-obj cljs-argv v
                         cljs-level level)]
     (let [k (-> v meta get-key)
           k' (if (nil? k)
-               (-> v (get 1) get-key)
+               (-> v (nth 1 nil) get-key)
                k)]
       (when-not (nil? k')
         (aset jsprops "key" k')))


;;; Props conversion

(def cached-prop-name (memoize undash-prop-name))
(def cached-style-name (memoize util/dash-to-camel))

(defn convert-prop-value [val]
  (if (map? val)


;;; Common utilities

(defn memoize-1 [f]
  (let [mem (atom {})]
    (fn [arg]
      (let [v (get @mem arg)]
        (if-not (nil? v)
          v
          (let [ret (f arg)]
            (swap! mem assoc arg ret)
            ret))))))

(defn hiccup-tag? [x]
  (or (keyword? x)
      (symbol? x)
