re factored splitting