   `c:init/1` callback.
 
   `use Supervisor` also defines a `child_spec/1` function which allows
-  us to run `MyApp.Supervisor` as a child of another supervisor:
+  us to run `MyApp.Supervisor` as a child of another supervisor or
+  at the top of your supervision tree as:
 
       children = [
         MyApp.Supervisor


  The supervisor will then invoke `Stack.child_spec([:hello])` to retrieve a
  child specification. Now the `Stack` module is responsible for building its
  own specification. By default, `use GenServer` defines a `Stack.child_spec/1`
  function which returns the same child specification we had before:

      %{
        id: Stack,
        start: {Stack, :start_link, [[:hello]]}
      }

  It is also possible to simply pass the `Stack` module as a child:

      children = [
        Stack
      ]

  When only the module name is given, it is equivalent to `{Stack, []}`. In this
  case, we will end-up with a child specification that looks like this:

      %{
        id: Stack,
        start: {Stack, :start_link, [[]]}
      }

  By replacing the map specification by `{Stack, [:hello]}` or `Stack`, we keep
  the child specification encapsulated in the Stack module, using the default
  implementation defined by `use GenServer`. We can now share our `Stack` worker
  with other developers and they can add it directly to their supervision tree
  without worrying about the low-level details of the worker.

        Supervisor.child_spec({Stack, [:hello]}, id: MyStack, shutdown: 10_000)
      ]

  ## Module-based supervisors

  In the example above, a supervisor was started by passing the supervision
