Maybe use an agent? Does it need to be concurrent?