diff --git a/plstackapi/openstack/driver.py b/plstackapi/openstack/driver.py
index 9d00976..cba7d95 100644
--- a/plstackapi/openstack/driver.py
+++ b/plstackapi/openstack/driver.py
@@ -14,6 +14,20 @@
         else:
             self.shell = OpenStackClient()
 
+    def create_role(self, name): 
+        roles = self.shell.keystone.roles.findall(name=name)
+        if not roles:
+            role = self.shell.keystone.roles.create(name)
+        else:
+            role = roles[0] 
+        return role
+
+    def delete_role(self, name):
+        roles = self.shell.keystone.roles.findall(name=name)
+        for role in roles:
+            self.shell.keystone.roles.delete(role)
+        return 1
+
     def create_tenant(self, tenant_name, enabled, description):
         """Create keystone tenant. Suggested fields: name, description, enabled"""  
         tenants = self.shell.keystone.tenants.findall(name=tenant_name)
diff --git a/plstackapi/planetstack/api/roles.py b/plstackapi/planetstack/api/roles.py
index 2c14e2e..34415d8 100644
--- a/plstackapi/planetstack/api/roles.py
+++ b/plstackapi/planetstack/api/roles.py
@@ -5,16 +5,16 @@
  
 
 def add_role(auth, name):
-    client = auth_check(auth)
-    keystone_role = client.keystone.roles.create(name)
+    driver = OpenStackDriver(client = auth_check(auth))    
+    keystone_role = driver.create_role(name=name)
     role = Role(role_type=name, role_id=keystone_role.id)
     role.save()
     return role
 
 def delete_role(auth, name):
-    client = auth_check(auth)
+    driver = OpenStackDriver(client = auth_check(auth))   
     role = Role.objects.filter(role_type=name)
-    client.keystone.roles.delete(role.role_id)
+    driver.delete_role(name) 
     role.delete()
     return 1
 
diff --git a/plstackapi/util/json.py b/plstackapi/util/json.py
deleted file mode 100644
index ceb6dc9..0000000
--- a/plstackapi/util/json.py
+++ /dev/null
@@ -1,7 +0,0 @@
-import json
-
-def parse_request(request):
-    d = {}
-    for (k,v) in request.items():
-        d[k] = json.loads(v) 
-
diff --git a/plstackapi/util/jsonhelper.py b/plstackapi/util/jsonhelper.py
deleted file mode 100644
index ceb6dc9..0000000
--- a/plstackapi/util/jsonhelper.py
+++ /dev/null
@@ -1,7 +0,0 @@
-import json
-
-def parse_request(request):
-    d = {}
-    for (k,v) in request.items():
-        d[k] = json.loads(v) 
-
