              [name {:root root
                     :pathsets pathsets}])))
 
+(def variables-key "cambo$variables")
+
+(defn get-variables
+  [props]
+  (aget props variables-key))
+
+(defn variables*
+  [this]
+  (get-variables (.-props this)))
+
 (defn variables
   [this]
-  (get-in (props this) [:cambo/prop :variables]))
+  (get (variables* this) :variables))
 
 (defn set-variables
   ([this variables]
    (set-variables this variables nil))
   ([this variables cb]
-   (let [run (get-in (props this) [:cambo/prop :run])]
+   (let [{:keys [run]} (variables* this)]
      (run variables cb false))))
 
 (defn force-fetch

  ([this variables]
   (force-fetch this variables nil))
  ([this variables cb]
   (let [run (get-in (props this) [:cambo/prop :run])]
     (run variables cb true))))

#?(:cljs (defn create-container

                               (.apply js/React.Component this (js-arguments))
                               (set! (.-pending this) nil)
                               (set! (.-mounted this) true)
                               (set! (.-state this)
                                     (->state {:query-data nil
                                               :variables nil
                                               :cambo/variables {:run (fn [variables cb force?]
                                                                        (.run-variables this variables cb force?))}}))
                               this))]
             (set! (.-prototype container)
                   (goog.object/clone js/React.Component.prototype))
