Rewritten with Async completed.