   `:gen_fsm` module. For more information, please refer to the
   following:
 
-  http://www.erlang.org/doc/man/gen_fsm.html
-  http://www.erlang.org/doc/design_principles/gen_fsm_concepts.html
-  http://learnyousomeerlang.com/finite-state-machines
+  * http://www.erlang.org/doc/man/gen_fsm.html
+  * http://www.erlang.org/doc/design_principles/fsm.html
+  * http://learnyousomeerlang.com/finite-state-machines
   """
 
   @doc false

      #=> :ok
      #=> Here's your coffee!

  Notice we never call the FSM callbacks directly, they are called by
  OTP whenever we interact with the server. `send_event` is
  asynchronous, whereas `sync_send_event` is synchronous. In the
  case of GenFSM's, the different values a callback can return depends
  on the type of callback.

  State handling returns for send_event callbacks:

      { :next_state, next_state_name, new_state_data }
      { :next_state, next_state_name, new_state_data, timeout }
      { :next_state, next_state_name, new_state_data, :hibernate }
      { :stop, reason, new_state_data }

  State handling returns for sync_send_event callbacks:

      { :reply, reply, next_state_name, new_state_data }
      { :reply, reply, next_state_name, new_state_data, timeout }


        # Callbacks

        # :idle is the initial state
        def init(_args) do
          { :ok, :idle, StateData.new }
        end
