anchor.diff:  %%--------------------------------------------------------------------
   -spec cleanup() -> ok.
   cleanup() ->
  -    application:unset_env(?CLUSTER_MANAGER, chash).
  +    application:unset_env(ctool, chash).
   
   %%--------------------------------------------------------------------
   %% @doc
   %% Returns consistent hasing ring.
   %% @end
   %%--------------------------------------------------------------------
  --spec get_chash_ring() -> chash:chash().
  +-spec get_chash_ring() -> chash:chash() | undefined.
   get_chash_ring() ->
  -    application:get_env(?CLUSTER_MANAGER, chash, undefined).
  +    application:get_env(ctool, chash, undefined).
   
   %%--------------------------------------------------------------------
   %% @doc
  
positive.code: %%--------------------------------------------------------------------
  -spec set_chash_ring(chash:chash()) -> ok.
  set_chash_ring(CHash) ->
      application:set_env(?CLUSTER_MANAGER, chash, CHash).
  
  %%--------------------------------------------------------------------
  %% @doc
  
negative.code: %%--------------------------------------------------------------------
  -spec init([node()]) -> ok.
  init(Nodes) ->
      case application:get_env(ctool, chash) of
          undefined ->
              [Node0 | _] = Nodes,
              InitialCHash = chash:fresh(length(Nodes), Node0),
              CHash = lists:foldl(fun({I, Node}, CHashAcc) ->
                  chash:update(get_nth_index(I, CHashAcc), Node, CHashAcc)
              end, InitialCHash, lists:zip(lists:seq(1, length(Nodes)), Nodes)),
              application:set_env(ctool, chash, CHash);
          {ok, _Val} ->
              ok
      end.
  