use async instead of nested horrors