Major refactor, now single threaded

Some haddock comments would be great here, I'm having trouble inferring exactly what to expect from these from the type signatures.