public CalculatedBenefits Calculate(Employee employee) { decimal costOfBenefits = _settings.GetDefaultBenefitsAnnualCost(); int percentage = _settings.GetDiscountPercentage(); // if dependents, additional benefits cost will be incurred - recalc if(employee.Dependents.Count > 0) {} costOfBenefits = RecalculateCostForDependents(costOfBenefits, employee); if(IsEligibleForDiscount(employee)) costOfBenefits = RecalculateCostWithDiscount(costOfBenefits, percentage, employee); decimal costPerPayPeriod = costOfBenefits / employee.GrossPayPerPeriod; CalculatedBenefits calculatedBenefits = new CalculatedBenefits(costOfBenefits, costPerPayPeriod, percentage); return calculatedBenefits; }