anchor.diff:  handle_cast(interested, State) ->
       statechange_interested(State, true),
       {noreply, State#state{local_interested=true}};
  -handle_cast({have, PN}, #state{remote_pieces=unknown, send_pid=SPid}=S) ->
  -    etorrent_peer_send:have(SPid, PN),
  -    {noreply, S};
  -handle_cast({have, PN}, #state{remote_pieces=PS, send_pid=SPid}=State) ->
  -    %% Don't send duplicate have-messages
  -    case etorrent_pieceset:is_member(PN, PS) of
  -        true  -> ok;
  -        false -> ok = etorrent_peer_send:have(SPid, PN)
  -    end,
  -    {noreply, State};
  -handle_cast({endgame_got_chunk, Chunk}, S) ->
  -    NS = handle_endgame_got_chunk(Chunk, S),
  -    {noreply, NS};
   handle_cast(try_queue_pieces, S) ->
       {ok, NS} = try_to_queue_up_pieces(S),
       {noreply, NS};
  
positive.code: 
  
  %% @private
  handle_info({tcp, _P, _Packet}, State) ->
      ?ERR([wrong_controller]),
      {noreply, State};
  handle_info(Info, State) ->
      ?WARN([unknown_msg, Info]),
      {noreply, State}.
  
negative.code: unchoke(Pid) ->
      gen_server:cast(Pid, unchoke).
  
  %% @doc Initialize the connection.
  %% <p>The `Way' parameter tells the client of the connection is
  %% `incoming' or `outgoing'. They are handled differently since part
  