 
   defp add_totals(call_results) do
     {function_count, call_count, total_time} =
-      Enum.reduce(call_results, {0, 0, 0}, fn({_, {count, time}}, {function_count, call_count, total_time}) ->
+      Enum.reduce(call_results, {0, 0, 0}, fn {_, {count, time}}, acc ->
+        {function_count, call_count, total_time} = acc
         {function_count + 1, call_count + count, total_time + time}
       end)
 

  defp print_output({0, _, _, _}), do: print_function_count(0)

  defp print_output({function_count, call_results, call_count, total_time}) do
    formatted_rows = Enum.map(call_results, &(format_row(&1, total_time)))
    formatted_total = format_total(total_time, call_count)

    column_lengths = column_lengths(@header, formatted_rows)

    print_row(@header, column_lengths)
    print_row(formatted_total, column_lengths)
    Enum.each(formatted_rows, &(print_row(&1, column_lengths)))

    IO.puts ""

    print_function_count(function_count)
  end


  defp profile_and_analyse(fun, opts) do
    if Keyword.get(opts, :warmup, true) do
      IO.puts("Warmup...\n")
      fun.()
    end

