     callback = Application.get_env(:gen_serverring, :callback, Demo)
     start(type, [{name, callback}])
   end
-  def start(_type, args) do
-    Supervisor.start_link(GenServerring.App.Sup, args)
-  end
+  def start(_type, args),
+    do: Supervisor.start_link(GenServerring.App.Sup, args)
 
   defmodule Sup do
     use Supervisor


  defp get_ring(server), do: GenServer.call(server, :get_ring)

  defp up_nodes(ring) do
    MapSet.difference(ring.up_set, MapSet.new(get_set(ring.forced_down)))
  end

  defp monitor(list) do
    list = List.delete(list, node())
    Enum.each(list, fn(n) -> Node.monitor(n, :true) end)
  end

  defp gen_ring(set, up, payload, counter, callback) do
    gen_ring(set, up, payload, counter, callback, Crdtex.Set.new)
  end
  defp gen_ring(set, up, payload, counter, callback, forced_down) do
    %GenServerring{node_set: set, up_set: up, forced_down: forced_down,
      payload: payload, counter: counter, callback: callback}

      false -> notify_up_set(set, set, MapSet.put(old_up, n), callback)
    end
  end
  defp notify_up_set(old, merged, up, [], callback),
    do: notify_up_set(old, merged, up, callback)
  defp notify_up_set(old, merged, up, [n], callback),
    do: notify_up_set(old, merged, MapSet.put(up, n), callback)

  defp notify_up_set(old_set, merged_set, old_up, callback) do
    new_up = MapSet.difference(MapSet.new(merged_set), MapSet.new(old_set))
