fixed async - requires different flow. Added tests