splitter refactor