realised async is probably not the best way to go