make splits optional and add normalized grouping