anchor.diff:  start_link(TorrentID) ->
       gen_server:start_link(?MODULE, [TorrentID], []).
   
  +
   %% @doc
   %% @end
  --spec peerhandle(torrent_id()) -> peerhandle().
  -peerhandle(TorrentID) ->
  -    {peer, await_server(TorrentID)}.
  +-spec is_active(pid()) -> boolean().
  +is_active(SrvPid) ->
  +    gen_server:call(SrvPid, is_active).
   
   
   %% @doc
   %% @end
  --spec originhandle(torrent_id()) -> originhandle().
  -originhandle(TorrentID) ->
  -    {origin, await_server(TorrentID)}.
  -
  -
  -%% @doc
  -%% @end
  --spec is_active(peerhandle()) -> boolean().
  -is_active(SrvPid) ->
  -    gen_server:call(SrvPid, is_active).
  -
  -%% @doc
  -%% @end
  --spec request_chunks(pieceset(), non_neg_integer(), peerhandle()) ->
  -    {ok, [chunkspec()] | assigned}.
  -request_chunks(Peerset, Numchunks, {peer, SrvPid}) ->
  -    gen_server:call(SrvPid, {request_chunks, self(), Peerset, Numchunks}).
  -
  -
  -%% @doc
  -%% @end
  --spec mark_sent(pieceindex, chunkoffset(), chunklength(),
  -                pid(), originhandle()) -> ok.
  -mark_sent(Piece, Offset, Length, Pid, {origin, SrvPid}) ->
  -    gen_server:cast(SrvPid, {mark_sent, Pid, Piece, Offset, Length}),
  -    ok.
  -
  -
  -%% @doc
  -%% @end
  --spec mark_dropped(pieceindex(), chunkoffset(), chunklength(), peerhandle()) -> ok.
  -mark_dropped(Piece, Offset, Length, {peer, SrvPid}) ->
  -    SrvPid ! {mark_dropped, self(), Piece, Offset, Length},
  -    ok.
  -
  -
  -%% @doc
  -%% @end
  --spec mark_fetched(pieceindex(), chunkoffset(), chunklength(), peerhandle()) -> ok.
  -mark_fetched(Piece, Offset, Length, {peer, SrvPid}) ->
  -    SrvPid ! {mark_fetched, self(), Piece, Offset, Length},
  -    ok.
  +-spec activate(pid()) -> ok.
  +activate(SrvPid) ->
  +    gen_server:call(SrvPid, activate).
   
   
   %% @private
   init([TorrentID]) ->
       true = register_server(TorrentID),
  -    Pending = etorrent_pending:originhandle(TorrentID),
  +    Pending = etorrent_pending:await_server(TorrentID),
       InitState = #state{
           active=false,
           pending=Pending,
  
positive.code: 
  %% exported functions
  -export([start_link/1,
           peerhandle/1,
           originhandle/1,
           is_active/1,
           request_chunks/3,
           mark_sent/5,
           mark_dropped/4,
           mark_fetched/4]).
  
  %% gproc registry entries
  -export([register_server/1,
  
negative.code: 
  -record(state, {
      active   :: boolean(),
      pending  :: pid(),
      requests :: gb_tree()}).
  
  
  server_name(TorrentID) ->
  