diff --git a/TODO b/TODO
deleted file mode 100644
index 9f383d3..0000000
--- a/TODO
+++ /dev/null
@@ -1,15 +0,0 @@
-выкинуть все упоминания о googledoc
-нам нужен backlog
-я буду productowner и буду вносить тикеты в борду
-
-код сайты вынести из __init__.py в отдельный файл
-перенести конфиг линта из тестов
-пройти все линтом
-move ssize_to_kb to utils
-unittests
-перейти на нормальное логирование
-
-zmq/tcp client should immitate ssh
-rpyc???
-детектирует vm по локальным ip, которые получаем из nova
-roadmap написать
\ No newline at end of file
diff --git a/itest.py b/itest.py
index 178acce..018a11b 100644
--- a/itest.py
+++ b/itest.py
@@ -74,8 +74,8 @@
                     if line.strip() != "":
                         self.on_result_cb(json.loads(line))
             except Exception as err:
-                msg = "Error during postprocessing results: {0!r}".format(err)
-                raise RuntimeError(msg)
+                msg_templ = "Error during postprocessing results: {0!r}"
+                raise RuntimeError(msg_templ.format(err.message))
         else:
             templ = "Command {0!r} failed with code {1}. Error output is:\n{2}"
             logger.error(templ.format(cmd, code, err))
diff --git a/scripts/data_extractor.py b/scripts/data_extractor.py
index 1f30b77..77b6478 100644
--- a/scripts/data_extractor.py
+++ b/scripts/data_extractor.py
@@ -10,17 +10,18 @@
 
 
 create_db_sql_templ = """
-CREATE TABLE build (id integer primary key,
-                    build text,
-                    type text,
-                    md5 text);
+# build - param_0
+# lab - param_1
+# operation - param_2
+# sync_type - param_3 (sync, direct, sync+direct, free)
+# block_size - param_4
+# concurrence - param_5
+# ....
 
-CREATE TABLE params_combination (id integer primary key, {params});
+CREATE TABLE params_combination (id integer primary key, params_X_val 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,
                      time datetime,
                      lab_id integer,
diff --git a/web_app/__init__.py b/web_app/__init__.py
index 01c3dba..eecb577 100644
--- a/web_app/__init__.py
+++ b/web_app/__init__.py
@@ -1,3 +1,5 @@
+# <koder>: order imports in usual way
+
 from urlparse import urlparse
 from flask import Flask, render_template, url_for, request, g, make_response
 from flask_bootstrap import Bootstrap
@@ -23,6 +25,7 @@
 
 
 def total_lab_info(data):
+    # <koder>: give 'd' meaningful name
     d = {}
     d['nodes_count'] = len(data['nodes'])
     d['total_memory'] = 0
@@ -51,6 +54,7 @@
     result = {}
 
     for node in lab_info:
+        # <koder>: give p,i,d,... vars meaningful names
         d = {}
         d['name'] = node['name']
         p = []
@@ -118,6 +122,7 @@
     table = [[]]
     builds = collect_builds()
 
+    # <koder>: rename
     l = filter(lambda x: x['name'] == test_name, builds)
 
     if l[0]['type'] == 'GA':
@@ -127,18 +132,17 @@
         builds = l
 
     results = {}
+    # <koder>: magik ip? fixme
     meta = {"__meta__": "http://172.16.52.112:8000/api/nodes"}
     data = collect_lab_data(meta)
     lab_meta = total_lab_info(data)
 
     for build in builds:
+        # <koder>: don't use name 'type'
         type = build['type']
-        m = create_measurement(build)
-        results[type] = m
+        results[type] = create_measurement(build)
 
-    bars = build_vertical_bar(results)
-    lines = build_lines_chart(results)
-    urls = bars + lines
+    urls = build_vertical_bar(results) + build_lines_chart(results)
 
     urls = [url_for("get_image", image_name=os.path.basename(url)) if not url.startswith('http') else url for url in urls]
 
@@ -154,6 +158,8 @@
 
             for header in header_keys:
                 if isinstance(test[header], list):
+                    # <koder>: make a named constant from unichr(0x00B1)
+                    # <koder>: use format in this line
                     row.append(str(test[header][0]) + unichr(0x00B1) + str(test[header][1]))
                 else:
                     row.append(test[header])
@@ -225,7 +231,7 @@
         merge_builds(res, test)
 
     with open(TEST_PATH + '/' + 'storage' + ".json", 'w+') as f:
-            f.write(json.dumps(builds))
+        f.write(json.dumps(builds))
 
     return "Created", 201
 
@@ -249,4 +255,4 @@
     logger = getLogger("logger")
     app.logger.setLevel(INFO)
     app.logger.addHandler(logger)
-    app.run(host='0.0.0.0', debug=True)
\ No newline at end of file
+    app.run(host='0.0.0.0', debug=True)
diff --git a/web_app/keystone.py b/web_app/keystone.py
index 0d2c5f3..38f49e0 100644
--- a/web_app/keystone.py
+++ b/web_app/keystone.py
@@ -4,6 +4,7 @@
 from keystoneclient.v2_0 import Client as keystoneclient
 from keystoneclient import exceptions
 
+
 class Urllib2HTTP(object):
     """
     class for making HTTP requests
