add split.{cpp,h}