     tag: maybe_tag(),
     page: pos_integer(),
     max_page: pos_integer(),
+    title: binary(),
     posts: [Post.t()],
     list_url: binary(),
     output: binary()
   }
   @type maybe_tag :: Tag.t() | nil
 
-  defstruct [:tag, :page, :max_page, :posts, :list_url, :output]
+  defstruct [:tag, :page, :max_page, :title, :posts, :list_url, :output]
 
   @spec generate(maybe_tag(), [Post.t()], map()) :: [t()]
   def generate(tag, posts, proj) do

        tag: tag,
        page: page,
        max_page: max_page,
        posts: posts,
        list_url: Path.join([proj.base_url, list_dir, "page-#{page}.html"]),
        output: Path.join([proj.dest, list_dir, "page-#{page}.html"])

  @spec to_html([t()], map()) :: Error.result(binary())
  def to_html([h | _] = post_lists, proj) do
    template = Template.get("list")
    render([nil | post_lists], [], template)
  end

  @spec render([t()], [Error.result(binary())], Template.t()) ::
    Error.result([binary()])

  defp render([_last], acc, _template) do
    acc
    |> Enum.reverse()
    |> Error.filter_results_with_values(:render)
  end

  defp render([prev, curr | rest], acc, template) do
    next = List.first(rest)
    bindings = [
      header: curr.title,
      posts: curr.posts,
      current_page: curr.page,
      max_page: curr.max_page,
