public Result <ICloudPainter> Create() { var layouter = makeLayouter(new Point(settings.CenterX, settings.CenterY)); var filterFuncs = CreateFuncsFromFilters(filters); return(Result .Of(() => textReader.ReadLines(settings.WordsSource), new List <string>()) .Then(x => UseCaseSettings(x, settings)) .Then(filterFuncs) .Then(x => parser.GetWordsFrequency(x, settings.Language)) .Then(x => new CloudWithWordsPainter(imageHolder, settings, palette, layouter, x)) .Then(x => (ICloudPainter)x)); }