It turns out splitting X and Z errors give much better performance, i.e. split error by separator. But why?