anchor.diff:  %% everything to the peer and await the peer to get back to us. When he
   %% eventually gets back, we can check his InfoHash against ours.</p>
   %% @end
  --type capabilities() :: [{integer(), atom()}].
  --spec initiate_handshake(port(), binary(), binary()) ->
  -    {error, term()} | {ok, capabilities(), binary(), binary()}
  -                    | {ok, capabilities(), binary()}.
  +-type peerid() :: <<_:160>>.
  +-type infohash() :: <<_:160>>.
  +-spec initiate_handshake(port(), peerid(), infohash()) ->
  +     {'error',atom() | {'bad_header',binary()}}
  +     | {'ok',['extended_messaging' | 'fast_extension',...],<<_:160>>}.
   initiate_handshake(Socket, LocalPeerId, InfoHash) ->
       % Since we are the initiator, send out this handshake
       Header = protocol_header(),
  
positive.code: 	 {<<"reqq">>, ReqQ},
  	 {<<"m">>, empty_dict}])).
  
  
negative.code: %% completed by a call to complete_handshake/3.</p>
  %% @end
  -spec receive_handshake(port()) ->
      {'error',term() | {'bad_header',binary()}}
      | {'ok',['extended_messaging' | 'fast_extension',...],<<_:160>>}
      | {'ok',['extended_messaging' | 'fast_extension',...],<<_:160>>,<<_:160>>}.
  receive_handshake(Socket) ->
      Header = protocol_header(),
      case gen_tcp:send(Socket, Header) of
  