factor out io from splitter object