 
   ## Options
 
-  The `:name` option is used for name registered as described in the module
+  The `:name` option is used for name registration as described in the module
   documentation. If the option `:timeout` option is present, the server is
   allowed to spend the given milliseconds initializing or it will be
   terminated and the start function will return `{:error, :timeout}`.
 
-  If the option `:debug` is present, the corresponding function in the
+  If the `:debug` option is present, the corresponding function in the
   [`:sys` module](http://www.erlang.org/doc/man/sys.html) will be invoked.
 
-  If the option `:spawn_opt` is present, the given options will be passed
+  If the `:spawn_opt` option is present, its value will be passed as options
   to the underlying process as in `Process.spawn/3`.
 
   ## Return values
 
-  If the server is successfully created and initialized the function returns
+  If the server is successfully created and initialized, the function returns
   `{:ok, pid}`, where pid is the pid of the server. If there already exists a
-  process with the specified server name the function returns
+  process with the specified server name, the function returns
   `{:error, {:already_started, pid}}` with the pid of that process.
 
-  If the `init/1` callback fails with reason, the function returns
+  If the `init/1` callback fails with `reason`, the function returns
   `{:error, reason}`. Otherwise, if it returns `{:stop, reason}`
   or `:ignore`, the process is terminated and the function returns
   `{:error, reason}` or `:ignore`, respectively.


  Although in the example above we have used `GenServer.start_link/2` and
  friends to directly start and communicate with the server, most of the
  time we don't call the `GenServer` functions directly, instead, we wrap
  them in functions too.

  Here is a better implementation of our Stack module:


      GenServer.call(MyStack, :pop) #=> :hello

  Once the server is started, the remaining functions in this module (`call/2`,
  `cast/2`, and friends) will also accept an atom, or any `:global` or `:via`
  tuples. In general, the following formats are supported:

  * a `pid`
