https://usa-automation.net/news/17276-unravelling-the-challenge-of-threading