uses hideStopButton() to trigger the event, because all other paths are conditional and would require the event to be triggered in multiple functions, compared to hideStopButton() already being called at the end of all the generations
unblockGeneration() was another candidate, but it is not consistently executed to be viable