move shit around
make tests a little more async friendly
refactor a bit