mini refactor group_by