async methods and implementation