some work on statistic code
diff --git a/wally/main.py b/wally/main.py
index 16d884f..0de6791 100644
--- a/wally/main.py
+++ b/wally/main.py
@@ -44,6 +44,7 @@
 from .run_test import (CollectInfoStage, ExplicitNodesStage, SaveNodesStage,
                        RunTestsStage, ConnectStage, SleepStage, PrepareNodes,
                        LoadStoredNodesStage)
+from .process_results import CalcStatisticStage
 from .report import ConsoleReportStage, HtmlReportStage
 from .sensors import StartSensorsStage, CollectSensorsStage
 
@@ -228,8 +229,9 @@
 
         storage = make_storage(config.storage_url)
         storage.put(config, 'config')
+
         stages.extend(get_run_stages())
-        stages.extend(SaveNodesStage())
+        stages.append(SaveNodesStage())
 
         if not opts.dont_collect:
             stages.append(CollectInfoStage())
@@ -264,8 +266,12 @@
         return 0
 
     elif opts.subparser_name == 'report':
+        if getattr(opts, "no_report", False):
+            print(" --no-report option can't be used with 'report' cmd")
+            return 1
         storage = make_storage(opts.data_dir, existing=True)
-        config.settings_dir = get_config_path(config, opts.settings_dir)
+        config = storage.load(Config, 'config')
+        stages.append(LoadStoredNodesStage())
 
     elif opts.subparser_name == 'compare':
         # x = run_test.load_data_from_path(opts.data_path1)
@@ -286,9 +292,9 @@
             return 1
         return 0
 
-
     report_stages = []  # type: List[Stage]
     if not getattr(opts, "no_report", False):
+        report_stages.append(CalcStatisticStage())
         report_stages.append(ConsoleReportStage())
         report_stages.append(HtmlReportStage())
 
@@ -349,7 +355,12 @@
     if not failed:
         for report_stage in report_stages:
             with log_stage(report_stage):
-                report_stage.run(ctx)
+                try:
+                    report_stage.run(ctx)
+                except utils.StopTestError:
+                    logger.error("Report stage %s requested stop execution", report_stage.name())
+                    failed = True
+                    break
 
     ctx.storage.sync()