   end
 
   @spec letter_to_col(String.t) :: pos_integer
-  def letter_to_col(string) when byte_size(string) === 1 do
+  defp letter_to_col(string) when byte_size(string) === 1 do
     normalized = String.downcase(string)
     [char] = normalized |> to_char_list
 
     char - ?a + 1
-  end
-
-  @doc """
-  Places a bomb on the board square at the given coordinate.
-
-  Returns `:ok` on success, or `{:error, reason}` on failure.
-  """
-  @spec place_bomb(pid, coord) :: :ok | {:error, coord_error}
-  def place_bomb(pid, coord) do
-    case parse_coord(pid, coord) do
-      {:ok, coord} ->
-        do_place_bomb(pid, coord)
-      {:error, reason} ->
-        {:error, reason}
-    end
-  end
-
-  @spec do_place_bomb(pid, Grid.coord) :: :ok
-  defp do_place_bomb(pid, coord) do
-    Agent.update(pid, fn board ->
-      %{board | grid: Grid.place_bomb(board.grid, coord)}
-    end)
-  end
-
-  @spec place_bombs(pid, [coord]) :: :ok | {:error, coord_error}
-  def place_bombs(pid, coords) do
-    parsed_coords = coords |> Enum.map(&parse_coord(pid, &1))
-
-    any_errors? =
-      Enum.any?(parsed_coords, fn coord ->
-        match?({:error, _}, coord)
-      end)
-
-    if any_errors? do
-      {:error, :badarg}
-    else
-      parsed_coords
-      |> Keyword.values
-      |> do_place_bombs(pid)
-    end
-  end
-
-  @spec do_place_bombs([Grid.coord], pid) :: :ok
-  def do_place_bombs(coords, pid) do
-    Agent.update(pid, fn board ->
-      %{board | grid: Grid.place_bombs(board.grid, coords)}
-    end)
-  end
-
-  @spec place_random_bombs(pid, pos_integer) :: :ok
-  def place_random_bombs(pid, count \\ @bomb_count) do
-    board = get(pid)
-    _ = Utils.seed_the_prng(board.seed)
-
-    board.grid
-    |> Grid.active_squares
-    |> Map.keys
-    |> Enum.take_random(count)
-    |> do_place_bombs(pid)
-  end
-
-  @spec size(pid) :: pos_integer
-  def size(pid) do
-    Agent.get(pid, fn board ->
-      Grid.board_size(board.grid)
-    end)
   end
 
   # Reveal all the squares on a `board` for debugging.

    end
  end

  def parse_coord(pid, {row, letter}) when is_binary(letter) do
    col = letter_to_col(letter)
    parse_coord(pid, {row, col})
  end

  def parse_coord(pid, {row, col}) do
    grid = get(pid).grid

    if Grid.valid_coord?(grid, {row, col}) do

    Agent.update(pid, fn _ -> board end)
  end

  @spec size(pid) :: pos_integer
  def size(pid) do
    Agent.get(pid, fn board ->
      Grid.board_size(board.grid)
    end)
  end

  @doc """
  Places a bomb on the board square at the given coordinate.

  Returns `:ok` on success, or `{:error, reason}` on failure.
  """
  @spec place_bomb(pid, coord) :: :ok | {:error, reason}
  def place_bomb(pid, coord) do
    case parse_coord(pid, coord) do
      {:ok, coord} ->
        do_place_bomb(pid, coord)
      {:error, reason} ->
        {:error, reason}
    end
  end

  @spec do_place_bomb(pid, Grid.coord) :: :ok
  defp do_place_bomb(pid, coord) do
    Agent.update(pid, fn board ->
      %{board | grid: Grid.place_bomb(board.grid, coord)}
    end)
  end

  @spec place_bombs(pid, [coord]) :: :ok | {:error, reason}
  def place_bombs(pid, coords) do
    parsed_coords = coords |> Enum.map(&parse_coord(pid, &1))

    any_errors? =
      Enum.any?(parsed_coords, fn coord ->
        match?({:error, _}, coord)
      end)

    if any_errors? do
      {:error, :badarg}
    else
      parsed_coords
      |> Keyword.values
      |> do_place_bombs(pid)
    end
  end

  @spec do_place_bombs([Grid.coord], pid) :: :ok
  defp do_place_bombs(coords, pid) do
    Agent.update(pid, fn board ->
      %{board | grid: Grid.place_bombs(board.grid, coords)}
    end)
  end

  @spec place_random_bombs(pid, pos_integer) :: :ok
  def place_random_bombs(pid, count \\ @bomb_count) do
    board = get(pid)
    _ = Utils.seed_the_prng(board.seed)

    board.grid
    |> Grid.active_squares
    |> Map.keys
    |> Enum.take_random(count)
    |> do_place_bombs(pid)
  end

  @spec parse_coord(pid, coord) :: {:ok, Grid.coord} | {:error, reason}
  defp parse_coord(pid, coord) when is_binary(coord) do
    {row_string, letter} = coord |> String.split_at(-1)

    try do
