add split optimization