fix logic, fix async gathering bugs