Move things around to support an aync/blocking API