   def start(_type, _args) do
     children = []
     # 3 alternatives -- https://hexdocs.pm/elixir/Supervisor.html#module-child_spec-1
-
     # https://hexdocs.pm/elixir/Supervisor.html#module-start_link-2-init-2-and-strategies
     opts = [strategy: :one_for_one, name: SomeApp.Supervisor]
 

# -------------------------------------------------
# GenServer
# -------------------------------------------------

defmodule Some.Server do
  use GenServer

  def start_link(options) do
    state = %{
      delay: Keyword.get(options, :delay, 2_000),
      count: Keyword.get(options, :count, 0)

    GenServer.start_link(__MODULE__, state)
  end

  def next(pid) do
    GenServer.call(pid, :next_number)
  end

  # -------------------------------------------------

  @impl GenServer
  def init(state) do
    {:ok, state}
  end

  @impl GenServer
  def handle_call(:next_number, _from, %{count: count} = state) do
    {:reply, count, %{state | count: count + 1}}
  end
end

{:ok, pid} = Counter.start_link()
Counter.next(pid)

# -------------------------------------------------
# Supervisor
