 
   Raises `Plug.Conn.AlreadySentError` if `conn` is already sent.
   """
-  @spec put_view(Plug.Conn.t(), [{atom | String.t(), atom}] | atom) :: Plug.Conn.t()
+  @spec put_view(Plug.Conn.t(), [{format :: atom, view}] | view) :: Plug.Conn.t()
   def put_view(%Plug.Conn{state: state} = conn, formats) when state in @unsent do
     put_private_view(conn, :phoenix_view, :replace, formats)
   end


  Raises `Plug.Conn.AlreadySentError` if `conn` is already sent.
  """
  @spec put_new_view(Plug.Conn.t(), atom) :: Plug.Conn.t()
  def put_new_view(%Plug.Conn{state: state} = conn, formats) when state in @unsent do
    put_private_view(conn, :phoenix_view, :new, formats)
  end


  Raises `Plug.Conn.AlreadySentError` if `conn` is already sent.
  """
  @spec put_root_layout(Plug.Conn.t(), [{format :: atom, layout}]) ::
          Plug.Conn.t()
  def put_root_layout(%Plug.Conn{state: state} = conn, layout) do
    if state in @unsent do
