let rec remove_empty_groups g =
  let rec iter g =
    let l = List.map iter g.group_groups in
    let (sum, l2) =
      List.fold_left
        (fun (acc_sum, acc_l) (n,g) ->
          if n = 0 then
            (acc_sum, acc_l)
          else
            (acc_sum + n, acc_l @ [g])
        )
        (List.length g.group_items, [])
        l
    in
    g.group_groups <- l2;
    (sum, g)
  in
  iter g