diff --git a/config.py b/config.py
index 57888c3..56e641e 100644
--- a/config.py
+++ b/config.py
@@ -1,3 +1,5 @@
+import os
+
 DOCUMENT_ID = "1Xvd0aHA7mr-_b5C3b-sQ66BQsJiOGIT2UesP7kG26oU"
 SHEET_NAME = "aaa"
 WORK_SHEET = "Worksheet"
@@ -5,3 +7,5 @@
 ROW_COUNT = 10
 DEFAULT_FILE_PATH = "test.json"
 OUTPUT_FILE = "output.json"
+TEST_PATH = os.environ.get("TEST_PATH", os.path.dirname(__file__) + "/test_results")
+
diff --git a/requirements.txt b/requirements.txt
index a443abc..56ccfdb 100644
--- a/requirements.txt
+++ b/requirements.txt
@@ -7,4 +7,5 @@
 itsdangerous==0.24
 petname==1.7
 wsgiref==0.1.2
+requests==2.2.1
 GChartWrapper
diff --git a/storage_api.py b/storage_api.py
index 7841297..5578984 100644
--- a/storage_api.py
+++ b/storage_api.py
@@ -1,46 +1,7 @@
 from urlparse import urlparse
-# from gspread import WorksheetNotFound, login
-# from gspread import login
+
 import json
 import os
-# from gspread import login, WorksheetNotFound
-from config import ROW_COUNT, DOCUMENT_ID, WORK_SHEET
-
-# TEST_PATH = os.environ.get("TEST_PATH", os.path.dirname(__file__) + "/test_results")
-
-
-def get_work_sheet(sheet, name, column_names):
-    try:
-        work_sheet = sheet.worksheet(name)
-    except WorksheetNotFound:
-        work_sheet = sheet.add_worksheet(title=name, rows=ROW_COUNT,
-                                         cols=max(40, len(column_names)))
-
-        for i in range(1, len(column_names) + 1):
-            work_sheet.update_cell(1, i, column_names[i - 1])
-
-    return work_sheet
-
-
-def get_row_number(work_sheet):
-    num = 2
-
-    while num < work_sheet.row_count and work_sheet.cell(num, 1).value != "":
-        num += 1
-
-    if num == work_sheet.row_count:
-        work_sheet.append_row(["" for x in range(work_sheet.col_count)])
-
-    return num
-
-
-def append_row(work_sheet, row):
-    row_number = get_row_number(work_sheet)
-
-    i = 1
-    for k in row.keys():
-        work_sheet.update_cell(row_number, i, row[k])
-        i += 1
 
 
 class Measurement(object):
@@ -61,8 +22,6 @@
     u = urlparse(url)
     if u.scheme == 'file':
         storage = DiskStorage(u.path)
-    else:
-        storage = GoogleDocsStorage(DOCUMENT_ID, WORK_SHEET, email, password)
 
     return storage
 
@@ -76,58 +35,6 @@
         pass
 
 
-class GoogleDocsStorage(Storage):
-
-    def __init__(self, doc_id, work_sheet_name, email=None, password=None):
-        self.gc = login(email, password)
-        self.sh = self.gc.open_by_key(doc_id)
-        self.work_sheet = get_work_sheet(self.sh, work_sheet_name, 40)
-
-    def store(self, data):
-        append_row(self.work_sheet, data)
-
-    def retrieve(self, id):
-        row_number = self.find_by_id(id)
-
-        if row_number != -1:
-            vals = self.work_sheet.row_values(row_number)
-            m = Measurement()
-            m.build = vals.pop("build_id")
-            m.build_type = vals.pop("type")
-            m.md5 = vals.pop("iso_md5")
-            m.results = {k: vals[k] for k in vals.keys()}
-        else:
-            return None
-
-    def find_by_id(self, row_id):
-        for i in range(1, self.work_sheet):
-            if self.work_sheet.cell(i, 1) == row_id:
-                return i
-
-        return -1
-
-    def recent_builds(self):
-        i = self.work_sheet.row_count - 1
-        d = {}
-        result = []
-
-        while i > 0:
-            vals = self.work_sheet.row_values(i)
-
-            if vals["type"] not in d:
-                d[vals["type"]] = vals
-                m = Measurement()
-                m.build = vals.pop("build_id")
-                m.build_type = vals.pop("type")
-                m.md5 = vals.pop("iso_md5")
-                m.results = {k: vals[k] for k in vals.keys()}
-                result.append(m)
-
-            i -= 1
-
-        return result
-
-
 class DiskStorage(Storage):
     def __init__(self, file_name):
         self.file_name = file_name
