using async instead of .post for performance