diff --git a/plstackapi/core/models/site.py b/plstackapi/core/models/site.py
index ef7db95..b15e35b 100644
--- a/plstackapi/core/models/site.py
+++ b/plstackapi/core/models/site.py
@@ -29,7 +29,6 @@
         # update the record
         if self.id:
             self.driver.update_tenant(self.tenant_id, 
-                                      name=self.login_base,
                                       description=self.name,
                                       enabled=self.enabled)
 
diff --git a/plstackapi/core/models/slice.py b/plstackapi/core/models/slice.py
index dda6553..027ba10 100644
--- a/plstackapi/core/models/slice.py
+++ b/plstackapi/core/models/slice.py
@@ -39,6 +39,11 @@
             router = self.driver.create_router(self.name)
             self.router_id = router['id']
 
+        if self.id:
+            self.driver.update_tenant(self.tenant_id,
+                                      description=self.description,
+                                      enabled=self.enabled)
+
         super(Slice, self).save(*args, **kwds)
 
     def delete(self, *args, **kwds):
diff --git a/plstackapi/openstack/driver.py b/plstackapi/openstack/driver.py
index 940be6c..3522b8c 100644
--- a/plstackapi/openstack/driver.py
+++ b/plstackapi/openstack/driver.py
@@ -67,14 +67,32 @@
     def add_user_role(self, user_id, tenant_id, role_name):
         user = self.shell.keystone.users.find(id=user_id)
         tenant = self.shell.keystone.tenants.find(id=tenant_id)
-        role = self.shell.keystone.roles.find(role_name)
-        return tenant.add_user(user, role)
+        role = self.shell.keystone.roles.find(name=role_name)
+
+        role_found = False
+        user_roles = user.list_roles(tenant.id)
+        for user_role in user_roles:
+            if user_role.name == role.name:
+                role_found = True
+        if not role_found:
+            tenant.add_user(user, role)
+
+        return 1
 
     def delete_user_role(self, user_id, tenant_id, role_name):
         user = self.shell.keystone.users.find(id=user_id)
         tenant = self.shell.keystone.tenants.find(id=tenant_id)
-        role = self.shell.keystone.roles.find(role_name)
-        return tenant.delete_user(user, role)
+        role = self.shell.keystone.roles.find(name=role_name)
+
+        role_found = False
+        user_roles = user.list_roles(tenant.id)
+        for user_role in user_roles:
+            if user_role.name == role.name:
+                role_found = True
+        if role_found:
+            tenant.remove_user(user, role)
+
+        return 1 
 
     def update_user(self, id, **kwds):
         return self.shell.keystone.users.update(id, **kwds)
