I think this is designed in a way that will make it very hard to parallelize later. I should fix that when I can.