Major refactor, now single threaded

Probably keep this as a 0.* release - we can be a bit flexible with semantic versioning before the initial production release at 1.0, and I don't think it's mature enough for that yet.