improve SplitAppplyCombine