diff --git a/test_results/test_result.json b/test_results/test_result.json
index 185fd42..81ab76b 100644
--- a/test_results/test_result.json
+++ b/test_results/test_result.json
@@ -16,15 +16,15 @@
         "write s 1024k": [7490, 193],
         "randwrite a 64k": [14167, 4665],
         "write s 4k": [87, 3],
-        "build_id": "",
+        "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": "",
-        "type": "",
+        "iso_md5": "bla bla",
+        "type": "GA",
         "write a 64k": [24555, 1006],
         "write a 1024k": [24069, 660]
     },
@@ -45,15 +45,15 @@
         "write s 1024k": [8054, 280],
         "randwrite a 64k": [14595, 3245],
         "write s 4k": [88, 3],
-        "build_id": "",
+        "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": "",
-        "type": "",
+        "iso_md5": "bla bla",
+        "type": "master",
         "write a 64k": [25089, 790],
         "write a 1024k": [29226, 8624]
     },
@@ -74,15 +74,15 @@
         "write s 1024k": [8904, 2935],
         "randwrite a 64k": [27769, 6609],
         "write s 4k": [44, 16],
-        "build_id": "",
+        "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": "",
-        "type": "",
+        "iso_md5": "blsgl",
+        "type": "eswrfe",
         "write a 64k": [71598, 22032],
         "write a 1024k": [84995, 34596]
     }
diff --git a/web_app/__init__.py b/web_app/__init__.py
index 7aa6312..4bd9921 100644
--- a/web_app/__init__.py
+++ b/web_app/__init__.py
@@ -2,8 +2,10 @@
 from flask_bootstrap import Bootstrap
 import json
 import os.path
+from config import TEST_PATH
 from report import build_vertical_bar, build_lines_chart
-from storage_api import create_storage, TEST_PATH
+from storage_api import create_storage
+import requests
 
 app = Flask(__name__)
 Bootstrap(app)
@@ -52,7 +54,6 @@
     table = [[]]
     storage = create_storage('file://' + TEST_PATH + '/' + test_name + '.json')
     results = storage.recent_builds()
-
     bars = build_vertical_bar(results)
     lines = build_lines_chart(results)
     urls = bars + lines
@@ -77,11 +78,52 @@
     return render_template("test.html", urls=urls, table_url=url_for('render_table', test_name=test_name))
 
 
+def collect_lab_data(tests, meta):
+    print requests.get(meta['__meta__'], cookies={"token" : '72237e94dc2b408482c29edaf3609da7'}).content
+    lab_info = json.loads(requests.get(meta['__meta__'], cookies={"token" : '72237e94dc2b408482c29edaf3609da7'}).content)
+    nodes = []
+    result = {}
+
+    for node in lab_info:
+        d = {}
+        d['name'] = node['name']
+        p = []
+        i = []
+        disks = []
+        devices = []
+
+        for processor in node['meta']['cpu']['spec']:
+             p.append(processor)
+
+        for iface in node['meta']['interfaces']:
+            i.append(iface)
+
+        m = node['meta']['memory'].copy()
+
+        for disk in node['meta']['disks']:
+            disks.append(disk)
+
+        d['memory'] = m
+        d['disks'] = disks
+        d['devices'] = devices
+        d['interfaces'] = i
+        d['processors'] = p
+
+        nodes.append(d)
+
+    result['nodes'] = nodes
+    result['name'] = 'Perf-1 Env'
+
+    return result
+
+
 @app.route("/tests/table/<test_name>/")
 def render_table(test_name):
     tests = load_test(test_name)
     header_keys = ['build_id', 'iso_md5', 'type']
     table = [[]]
