Rewrite the icmp part and the way Supervior wait threads. And
now the threads can end properly while all the functions can work
together well.