Provide async methods

Generalize duplicate logic to some functions