move GroupProduct into lib.groups