Updated async version