make multi-group assigner more flexible