begin refactoring how to do grouping