let get_group_project_addresses g = 
  let rec get_addresses plist = match plist with 
    | []   -> []
    | p::c -> (p.add::(get_addresses !(p.sub)))@(get_addresses c)
  in do_something_group (fun g -> get_addresses !(g.proj.sub)) (fun () -> []) g