anchor.diff:      ok = maybe_show_usage(Opts),
       ok = maybe_net_node(Opts),
       ok = maybe_join(Opts),
  -    BenchName = bench_name(Opts),
  -    TestDir = test_dir(Opts, BenchName),
  -
  -    %% Load baseline configs
  -    case application:load(basho_bench) of
  -        ok -> ok;
  -        {error, {already_loaded, basho_bench}} -> ok
  -    end,
  -    register(basho_bench, self()),
  -    %% TODO: Move into a proper supervision tree, janky for now
  -    {ok, _Pid} = basho_bench_config:start_link(),
  -    basho_bench_config:set(test_id, BenchName),
  -
  -    application:load(lager),
  -    ConsoleLagerLevel = basho_bench_config:get(log_level, debug),
  -    ErrorLog = filename:join([TestDir, "error.log"]),
  -    ConsoleLog = filename:join([TestDir, "console.log"]),
  -    CrashLog = filename:join([TestDir, "crash.log"]),
  -    application:set_env(lager,
  -                        handlers,
  -                        [{lager_console_backend, ConsoleLagerLevel},
  -                         {lager_file_backend, [{file, ErrorLog},   {level, error}, {size, 10485760}, {date, "$D0"}, {count, 5}]},
  -                         {lager_file_backend, [{file, ConsoleLog}, {level, debug}, {size, 10485760}, {date, "$D0"}, {count, 5}]}
  -                        ]),
  -    application:set_env(lager, crash_log, CrashLog),
  -    lager:start(),
  -
  -    application:ensure_all_started(couch),
  -
  -    %% Make sure this happens after starting lager or failures wont
  -    %% show.
  -    basho_bench_config:load(Configs),
  -
  -    %% Log level can be overriden by the config files
  -    CustomLagerLevel = basho_bench_config:get(log_level),
  -    lager:set_loglevel(lager_console_backend, CustomLagerLevel),
  -    lager:set_loglevel(lager_file_backend, ConsoleLog, CustomLagerLevel),
  -
  -    %% Init code path
  -    add_code_paths(basho_bench_config:get(code_paths, [])),
  -
  -    %% If a source directory is specified, compile and load all .erl files found
  -    %% there.
  -    case basho_bench_config:get(source_dir, []) of
  -        [] ->
  -            ok;
  -        SourceDir ->
  -            load_source_files(SourceDir)
  -    end,
  -
  -    %% Copy the config into the test dir for posterity
  -    [ begin {ok, _} = file:copy(Config, filename:join(TestDir, filename:basename(Config))) end
  -      || Config <- Configs ],
  -    case basho_bench_config:get(distribute_work, false) of 
  -        true -> setup_distributed_work();
  -        false -> ok
  -    end,
  -    %% Set our CWD to the test dir
  -    ok = file:set_cwd(TestDir),
  -    log_dimensions(),
  -
  -    %% Run pre_hook for user code preconditions
  -    run_pre_hook(),
  -    %% Spin up the application
  -    ok = basho_bench_app:start(),
  -
  -    %% Pull the runtime duration from the config and sleep until that's passed OR
  -    %% the supervisor process exits
  -    Mref = erlang:monitor(process, whereis(basho_bench_sup)),
  -    DurationMins = basho_bench_config:get(duration),
  -    wait_for_stop(Mref, DurationMins).
  -
  +    {ok, _} = start(),
  +    setup_benchmark(Opts),
  +    run_benchmark(Configs),
  +    await_completion(infinity).
  +
  +
  +await_completion(Timeout) ->
  +    MRef = erlang:monitor(process, whereis(basho_bench_duration)),
  +    receive
  +        {'DOWN', MRef, process, _Object, _Info} ->
  +            done
  +    after
  +        Timeout ->
  +            timeout
  +    end,
  +    application:set_env(basho_bench_app, is_running, false).
   
   %% ====================================================================
   %% Internal functions
  
positive.code: -else.
  md5(Bin) -> crypto:md5(Bin).
  -endif.
  
negative.code:     Link = filename:join([ResultsDir, "current"]),
      [] = os:cmd(?FMT("rm -f ~s; ln -sf ~s ~s", [Link, TestDir, Link])),
      TestDir.
  
  %%
  %% Construct a string suitable for use as a unique ID for this test run
  