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