let run select_annot select_slice_pragma =
  P.feedback "remove unused code...";
  (*let initial_file = Ast.get () in*)
  let kf_entry, _library = Globals.entry_point () in

  let proj = Marks.select_usefull_things
               ~select_annot ~select_slice_pragma kf_entry in

  let old_proj_name = Project.name (Project.current ()) in
  let new_proj_name = (old_proj_name^" without sparecode"in

    P.feedback "remove unused global declarations...";
  let tmp_prj = Transform.Info.build_cil_file "tmp_prj" proj in
  let new_prj = Project.on tmp_prj Globs.rm_unused_decl new_proj_name in
    P.result "result in new project '%s'." (Project.name new_prj);
    Project.remove ~project:tmp_prj ();
  let ctx = Parameters.get_selection_context () in
    Project.copy ~only:ctx new_prj;
    new_prj