diff --git a/test_results/Perf-1-env-10-02-14.json b/test_results/storage.json
similarity index 89%
rename from test_results/Perf-1-env-10-02-14.json
rename to test_results/storage.json
index ad17cd3..083d7ff 100644
--- a/test_results/Perf-1-env-10-02-14.json
+++ b/test_results/storage.json
@@ -1,92 +1,95 @@
 [
     {
-        "write s 64k": [1285, 57],
-        "write a 256k": [24928, 503],
-        "write s 256k": [4029, 192],
-        "write s 1k": [21, 0],
-        "randwrite a 1024k": [23980, 1897],
         "randwrite a 256k": [16885, 1869],
         "randwrite s 4k": [79, 2],
-        "randread a 64k": [27257, 17268],
-        "randwrite s 1024k": [8504, 238],
-        "randwrite s 1k": [20, 0],
-        "randread a 4k": [3612, 1355],
-        "read a 1024k": [71122, 9217],
         "read a 64k": [74398, 11618],
         "write s 1024k": [7490, 193],
         "randwrite a 64k": [14167, 4665],
-        "write s 4k": [87, 3],
         "build_id": "1",
-        "read a 4k": [88367, 6471],
-        "read a 256k": [80904, 8930],
-        "randread a 256k": [60868, 2637],
-        "randwrite s 64k": [1029, 34],
         "randread a 1024k": [68683, 8604],
         "randwrite s 256k": [3277, 146],
-        "iso_md5": "bla bla",
+        "write a 1024k": [24069, 660],
         "type": "GA",
-        "name": "GA - 6.0 GA",
         "write a 64k": [24555, 1006],
-        "write a 1024k": [24069, 660]
+        "write s 64k": [1285, 57],
+        "write a 256k": [24928, 503],
+        "write s 256k": [4029, 192],
+        "randwrite a 1024k": [23980, 1897],
+        "randread a 64k": [27257, 17268],
+        "randwrite s 1024k": [8504, 238],
+        "randread a 256k": [60868, 2637],
+        "randread a 4k": [3612, 1355],
+        "read a 1024k": [71122, 9217],
+        "date": "Thu Feb 12 19:11:56 2015",
+        "write s 4k": [87, 3],
+        "read a 4k": [88367, 6471],
+        "read a 256k": [80904, 8930],
+        "name": "GA - 6.0 GA",
+        "randwrite s 1k": [20, 0],
+        "randwrite s 64k": [1029, 34],
+        "write s 1k": [21, 0],
+        "iso_md5": "bla bla"
     },
     {
-        "write s 64k": [1236, 30],
-        "write a 256k": [30327, 9799],
-        "write s 256k": [4049, 172],
-        "write s 1k": [22, 0],
-        "randwrite a 1024k": [29000, 9302],
         "randwrite a 256k": [20212, 5690],
         "randwrite s 4k": [83, 6],
-        "randread a 64k": [26775, 16319],
-        "randwrite s 1024k": [8665, 1457],
-        "randwrite s 1k": [22, 3],
-        "randread a 4k": [3212, 1620],
-        "read a 1024k": [89676, 4401],
         "read a 64k": [89394, 3912],
         "write s 1024k": [8054, 280],
         "randwrite a 64k": [14595, 3245],
-        "write s 4k": [88, 3],
         "build_id": "2",
-        "read a 4k": [92263, 5186],
-        "read a 256k": [94505, 6868],
-        "randread a 256k": [63608, 16126],
-        "randwrite s 64k": [1105, 46],
         "randread a 1024k": [83277, 9310],
         "randwrite s 256k": [3628, 433],
-        "iso_md5": "bla bla",
+        "write a 1024k": [29226, 8624],
         "type": "master",
-        "name": "6.1 Dev",
         "write a 64k": [25089, 790],
-        "write a 1024k": [29226, 8624]
+        "write s 64k": [1236, 30],
+        "write a 256k": [30327, 9799],
+        "write s 256k": [4049, 172],
+        "randwrite a 1024k": [29000, 9302],
+        "randread a 64k": [26775, 16319],
+        "randwrite s 1024k": [8665, 1457],
+        "randread a 256k": [63608, 16126],
+        "randread a 4k": [3212, 1620],
+        "read a 1024k": [89676, 4401],
+        "date": "Thu Feb 12 19:11:56 2015",
+        "write s 4k": [88, 3],
+        "read a 4k": [92263, 5186],
+        "read a 256k": [94505, 6868],
+        "name": "6.1 Dev",
+        "randwrite s 1k": [22, 3],
+        "randwrite s 64k": [1105, 46],
+        "write s 1k": [22, 0],
+        "iso_md5": "bla bla"
     },
     {
-        "write s 64k": [624, 164],
-        "write a 256k": [75071, 21284],
-        "write s 256k": [2724, 938],
-        "write s 1k": [13, 5],
-        "randwrite a 1024k": [79885, 14716],
         "randwrite a 256k": [47237, 16107],
         "randwrite s 4k": [62, 23],
-        "randread a 64k": [6953, 3886],
-        "randwrite s 1024k": [10161, 2086],
-        "randwrite s 1k": [12, 3],
-        "randread a 4k": [829, 10],
-        "read a 1024k": [64053, 37245],
         "read a 64k": [94564, 36030],
         "write s 1024k": [8904, 2935],
         "randwrite a 64k": [27769, 6609],
-        "write s 4k": [44, 16],
         "build_id": "3",
-        "read a 4k": [52864, 35589],
-        "read a 256k": [75291, 32068],
-        "randread a 256k": [23681, 11116],
-        "randwrite s 64k": [1211, 266],
         "randread a 1024k": [31379, 25667],
         "randwrite s 256k": [3009, 1028],
-        "iso_md5": "blsgl",
+        "write a 1024k": [84995, 34596],
         "type": "Dev",
-        "name": "Some dev",
         "write a 64k": [71598, 22032],
-        "write a 1024k": [84995, 34596]
+        "write s 64k": [624, 164],
+        "write a 256k": [75071, 21284],
+        "write s 256k": [2724, 938],
+        "randwrite a 1024k": [79885, 14716],
+        "randread a 64k": [6953, 3886],
+        "randwrite s 1024k": [10161, 2086],
+        "randread a 256k": [23681, 11116],
+        "randread a 4k": [829, 10],
+        "read a 1024k": [64053, 37245],
+        "date": "Thu Feb 12 19:11:56 2015",
+        "write s 4k": [44, 16],
+        "read a 4k": [52864, 35589],
+        "read a 256k": [75291, 32068],
+        "name": "Some dev",
+        "randwrite s 1k": [12, 3],
+        "randwrite s 64k": [1211, 266],
+        "write s 1k": [13, 5],
+        "iso_md5": "blsgl"
     }
 ]
