   @doc """
   Places a bomb on the board square at the given coordinate.
 
-  Returns `:ok` on success, or `{:error, reason}` on failure.
+  Returns `:ok` on success, or `{:error, :invalid_coord}` on failure.
   """
-  @spec place_bomb(pid, coord) :: :ok | {:error, reason}
+  @spec place_bomb(pid, coord) :: :ok | {:error, :invalid_coord}
   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}
+    place_bombs(pid, [coord])
+  end
+
+  @spec place_bombs(pid, [coord]) :: :ok | {:error, :invalid_coord}
   def place_bombs(pid, coords) do
     parsed_coords = coords |> Enum.map(&parse_coord(pid, &1))
 

  @type coord :: Grid.coord | {non_neg_integer, String.t} | String.t
  @type seed :: {integer, integer, integer}
  @type t :: %{grid: Grid.t, seed: seed}

  @typep reason :: :badarg | :coord_off_board

  @default_size 15
  @bomb_count 22

      end)

    if any_errors? do
      {:error, :invalid_coord}
    else
      parsed_coords
      |> Keyword.values
