   (println (format "get-field-type-from-object-type: object-type: %s, field-selection: %s." object-type field-selection))
   (let [object-name (get-selection-object-name field-selection)
         _ (println "object-name: " object-name)
-        type-meta (type-system-lookup object-type object-name)]
-    type-meta))
+        type (get-in object-type [:fields (keyword object-name) :type])]
+    (if (map? type)
+      type
+      (get-type-meta type))))
 
 (defn resolve-field-on-object
   "FIXME"
   [object-type object field-entry]
   (let [object-name (get-selection-object-name field-entry)
-        type-info (type-system-lookup object-type object-name)
-        resolve-fn (:resolve-fn type-info)]
+        resolve-fn (:resolve-fn object-type)]
+    (println "resolve-filed-on-object: object-type: " object-type)
+    (println "resolve-field-on-object: resolve-fn: " resolve-fn)
     (resolve-fn object)))
 
 (defn merge-selection-sets


(defn execute-query [query]
  (let [selection-set (:selection-set query)
        visitied-fragments nil]
    (evaluate-selection-set :root nil selection-set visitied-fragments)))

(defn execute-definition
  [definition]

    (cond
      (is-scalar-field-type? field-type) result
      (is-enum-field-type? field-type) result
      (is-object-field-type? field-type) (evaluate-selection-set field-type result sub-selection-set nil)
      :else (throw (ex-info (format "Not a valid field type %s." field-type) {:field-type field-type})))))

(defn get-field-entry [object-type object fields]
  (println "get-field-entry: " fields)
