let apply_all_actions proj =
  let nb_actions = List.length proj.T.actions in
  let rec apply actions = match actions with [] -> ()
    | a::actions ->
        SlicingParameters.feedback ~level:2 "applying sub action...";
        let new_filters = apply_action proj a in
          apply new_filters;
          apply actions
  in
    SlicingParameters.feedback ~level:1 "applying %d actions..." nb_actions;
    let rec apply_user n =
      try let a = get_next_filter proj in
        SlicingParameters.feedback ~level:1 "applying actions: %d/%d..." n nb_actions;
        let new_filters = apply_action proj a in
          apply new_filters;
          apply_user (n+1)
      with Not_found ->
        if nb_actions > 0 then
          SlicingParameters.feedback ~level:2 "done (applying %d actions." nb_actions
    in
      apply_user 1