     (if (> (count v) first-child)
       (subvec v first-child))))
 
+(defn props-argv [p]
+  (.' p :argv))
+
 (defn get-argv [c]
   (.' c :props.argv))
 
 (defn get-props [c]
-  (-> (.' c :props.argv) extract-props))
+  (-> (get-argv c) extract-props))
 
 (defn get-children [c]
-  (-> (.' c :props.argv) extract-children))
+  (-> (get-argv c) extract-children))
 
 (defn reagent-component? [c]
-  (-> (.' c :props.argv) nil? not))
+  (-> (get-argv c) nil? not))
 
 
 ;;; State

(defn do-render-sub [c]
  (let [f (.' c :reagentRender)
        _ (assert (ifn? f))
        p (.' c :props)
        res (if (true? (.' c :cljsLegacyRender))
              (f c)
              (let [argv (.' p :argv)
                    n (count argv)]
                (case n
                  1 (f)

    :componentWillUpdate
    (fn [nextprops]
      (this-as c
               (f c (props-argv nextprops))))

    :componentDidUpdate
    (fn [oldprops]
      (this-as c
               (f c (props-argv oldprops))))

    :componentWillMount
    (fn []
