Implemented async version