let mk_slice selection =
  let n = string_of_int (1 + List.length (!Db.Slicing.Project.get_all ())) in
  let project_name = (SlicingParameters.ProjectName.get ()) ^ n in
  let project = !Db.Slicing.Project.mk_project project_name in
  !Db.Slicing.Request.add_persistent_selection project selection ;
  !Db.Slicing.Request.apply_all_internal project;
  if SlicingParameters.Mode.Callers.get () then
    !Db.Slicing.Slice.remove_uncalled project;
  let sliced_project_name = 
    let postfix = SlicingParameters.ExportedProjectPostfix.get ()
    in if postfix = "" then project_name else (project_name ^ " " ^ postfix)
  in 
  let new_project =
    !Db.Slicing.Project.extract sliced_project_name project
  in
  !Db.Slicing.Project.set_project (Some project);
  new_project