imperfect thread refactor in asfds
better than nothing and tired of it sitting in my git status