got async fully working as far as I can tell