anchor.diff:      Piecelist = sorted_piecelist(Pieceset, Numpeers),
       NewState = State#state{
           watchers=NewWatchers},
  -    {reply, {ok, Ref, Piecelist}, NewState}.
  +    {reply, {ok, Ref, Piecelist}, NewState};
  +
  +handle_call({unwatch, Ref}, _, State) ->
  +    #state{watchers=Watchers} = State,
  +    demonitor(Ref),
  +    NewWatchers = lists:keydelete(Ref, #watcher.ref, Watchers),
  +    NewState = State#state{watchers=NewWatchers},
  +    {reply, ok, NewState}.
   
   
   %% @private
  
positive.code:          add_peer/2,
           add_piece/3,
           get_order/2,
           watch/3]).
  
  %% gen_server callbacks
  -export([init/1,
  
negative.code: watch(TorrentID, Tag, Pieceset) ->
      SrvPid = lookup_scarcity_server(TorrentID),
      gen_server:call(SrvPid, {watch, self(), Tag, Pieceset}).
  
  %% @doc Cancel updates to changes in scarcity
  %%
  %% @end
  -spec unwatch(torrent_id(), reference()) -> ok.
  unwatch(TorrentID, Ref) ->
      SrvPid = lookup_scarcity_server(TorrentID),
      gen_server:call(SrvPid, {unwatch, Ref}).
  
  
  %% @private
  