 
   def tag(tag), do: tag(tag, [], [])
 
-  @spec tag1(tagname, attrs) :: outlist | String.t
+  @spec tag1(tagname, attrs) :: out_tag1
   def tag1(tag, attrs\\[]) do
     if attrs == [] do
       "<#{tag} />"

  @type attrs :: [{atom, String.t}]
  @type content :: String.t | list
  @type outlist  :: [any(), ...]

  @spec tag(tagname, attrs, content)  :: outlist
  @spec tag(tagname)                  :: outlist

  ~w[meta link]
    |> Enum.each fn name ->
      sym = :"#{name}"
      @spec unquote(sym)(attrs) :: out_tag1
      def unquote(sym)(attrs\\[]), do: tag1(unquote(sym), attrs)
    end

