back to single threaded, but it actually works reliably now.  revisit
threading later