switched to using concurrent.futures