diff --git a/data_generator.py b/data_generator.py
new file mode 100644
index 0000000..3692389
--- /dev/null
+++ b/data_generator.py
@@ -0,0 +1,29 @@
+import sys
+import uuid
+import random
+import itertools
+
+from petname import Generate as pet_generate
+from storage_api import create_storage
+
+
+types = ["GA", "master"] + [pet_generate(2, '-') for _ in range(10)]
+random.shuffle(types)
+tp = itertools.cycle(types)
+
+sz = ["4k", "64k", "1m"]
+op_type = ["randread", "read", "randwrite", "write"]
+is_sync = ["s", "a"]
+
+storage = create_storage(sys.argv[1])
+
+for i in range(30):
+    row = {"build_id": pet_generate(2, " "),
+           "type": next(tp),
+           "iso_md5": uuid.uuid4().get_hex()}
+
+    for sz, op_type, is_sync in itertools.product(op_type, is_sync, sz):
+        row[" ".join([sz, op_type, is_sync])] = (random.random(),
+                                                 random.random() / 5)
+
+    storage.store(row)
diff --git a/fix_rally_subnets.sh b/fix_rally_subnets.sh
deleted file mode 100644
index b1073d4..0000000
--- a/fix_rally_subnets.sh
+++ /dev/null
@@ -1,19 +0,0 @@
-#!/bin/bash
-
-port_ids=$(neutron port-list | tail -n+4 | head -n-1 | awk '{print $2}')
-
-for port_id in $port_ids; do
-	neutron port-delete $port_id
-done
-
-subnet_list=$(neutron subnet-list | grep rally | awk '{print $2}')
-
-for subnet_id in $subnet_id; do
-	neutron subnet-delete $subnet_id
-done
-
-net_ids=$(neutron net-list | grep rally | awk '{print $2}')
-
-for net_id in $net_ids; do
-	neutron net-delete $net_id
-done
diff --git a/storage_api.py b/storage_api.py
index a7e9cf2..8b3eeae 100644
--- a/storage_api.py
+++ b/storage_api.py
@@ -1,5 +1,5 @@
 from urlparse import urlparse
-from gspread import WorksheetNotFound, login
+# from gspread import WorksheetNotFound, login
 import json
 import os
 from config import ROW_COUNT, DOCUMENT_ID, WORK_SHEET
@@ -49,15 +49,15 @@
         }
 
 
-def create_storage(url, email, password):
-        u = urlparse(url)
+def create_storage(url, email=None, password=None):
+    u = urlparse(url)
 
-        if u.scheme == 'file':
-            storage = DiskStorage(u.path)
-        else:
-            storage = GoogleDocsStorage(DOCUMENT_ID, WORK_SHEET, email, password)
+    if u.scheme == 'file':
+        storage = DiskStorage(u.path)
+    else:
+        storage = GoogleDocsStorage(DOCUMENT_ID, WORK_SHEET, email, password)
 
-        return storage
+    return storage
 
 
 class Storage(object):
@@ -149,7 +149,7 @@
                     m.build = row.pop("build_id")
                     m.build_type = row.pop("type")
                     m.md5 = row.pop("iso_md5")
-                    m.results = {k: row[k] for k in row.keys()}
+                    m.results = {k.split(" "): row[k] for k in row.keys()}
 
                     return m
         return None
