А потом постепенно подчищая функции, которые выполнены
смотри, у тебя есть главный цикл на бесконечном генераторе и каждая функция тоже генератор на while
они обрабатываются таким образом друг за другом.. можно так сделать.. ну конечно в зависимости от событий поступающих в главный цикл