Async and non async version added