I'm not sure if we actually need to ever support more formats. But fair enough, it makes the Cython code less repetitive.

A request, though: could you try putting both outer loops in `with nogil:` blocks? The more code can be executed without the GIL, the better.