 
 (defn convert-prop-value [x]
   (cond (or (string? x) (number? x) (fn? x)) x
-        (implements? INamed x) (name x)
+        (named? x) (name x)
         (map? x) (reduce-kv (fn [o k v]
                               (doto o
                                 (aset (cached-prop-name k)

    (aget o k)))

(defn cached-prop-name [k]
  (if-not (implements? INamed k)
    k
    (if-let [k' (obj-get prop-name-cache (name k))]
      k'


;;; Common utilities

(defn named? [x]
  (or (keyword? x)
      (symbol? x)))

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

(defn valid-tag? [x]
