Why is columnProjectors part of split? Unless you expect each split to have its own set of columnProjectors?