       determine_n_times(scenario, scenario_context, fast_warning)
     new_context =
       %ScenarioContext{scenario_context | current_time: current_time(),
-                                          end_time: end_time,
-                                          num_iterations: num_iterations}
-      |> update_benchmarking_function(scenario) # accomodate iterations
+                                          end_time: end_time}
+      |> update_num_iterations(scenario, num_iterations)
 
     updated_scenario = %Scenario{scenario | run_times: [initial_run_time]}
     do_benchmark(updated_scenario, new_context)

      {1, run_time}
    else
      if fast_warning, do: printer.fast_warning()
      new_context =
        %ScenarioContext{scenario_context | num_iterations: @times_multiplier}
        |> update_benchmarking_function(scenario)
      try_n_times(scenario, new_context)
    end
  end

    if run_time >= @minimum_execution_time do
      {num_iterations, run_time / num_iterations}
    else
      new_context = update_num_iterations(scenario_context,
                                          scenario,
                                          num_iterations * @times_multiplier)
      try_n_times(scenario, new_context)
    end
  end
