Create separate async project for now to keep async modifications isolated from the sync code
#4: Iteration 1 of async implementation. All async unit tests are passing!