stuff
made circulate async