anchor.diff:           add/2,
            remove/2,
            remove/3,
  +         update_settings/1,
  +         update_settings/2,
            stop/0]).
   
   -compile({no_auto_import, [ceil/1]}).
  
positive.code:         Error -> Error
      end.
  
  -spec stop() -> ok | {error, any()}.
  stop() ->
      stop_cluster().
  
  
negative.code:             Ret = rpc:call(Node, amoc_controller, remove_users, [N, ForceRemove]),
              remove_users([{Node, Ret} | Result], Count - N, ForceRemove, T)
      end.
  
  -spec update_settings_on_nodes(amoc_config:settings(), [node()]) -> {ok, any()} | {error, any()}.
  update_settings_on_nodes(Settings, Nodes) ->
      Result = [{Node, update_settings_on_node(Settings, Node)} || Node <- Nodes],
      maybe_error(Result).
  
  -spec update_settings_on_node(amoc_config:settings(), node()) ->
            ok | {badrpc, any()} | {error, any()}.
  update_settings_on_node(Settings, Node) ->
      rpc:call(Node, amoc_controller, update_settings, [Settings]).
  
  -spec stop_cluster() -> {ok, any()} | {error, any()}.
  stop_cluster() ->
  