\ No newline at end of file
diff --git a/web_app/__init__.py b/web_app/__init__.py
index 6f76c72..9fd6a17 100644
--- a/web_app/__init__.py
+++ b/web_app/__init__.py
@@ -153,6 +153,13 @@
     return result
 
 
+def merge_builds(b1, b2):
+    d = {}
+
+    for pair in b2.items():
+        b1[pair[0]] = pair[1]
+
+
 @app.route("/", methods=['GET', 'POST'])
 def index():
     data = builds_list()
@@ -212,14 +219,6 @@
 @app.route("/tests/table/<test_name>/")
 def render_table(test_name):
     builds = collect_builds()
-    #
-    # if test_name == 'GA':
-    #     b = ['GA']
-    # else:
-    #     b = ['GA', 'master', test_name]
-    #
-    # builds = filter(lambda x: x["type"] in b, builds)
-    #
     l = filter(lambda x: x['name'] == test_name, builds)
     if l[0]['type'] == 'GA':
         builds = filter(lambda x: x['type'] == 'GA', builds)
@@ -256,15 +255,30 @@
 
 @app.route("/api/tests/<test_name>", methods=['POST'])
 def add_test(test_name):
-    tests = json.loads(request.data)
+    test = json.loads(request.data)
 
-    if not hasattr(g, "storage"):
-        path = "file://" + TEST_PATH + '/' + test_name + ".json"
-        print path
-        g.storage = create_storage(path, "", "")
+    file_name = TEST_PATH + '/' + 'storage' + ".json"
 
-    for test in tests:
-        g.storage.store(test)
+    if not os.path.exists(file_name):
+            with open(file_name, "w+") as f:
+                f.write(json.dumps([]))
+
+    builds = collect_builds()
+    res = None
+
+    for b in builds:
+        if b['name'] == test['name']:
+            res = b
+            break
+
+    if res is None:
+        builds.append(test)
+    else:
+        merge_builds(res, test)
+
+    with open(TEST_PATH + '/' + 'storage' + ".json", 'w+') as f:
+            f.write(json.dumps(builds))
+
     return "Created", 201
 
 
diff --git a/web_app/templates/lab_main.html b/web_app/templates/lab_main.html
index 6ae0a7f..63eb529 100644
--- a/web_app/templates/lab_main.html
+++ b/web_app/templates/lab_main.html
@@ -5,7 +5,7 @@
             <td>Juno on Ubuntu 12.04.4</td>
         </tr>
         <tr>
-            <td>Relese Fuel:</td>
+            <td>Release Fuel:</td>
             <td>6.1</td>
         </tr>
         <tr>
