modify to fit both async and rack