+    meta = {"__meta__" : "http://172.16.52.112:8000/api/nodes"}
+    data = collect_lab_data(tests, meta)
 
     if len(tests) > 0:
         sorted_keys = sorted(tests[0].keys())
@@ -101,7 +143,8 @@
 
             table.append(row)
 
-    return render_template("table.html", headers=header_keys, table=table, back_url=url_for('render_test', test_name=test_name))
+    return render_template("table.html", headers=header_keys, table=table,
+                           back_url=url_for('render_test', test_name=test_name), lab=data)
 
 
 @app.route("/tests/<test_name>", methods=['POST'])
@@ -109,7 +152,9 @@
     tests = json.loads(request.data)
 
     if not hasattr(g, "storage"):
-        g.storage = create_storage("file://" + os.path.dirname(__file__) + "/test_results/sample.json", "", "")
+        path = "file://" + TEST_PATH + '/' + test_name + ".json"
+        print path
+        g.storage = create_storage(path, "", "")
 
     for test in tests:
         g.storage.store(test)
diff --git a/web_app/templates/lab_header.html b/web_app/templates/lab_header.html
index 03b7e8e..203adf2 100644
--- a/web_app/templates/lab_header.html
+++ b/web_app/templates/lab_header.html
@@ -1,30 +1,38 @@
 <div>
-    <table>
-        <th>
-            Parameter name :
-        </th>
-        <th>
-            Value :
-        </th>
-        <tr>
-            <td>Proccessor </td>
-            <td>Intel(R) Xeon(R) CPU E5-2620 v2 @ 2.10GHz</td>
-        </tr>
-        <tr>
-            <td>Proccessor count</td>
-            <td>12</td>
-        </tr>
-        <tr>
-            <td>RAM </td>
-            <td> 2 x 16 GB, Total 32GB</td>
-        </tr>
-        <tr>
-            <td>Disk Size</td>
-            <td> 2 x 16 GB, Total 32GB</td>
-        </tr>
-        <tr>
-            <td>Disk model</td>
-            <td>ST2000NM0033-9ZM</td>
-        </tr>
-    </table>
+    <div>
+            Lab Name : {{ lab.name }}
+    </div>
+
+    {% for node in lab.nodes %}
+        {%  for p in node.processors %}
+            <div>
+               Processor model : {{ p.model }}
+               Processor frequency : {{ p.frequency }}
+            </div>
+        {% endfor %}
+
+        {%  for i in node.interfaces %}
+            <div>
+               name : {{  i.name }}
+               MAC frequency : {{ i.mac }}
+               max speed : {{ i.max_speed }}
+               current speed : {{ i.current_speed }}
+               state : {{ i.state }}
+            </div>
+        {% endfor %}
+
+        {%  for disk in node.disks %}
+            <div>
+               Disk name : {{ disk.name }}
+               Size: {{ disk.size }}
+            </div>
+        {% endfor %}
+
+        <div>
+            Memory total : node.memory.total
+            Memory : node.memory.maximum_capacity
+        </div>
+
+    {% endfor %}
+
 </div>
\ No newline at end of file
diff --git a/web_app/templates/test.html b/web_app/templates/test.html
index eb4df3d..6313b62 100644
--- a/web_app/templates/test.html
+++ b/web_app/templates/test.html
@@ -8,7 +8,7 @@
 </head>
 <body>
     {% block body %}
-    <h1 align="center">Lab name goes here:-)</h1>
+    <h1 align="center">Perf-1 Env</h1>
     <div class="table-responsive">
         <table class="table" width="600">
         <div id="images">
