public App Build()
        {
            SetupEvaluationConfigs();

            var events = Enumerable
                         .Range(0, parametersManager.StepsToSimulate ?? tracesDataContext.TimeEvents.Count())
                         .Select(i => tracesDataContext.TimeEvents.Include(te => te.VMEvents).Include(te => te.RemovedVMs).Skip(i).First());

            var reportService = new ReportService(outputFolder, parametersManager.PrognoseDepth);

            disposableResources.Add(reportService.Dispose);

            return(new App(
                       events,
                       reportService,
                       new ServerCollection(tracesDataContext.PhysicalMachines.AsEnumerable().Select(Mapper.Map)),
                       new VmAsigner(parametersManager.GetAsigningParams()),
                       new DiagnosticService(parametersManager.GetDiagnosticParams()),
                       new MigrationManager(parametersManager.GetMigrationParams()),
                       new PrognosingService(parametersManager.GetPrognosingParams(), seriesStorage)));
        }