anchor.diff:      NewQ = remove_from_queue({Index, Begin, Len}, State#cstate.his_requested_queue),
       State#cstate{his_requested_queue = NewQ};
   handle_message({request, Index, Begin, Len}, State) ->
  -    case queue:is_empty(State#cstate.his_requested_queue) of
  +    case State#cstate.me_choking of
  +	true ->
  +	    {noreply, insert_into_his_queue({Index, Begin, Len}, State)};
   	false ->
  -	    {noreply, insert_into_his_queue({Index, Begin, Len}, State)};
  -	true ->
  -	    case State#cstate.me_choking of
  -		no ->
  -		    {noreply, insert_into_his_queue({Index, Begin, Len}, State)};
  -		yes ->
  -		    transmit_piece(Index, Begin, Len, State),
  -	            {noreply, State}
  -	    end
  +	    NS = insert_into_his_queue({Index, Begin, Len}, State),
  +	    {noreply, transmit_next_piece(NS)}
       end.
   
   transmit_next_piece(State) ->
  -    case queue:out(State#cstate.his_requested_queue) of
  -	{{value, {Index, Begin, Len}}, Q} ->
  -	    transmit_piece(Index, Begin, Len, State),
  -	    State#cstate{his_requested_queue = Q};
  -	{empty, _Q} ->
  -	    State
  +    case State#cstate.transmitting of
  +	true ->
  +	    State;
  +	false ->
  +	    case queue:out(State#cstate.his_requested_queue) of
  +		{{value, {Index, Begin, Len}}, Q} ->
  +		    transmit_piece(Index, Begin, Len, State),
  +		    State#cstate{his_requested_queue = Q,
  +				 transmitting = yes};
  +		{empty, _Q} ->
  +		    State
  +	    end
       end.
   
   transmit_piece(Index, Begin, Len, State) ->
  
positive.code: 		 he_choking = true,
  		 he_interested = false,
  		 socket = none,
  		 transmitting = no,
  		 connection_manager_pid = no,
  		 name = no,
  		 send_pid = no,
  
negative.code: handle_cast(unchoke, State) ->
      {noreply, send_unchoke(State)};
  handle_cast(datagram_sent, State) ->
      case State#cstate.me_choking of
  	true ->
  	    {noreply, State};
  	false ->
  	    {noreply, transmit_next_piece(State#cstate{transmitting = false})}
      end.
  
  handle_info({'EXIT', _FromPid, Reason}, State) ->
      error_logger:warning_msg("Recv loop exited: ~s~n", [Reason]),
  