This could be done without async, but for readabilities sake, I used it.