An implementation of the client side of BitTorrent Protocol