     (assert root-type "No root type found in schema.")
     (if (seq var-errors)
       [var-errors nil]
-      (execute-fields selection-set (assoc state :variables updated-variables) root-type :root))))
+      (execute-fields selection-set (assoc state :variables updated-variables) root-type {:vals :root}))))
 
 (defn- execute-document
   [document state]

  ;; executed. Current implementation will merge result from multiple
  ;; statements.
  (let [results (map #(execute-statement % state) document)
        [errors fields] (rollup-errors results)]
    (if (seq errors)
      {:errors errors}
      {:data (into {} fields)})))

;; Public API


(defn- execute-field
  "return vector of [errors field]"
  [selection field-map state parent-type-name parent-value]
  (assert (validate-result-format parent-value) "parent-value is not valid.")
  (let [selection-name (:name selection)
        field-def (get field-map selection-name)
        _ (assert selection-name (format "No name for selection: %s." selection))
