         type-fields (:type-fields definition)
         fields (create-type-system-fields type-fields)]
     [name {:name name
-           :kind :OBJECT
+           :kind :INTERFACE
            :fields fields}]))
+
+(defn create-type-system-enum [definition]
+  (let [name (:name definition)
+        enum-fields (:enum-fields definition)
+        fields (create-type-system-fields enum-fields)]
+    [name {:name name
+           :kind :ENUM
+           :fields (create-type-system-fields enum-fields)}]))
 
 (defn create-type-system-definition [definition]
   (let [type (:type-system-type definition)]

        type-fields (:type-fields definition)
        fields (create-type-system-fields type-fields)]
    [name {:name name
           :kind :OBJECT
           :fields fields}]))

(defn create-type-system-union [definition]
  (let [name (:name definition)
        fields (:type-fields definition)]
    [name {:name name
           :kind :OBJECT
           :fields fields}]))

(defn create-type-system-interface [definition]

      :type  (create-type-system-type definition)
      :input (create-type-system-input definition)
      :union  (create-type-system-union definition)
      :interface (create-type-system-interface definition)
      :enum (create-type-system-enum definition))))

(defn type-system-type-definitions
  [type]
