checkpoint: unifying Split()