     render(board.grid)
   end
 
-  @spec render(Grid.t | nil) :: String.t
+  @spec render(nil | Grid.t) :: String.t
   defp render(nil), do: "#Board<[]>"
   defp render(grid) do
     indent = 2

      {{:ok, new_board}, new_board}
    end)
  end
  def __reveal__(board) do
    %{board | grid: Grid.__reveal__(board.grid)}
  end

defmodule LexibombServer.Board do
  @moduledoc """
  Maintains the state of game boards and provides the high-level public API for
  interacting with them througout gameplay.

  A default Lexibomb board consists of a 15 x 15 grid of squares. The squares
  are referred to using a coordinate system where the rows are numbered
  1 through 15, and the columns are numbered "a" through "o". A number combined
  with a letter specify a square on the board.
  """

  defstruct [:grid, :seed]
