diff --git a/wally/charts.py b/wally/charts.py
index a168f9d..12d735f 100644
--- a/wally/charts.py
+++ b/wally/charts.py
@@ -14,7 +14,7 @@
 sys.modules['GChartWrapper.GChart'].MARKERS += 'E'
 
 
-COLORS = ["1569C7", "81D8D0", "307D7E", "5CB3FF", "0040FF", "81DAF5"]
+COLORS = ["1569C7", "81D8D0", "B0BD2E", "5CB3FF", "0040FF", "81DAF5"]
 constants.MARKERS += 'E'  # append E marker to available markers
 
 
diff --git a/wally/report.py b/wally/report.py
index 83cb457..6164cae 100644
--- a/wally/report.py
+++ b/wally/report.py
@@ -1,13 +1,11 @@
 import os
-import sys
 import bisect
 
 import wally
 from wally import charts
 from wally.utils import parse_creds
-from wally.meta_info import total_lab_info, collect_lab_data
-
 from wally.suits.io.results_loader import process_disk_info
+from wally.meta_info import total_lab_info, collect_lab_data
 
 
 def render_html(dest, info, lab_description):
@@ -41,20 +39,18 @@
                                     lines=[
                                         (latv, "msec", "rr", "lat"),
                                         (iops_or_bw_per_vm, None, None,
-                                            "bw_per_vm")
+                                            "IOPS per vm")
                                     ])
     return str(ch)
 
 
 def make_plots(processed_results, path):
     name_filters = [
-        ('hdd_test_rrd4k', ('concurence', 'lat', 'iops'),
-         'rand_read_4k', 'Random read 4k sync'),
-        ('hdd_test_rws4k', ('concurence', 'lat', 'iops'),
-         'rand_write_4k', 'Random write 4k sync')
+        ('hdd_test_rrd4k', 'rand_read_4k', 'Random read 4k sync IOPS'),
+        ('hdd_test_rws4k', 'rand_write_4k', 'Random write 4k sync IOPS')
     ]
 
-    for name_pref, _, fname, desc in name_filters:
+    for name_pref, fname, desc in name_filters:
         chart_data = []
         for res in processed_results.values():
             if res.name.startswith(name_pref):
@@ -64,10 +60,10 @@
 
         lat = [x.lat for x in chart_data]
         concurence = [x.raw['concurence'] for x in chart_data]
-        bw = [x.bw for x in chart_data]
-        bw_dev = [x.dev * x.bw for x in chart_data]
+        iops = [x.iops for x in chart_data]
+        iops_dev = [x.iops * x.dev for x in chart_data]
 
-        io_chart(desc, concurence, lat, bw, bw_dev, 'bw', fname)
+        io_chart(desc, concurence, lat, iops, iops_dev, 'bw', fname)
 
 
 class DiskInfo(object):
@@ -167,15 +163,3 @@
     make_plots(processed_results, path)
     di = get_disk_info(processed_results)
     render_html(path, di, lab_info)
-
-
-def main(args):
-    make_io_report(results=[('a', 'b')],
-                   path=os.path.dirname(args[0]),
-                   lab_url='http://172.16.52.112:8000',
-                   creds='admin:admin@admin')
-    return 0
-
-
-if __name__ == '__main__':
-    exit(main(sys.argv))
