idea: given a list of URL-to-path pairs, it downloads them in parallel to the specified path. implementation: These pairs are added to a queue(FIFO) along with an attempt counter. Multiple worker processes are spawned that each handle an entry in a queue. workers write to an error pipe and to a out pipe.