refactor split