                   4 (f (nth argv 1) (nth argv 2) (nth argv 3))
                   5 (f (nth argv 1) (nth argv 2) (nth argv 3) (nth argv 4))
                   (apply f (subvec argv 1)))))]
-    (if (vector? res)
-      (as-element res)
-      (if (ifn? res)
-        (let [f (if (reagent-class? res)
-                  (fn [& args]
-                    (as-element (apply vector res args)))
-                  res)]
-          (.! c :reagentRender f)
-          (recur c))
-        res))))
+    (cond
+      (vector? res) (as-element res)
+      (ifn? res) (let [f (if (reagent-class? res)
+                           (fn [& args]
+                             (as-element (apply vector res args)))
+                           res)]
+                   (.! c :reagentRender f)
+                   (recur c))
+      :else res)))
 
 (declare comp-name)
 

      (this-as c (apply f c args)))
    f))

(def dont-wrap #{:render :reagentRender :cljsName})

(defn dont-bind [f]
  (if (fn? f)


(defn reagent-class? [c]
  (and (fn? c)
       (some? (.' c :prototype.reagentRender))))

(defn do-render-sub [c]
  (let [f (.' c :reagentRender)
