diff --git a/report_templates/report.html b/report_templates/report.html
index 80cc1e2..5eba9c7 100644
--- a/report_templates/report.html
+++ b/report_templates/report.html
@@ -32,27 +32,20 @@
                 <td><div align="right">{rws4k_30ms} IOPS</div></td>
             </tr>
             <tr>
-                <td>Direct sequantials read</td>
+                <td>Direct sequential read</td>
                 <td><div align="right">{bw_read_max} MiBps</div></td>
                 <td>Rand write 4k sync IOPS 100ms lat</td>
                 <td><div align="right">{rws4k_100ms} IOPS</div></td>
             </tr>
             <tr>
-                <td>Direct sequantials write</td>
+                <td>Direct sequential write</td>
                 <td><div align="right">{bw_write_max} MiBps</div></td>
                 <td></td><td></td>
             </tr>
         </table>
     </div>
-    <div class="row">
-        <table>
-            <tr>
-                <td><img src="charts/rand_read_4k.png"></td>
-                <td width="10%"><H1>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</H1></td>
-                <td><img src="charts/rand_write_4k.png"></td>
-            </tr>
-        </table>
-    </div>
+    <img src="charts/rand_read_4k.png" />
+    <img src="charts/rand_write_4k.png" />
 
     <!--div class="row">
         <table style="width: auto;" class="table table-bordered table-striped">
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))
