Went Async and added unit tests