diff --git a/chart/charts.py b/chart/charts.py
index 549b820..7c49abd 100644
--- a/chart/charts.py
+++ b/chart/charts.py
@@ -1,5 +1,5 @@
-import hashlib
 import os
+import hashlib
 import threading
 
 from GChartWrapper import VerticalBarGroup
@@ -13,10 +13,9 @@
 constants.MARKERS += 'E'  # append E marker to available markers
 
 
-def save_image(chart, img_path):
-    t = threading.Thread(target=chart.save, kwargs={'fname': img_path})
-    t.daemon = True
-    t.start()
+def get_top_top_dir(path):
+    top_top_dir = os.path.dirname(os.path.dirname(path))
+    return path[len(top_top_dir) + 1:]
 
 
 def render_vertical_bar(title, legend, bars_data, bars_dev_top,
@@ -106,10 +105,11 @@
     bar.scale(*scale)
     img_name = hashlib.md5(str(bar)).hexdigest() + ".png"
     img_path = os.path.join(cfg_dict['charts_img_path'], img_name)
+
     if not os.path.exists(img_path):
-        save_image(bar, img_path)
-        return str(bar)
-    return img_path
+        bar.save(img_path)
+
+    return get_top_top_dir(img_path)
 
 
 def render_lines(title, legend, dataset, scale_x, width=700, height=400):
@@ -129,6 +129,6 @@
     img_name = hashlib.md5(str(line)).hexdigest() + ".png"
     img_path = os.path.join(cfg_dict['charts_img_path'], img_name)
     if not os.path.exists(img_path):
-        save_image(line, img_path)
-        return str(line)
-    return img_path
+        line.save(img_path)
+
+    return get_top_top_dir(img_path)
