     defp do_xema(unquote(type), data), do: create(unquote(type), do_xema(data))
 
     #def is_valid?(%Xema{type: unquote(type)} = schema, value) do
-    #  unquote(xema_module).is_valid?(schema, value)
+    #  unquote(module).is_valid?(schema, value)
     #end
 
     #def validate(%Xema{type: unquote(type)} = schema, value) do
-    #  unquote(xema_module).validate(schema, value)
+    #  unquote(module).validate(schema, value)
     #end
 
-    #def xvalidate(%Xema{keywords: %unquote(xema_module).Keywords{}} = schema, value) do
-    #  unquote(xema_module).validate(schema, value)
+    #def xvalidate(%Xema{keywords: %unquote(module).Keywords{}} = schema, value) do
+    #  unquote(module).validate(schema, value)
     #end
   end
 

  @spec is_valid?(Xema.t, any) :: boolean
  @spec validate(Xema.t, any) :: :ok | {:error, any}

  for {type, xema_module} <- Map.to_list(@types) do
    defp create(unquote(type)), do: create(unquote(type), [])

    defp create(unquote(type), keywords) do

          schema: schema,
          title: title,
          description: description,
          type: unquote(module).new(keywords)
        }
      end
    end

    def create_keywords(unquote(type), opts) do
      # struct(unquote(module), opts)
      unquote(module).new(opts)
    end


