private static Peer DecodeFromDict(IDictionary<BEncodedString, BEncodedValue> dict)
{
string peerId;
if (dict.ContainsKey("peer id"))
peerId = dict["peer id"].ToString();
else if (dict.ContainsKey("peer_id")) // HACK: Some trackers return "peer_id" instead of "peer id"
peerId = dict["peer_id"].ToString();
else
peerId = string.Empty;
var connectionUri = new Uri(string.Format("tcp://{0}:{1}", dict["ip"], dict["port"]));
return new Peer(peerId, connectionUri);
}