diff --git a/configs/perf1.yaml b/configs/perf1.yaml
index 9428b78..05591fe 100644
--- a/configs/perf1.yaml
+++ b/configs/perf1.yaml
@@ -14,7 +14,6 @@
     var_dir_root: /tmp/perf_tests
 
 # sensors:
-#     receiver_url: "udp://{ip}:5699"
 #     roles_mapping:
 #         ceph-osd: block-io
 #         cinder: block-io, system-cpu
diff --git a/wally/discover/node.py b/wally/discover/node.py
index c2ae5aa..9f4356f 100644
--- a/wally/discover/node.py
+++ b/wally/discover/node.py
@@ -1,3 +1,5 @@
+import getpass
+
 from wally.ssh_utils import parse_ssh_uri
 
 
@@ -24,6 +26,14 @@
         creds = parse_ssh_uri(self.conn_url[6:])
         return "{0.host}:{0.port}".format(creds)
 
+    def get_user(self):
+        if self.conn_url == 'local':
+            return getpass.getuser()
+
+        assert self.conn_url.startswith("ssh://")
+        creds = parse_ssh_uri(self.conn_url[6:])
+        return creds.user
+
     def __str__(self):
         templ = "<Node: url={conn_url!r} roles={roles}" + \
                 " connected={is_connected}>"
diff --git a/wally/report.py b/wally/report.py
index 461c2a0..5c7c277 100644
--- a/wally/report.py
+++ b/wally/report.py
@@ -147,6 +147,12 @@
     return hdi
 
 
+def make_hdd_report(processed_results, path, lab_info):
+    make_plots(processed_results, path)
+    di = get_disk_info(processed_results)
+    render_html(path, di, lab_info)
+
+
 def make_io_report(results, path, lab_url=None, creds=None):
     if lab_url is not None:
         username, password, tenant_name = parse_creds(creds)
@@ -165,9 +171,10 @@
 
     try:
         processed_results = process_disk_info(results)
-        make_plots(processed_results, path)
-        di = get_disk_info(processed_results)
-        render_html(path, di, lab_info)
+        if 'hdd_test_rrd4k' and 'hdd_test_rws4k':
+            make_hdd_report(processed_results, path, lab_info)
+        else:
+            logger.warning("No report generator found for this load")
     except Exception as exc:
         logger.error("Failed to generate html report:" + str(exc))
     else:
diff --git a/wally/sensors_utils.py b/wally/sensors_utils.py
index d4e1af8..1bd2164 100644
--- a/wally/sensors_utils.py
+++ b/wally/sensors_utils.py
@@ -12,6 +12,7 @@
 
 
 logger = logging.getLogger("wally")
+DEFAULT_RECEIVER_URL = "udp://{ip}:5699"
 
 
 def save_sensors_data(data_q, mon_q, fd):
@@ -42,7 +43,7 @@
     monitored_nodes = []
     sensors_configs = []
 
-    receiver_url = cfg["receiver_url"]
+    receiver_url = cfg.get("receiver_url", DEFAULT_RECEIVER_URL)
     assert '{ip}' in receiver_url
 
     for role, sensors_str in cfg["roles_mapping"].items():
@@ -75,7 +76,7 @@
 
 
 def start_sensor_process_thread(ctx, cfg, sensors_configs):
-    receiver_url = cfg["receiver_url"]
+    receiver_url = cfg.get('receiver_url', DEFAULT_RECEIVER_URL)
     sensors_data_q, stop_sensors_loop = \
         start_listener_thread(receiver_url.format(ip='0.0.0.0'))
 
diff --git a/wally/ssh_utils.py b/wally/ssh_utils.py
index af3424c..ae0f3e4 100644
--- a/wally/ssh_utils.py
+++ b/wally/ssh_utils.py
@@ -74,15 +74,10 @@
 
     while True:
         try:
-            if creds.user is None:
-                user = getpass.getuser()
-            else:
-                user = creds.user
-
             if creds.passwd is not None:
                 ssh.connect(creds.host,
                             timeout=tcp_timeout,
-                            username=user,
+                            username=creds.user,
                             password=creds.passwd,
                             port=creds.port,
                             allow_agent=False,
@@ -91,7 +86,7 @@
 
             if creds.key_file is not None:
                 ssh.connect(creds.host,
-                            username=user,
+                            username=creds.user,
                             timeout=tcp_timeout,
                             key_filename=creds.key_file,
                             look_for_keys=False,
@@ -100,7 +95,7 @@
 
             key_file = os.path.expanduser('~/.ssh/id_rsa')
             ssh.connect(creds.host,
-                        username=user,
+                        username=creds.user,
                         timeout=tcp_timeout,
                         key_filename=key_file,
                         look_for_keys=False,
@@ -291,6 +286,7 @@
     res.port = "22"
     res.key_file = None
     res.passwd = None
+    res.user = getpass.getuser()
 
     for rr in uri_reg_exprs:
         rrm = re.match(rr, uri)
diff --git a/wally/suits/itest.py b/wally/suits/itest.py
index 57592da..259edf4 100644
--- a/wally/suits/itest.py
+++ b/wally/suits/itest.py
@@ -207,8 +207,19 @@
             raise OSError("Can't install - " + str(err))
 
     def pre_run(self):
-        with self.node.connection.open_sftp() as sftp:
-            ssh_mkdir(sftp, self.remote_dir, intermediate=True)
+        try:
+            cmd = 'mkdir -p "{0}"'.format(self.remote_dir)
+            if self.options.get("use_sudo", True):
+                cmd = "sudo " + cmd
+                cmd += " ; sudo chown {0} {1}".format(self.node.get_user(),
+                                                      self.remote_dir)
+
+            self.run_over_ssh(cmd)
+        except Exception as exc:
+            msg = "Failed to create folder {0} on remote {1}. Error: {2!s}"
+            msg = msg.format(self.remote_dir, self.node.get_conn_id(), exc)
+            logger.error(msg)
+            raise
 
         self.install_utils()
 
