This is going to be horrendously slow, but I need to test the idea of async