Tried threading, but I think asyncio is the way to go