diff --git a/io_scenario/io.py b/io_scenario/io.py
index b9f3b6f..7d5516d 100644
--- a/io_scenario/io.py
+++ b/io_scenario/io.py
@@ -59,7 +59,8 @@
             'initial readers': 'read',
             're-readers': 'reread',
             'random readers': 'random read',
-            'random writers': 'random write'}
+            'random writers': 'random write',
+            'readers': 'read'}
 
     string1 = "                           " + \
               "                   random  random    " + \
diff --git a/requirements.txt b/requirements.txt
index 7f8254f..5877500 100644
--- a/requirements.txt
+++ b/requirements.txt
@@ -11,5 +11,7 @@
 python-keystoneclient==1.1.0
 python-novaclient
 python-glanceclient
+python-cinderclient
 paramiko
+futures
 
diff --git a/run_test.py b/run_test.py
index ccab7aa..ad0c9d2 100644
--- a/run_test.py
+++ b/run_test.py
@@ -12,7 +12,11 @@
 from itest import IOPerfTest
 
 import ssh_runner
-import rally_runner
+
+try:
+    import rally_runner
+except ImportError:
+    rally_runner = None
 
 from starts_vms import nova_connect, create_vms_mt, clear_all
 
@@ -75,9 +79,12 @@
                         help="keep temporary files",
                         dest="keep_temp_files", action='store_true')
 
+    choices = ["ssh"]
+    if rally_runner is not None:
+        choices.append("rally")
+
     parser.add_argument("--runner", required=True,
-                        choices=["ssh", "rally"],
-                        help="runner type")
+                        choices=choices, help="runner type")
 
     parser.add_argument("--runner-extra-opts", default="",
                         dest="runner_opts", help="runner extra options")
@@ -97,9 +104,22 @@
         bw_dev = sum(it) ** 0.5
 
         meta = res[0]['__meta__']
-        key = "{0} {1} {2}k".format(meta['action'],
-                                    's' if meta['sync'] else 'a',
-                                    meta['blocksize'])
+
+        sync = meta['sync']
+        direct = meta['direct_io']
+
+        if sync and direct:
+            ss = "d+"
+        elif sync:
+            ss = "s"
+        elif direct:
+            ss = "d"
+        else:
+            ss = "a"
+
+        key = "{0} {1} {2} {3}k".format(meta['action'], ss,
+                                        meta['concurence'],
+                                        meta['blocksize'])
 
         data = json.dumps({key: (int(bw_mean), int(bw_dev))})
 
@@ -155,8 +175,6 @@
         def nolog(x):
             pass
 
-        setlogger(nolog)
-
     io_opts = get_io_opts(opts.io_opts_file, opts.io_opts)
 
     if opts.runner == "rally":
@@ -209,10 +227,10 @@
 
         # nova, amount, keypair_name, img_name,
         # flavor_name, vol_sz=None, network_zone_name=None,
-        # flt_ip_pool=None, name_templ='ceph-test-{}',
+        # flt_ip_pool=None, name_templ='ceph-test-{0}',
         # scheduler_hints=None
 
-        logger.debug("Will start {} vms".format(count))
+        logger.debug("Will start {0} vms".format(count))
 
         try:
             ips = [i[0] for i in create_vms_mt(nova, count, **create_vms_opts)]
diff --git a/scripts/data.py b/scripts/data.py
index 0635789..b0c8f27 100644
--- a/scripts/data.py
+++ b/scripts/data.py
@@ -15,15 +15,15 @@
         if not block.startswith("[{u'__meta__':"):
             continue
 
-        print
-        print
-        print block
-        print
-        print
-
         for val in eval(block):
             meta = val['__meta__']
-            meta['sync'] = 's' if meta['sync'] else 'a'
+
+            if meta['sync']:
+                meta['sync'] = 's'
+            elif meta['direct_io']:
+                meta['sync'] = 'd'
+            else:
+                meta['sync'] = 'a'
             key = "{action} {sync} {blocksize}k {concurence}".format(**meta)
             results.setdefault(key, []).append(val['bw_mean'])
 
@@ -52,7 +52,7 @@
 
 
 def show_data(*pathes):
-    begin = "|  {:>10}  {:>5}  {:>5} {:>3}"
+    begin = "|  {:>10}  {:>6}  {:>5} {:>3}"
     first_file_templ = "  |  {:>6} ~ {:>5} {:>2}% {:>5}"
     other_file_templ = "  |  {:>6} ~ {:>5} {:>2}% {:>5} ----  {:>6}%"
 
@@ -82,9 +82,10 @@
         common_keys &= set(result.keys())
 
     for k in sorted(common_keys, key=ksort):
-        tp = k.rsplit(" ", 1)[0]
+        tp = k.rsplit(" ", 2)[0]
         op, s, sz, conc = k.split(" ")
-        s = 'sync' if s == 's' else 'async'
+
+        s = {'a': 'async', "s": "sync", "d": "direct"}[s]
 
         if tp != prev_tp and prev_tp is not None:
             print sep
diff --git a/scripts/data_extractor.py b/scripts/data_extractor.py
index d3ba1ea..1f30b77 100644
--- a/scripts/data_extractor.py
+++ b/scripts/data_extractor.py
@@ -16,12 +16,17 @@
                     md5 text);
 
 CREATE TABLE params_combination (id integer primary key, {params});
-CREATE TABLE param (id integer primary key, name text, type text);
+
+CREATE TABLE param (id integer primary key, name text, type text, descr text);
+
+CREATE TABLE lab (id integer primary key, name text, descr text);
 
 CREATE TABLE result (build_id integer,
-                     params_combination integer,
+                     time datetime,
+                     lab_id integer,
+                     params_combination_id integer,
                      bandwith float,
-                     deviation float);
+                     meta text);
 """
 
 
diff --git a/scripts/run.sh b/scripts/run.sh
index 368410c..91fadc7 100644
--- a/scripts/run.sh
+++ b/scripts/run.sh
@@ -37,7 +37,7 @@
                     for SYNC_TYPE in $SYNC_TYPES ; do
 
                         # filter out too slow options
-                        if [ "$BLOCKSIZE" = "1k" -o "$BLOCK_SIZE" = "4k" ] ; then
+                        if [ "$BSIZE" = "1k" -o "$BSIZE" = "4k" ] ; then
                             if [ "$SYNC_TYPE" = "a" ] ; then
                                 continue
                             fi
diff --git a/starts_vms.py b/starts_vms.py
index 368aadf..de6c005 100644
--- a/starts_vms.py
+++ b/starts_vms.py
@@ -83,7 +83,7 @@
 
 def create_vms_mt(nova, amount, keypair_name, img_name,
                   flavor_name, vol_sz=None, network_zone_name=None,
-                  flt_ip_pool=None, name_templ='ceph-test-{}',
+                  flt_ip_pool=None, name_templ='ceph-test-{0}',
                   scheduler_hints=None):
 
     with ThreadPoolExecutor(max_workers=16) as executor:
@@ -109,9 +109,9 @@
         else:
             ips = [None] * amount
 
-        logger.debug("Getting for flavor object")
+        logger.debug("Getting flavor object")
         fl = fl_future.result()
-        logger.debug("Getting for image object")
+        logger.debug("Getting image object")
         img = img_future.result()
 
         if network_future is not None:
@@ -177,7 +177,7 @@
         return (None, srv)
 
 
-def clear_all(nova, name_templ="ceph-test-{}"):
+def clear_all(nova, name_templ="ceph-test-{0}"):
     deleted_srvs = set()
     for srv in nova.servers.list():
         if re.match(name_templ.format("\\d+"), srv.name):
