To tackle #16, we need some timing code to measure where we are spending time. I suspect that when we are blocking for 3 seconds to read, that's 1 bottleneck, and the rest probably in reader math and sorting. It's possible we are not being efficient in sorting.