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>
