diff --git a/web_app/__init__.py b/web_app/__init__.py
index 4006689..88f8fac 100644
--- a/web_app/__init__.py
+++ b/web_app/__init__.py
@@ -14,6 +14,13 @@
 Bootstrap(app)
 
 
+def get_resource_as_string(name, charset='utf-8'):
+    with app.open_resource(name) as f:
+        return f.read().decode(charset)
+
+app.jinja_env.globals['get_resource_as_string'] = get_resource_as_string
+
+
 def load_test(test_name):
     test_name += '.json'
 
@@ -155,7 +162,12 @@
     tests = []
     header_keys = ['build_id', 'iso_md5', 'type', 'date']
     table = [[]]
-    builds_to_compare = ['GA', 'master', test_name]
+
+    if test_name == 'GA':
+        builds_to_compare = ['GA']
+    else:
+        builds_to_compare = ['GA', 'master', test_name]
+
     builds = collect_builds()
     results = {}
     meta = {"__meta__": "http://172.16.52.112:8000/api/nodes"}
@@ -196,7 +208,13 @@
 @app.route("/tests/table/<test_name>/")
 def render_table(test_name):
     builds = collect_builds()
-    builds = filter(lambda x: x["type"] in ['GA', 'master', test_name], builds)
+
+    if test_name == 'GA':
+        b = ['GA']
+    else:
+        b = ['GA', 'master', test_name]
+
+    builds = filter(lambda x: x["type"] in b, builds)
     header_keys = ['build_id', 'iso_md5', 'type' ,'date']
     table = [[]]
     meta = {"__meta__": "http://172.16.52.112:8000/api/nodes"}
@@ -224,7 +242,7 @@
                            back_url=url_for('render_test', test_name=test_name), lab=data)
 
 
-@app.route("/tests/<test_name>", methods=['POST'])
+@app.route("/api/tests/<test_name>", methods=['POST'])
 def add_test(test_name):
     tests = json.loads(request.data)
 
@@ -238,6 +256,21 @@
     return "Created", 201
 
 
+@app.route("/api/tests", methods=['GET'])
+def get_all_tests():
+    return json.dumps(collect_builds())
+
+
+@app.route("/api/tests/<test_name>", methods=['GET'])
+def get_test(test_name):
+    builds = collect_builds()
+
+    for build in builds:
+        if build["type"] == test_name:
+            return json.dumps(build)
+    return "Not Found", 404
+
+
 if __name__ == "__main__":
     logger = getLogger("logger")
     app.logger.setLevel(INFO)
