I commented the simpleDownloadAlgorithm call from PeerListener for changing the main body of RUBTClient such that it manages the flow of the client. I also added a couple of methods for unchocking control from outside bittorrent... we don't need to use them but they are just getters. The main idea is connecting with peers, queue them until they are all unchocked and then execute the algorithm for selecting what are we going to get from who.