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_useful_things ~select_annot ~select_slice_pragma kf_entry 
  in

  let old_proj_name = Project.get_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.get_name new_prj);
  Project.remove ~project:tmp_prj ();
  let ctx = Plugin.get_selection_context () in
  Project.copy ~selection:ctx new_prj;
  new_prj