@Override
  public ScoringFunction createNewScoringFunction(Person person) {

    ScoringFunctionAccumulator scoringFunctionAccumulator = new ScoringFunctionAccumulator();

    //		scoringFunctionAccumulator.addScoringFunction(new ActivityScoringFunction(plan,
    // super.getParams()));

    scoringFunctionAccumulator.addScoringFunction(
        new ActivityScoringFunction(
            person.getSelectedPlan(),
            CharyparNagelScoringParameters.getBuilder(config.planCalcScore(), config.scenario())
                .create(),
            this.facilityPenalties,
            this.facilities,
            this.config));
    scoringFunctionAccumulator.addScoringFunction(
        new LegScoringFunction(
            person.getSelectedPlan(),
            CharyparNagelScoringParameters.getBuilder(config.planCalcScore(), config.scenario())
                .create(),
            config,
            this.network,
            this.ktiConfigGroup));
    scoringFunctionAccumulator.addScoringFunction(
        new org.matsim.core.scoring.functions.CharyparNagelMoneyScoring(
            CharyparNagelScoringParameters.getBuilder(config.planCalcScore(), config.scenario())
                .create()));
    scoringFunctionAccumulator.addScoringFunction(
        new org.matsim.core.scoring.functions.CharyparNagelAgentStuckScoring(
            CharyparNagelScoringParameters.getBuilder(config.planCalcScore(), config.scenario())
                .create()));

    return scoringFunctionAccumulator;
  }
  @Override
  public ScoringFunction createNewScoringFunction(Person person) {

    PlanCalcScoreConfigGroup configGroup = controler.getConfig().planCalcScore();
    CharyparNagelScoringParameters params =
        new CharyparNagelScoringParameters.Builder(
                configGroup,
                configGroup.getScoringParameters(null),
                controler.getConfig().scenario())
            .build();
    Network network = controler.getScenario().getNetwork();

    ScoringFunctionAccumulator accumulator = new ScoringFunctionAccumulator();

    accumulator.addScoringFunction(new CharyparNagelActivityScoring(params));
    accumulator.addScoringFunction(new CharyparNagelLegScoring(params, network));
    accumulator.addScoringFunction(new CharyparNagelAgentStuckScoring(params));

    accumulator.addScoringFunction(this.scoringFromEmissions);

    return accumulator;
  }