diff --git a/ms_membership/ms_membership.module b/ms_membership/ms_membership.module
index fb34865..e971ac9 100644
--- a/ms_membership/ms_membership.module
+++ b/ms_membership/ms_membership.module
@@ -832,12 +832,7 @@ function ms_membership_add_role($uid, $rid) {
       // Remove the role first just in case the user already has it for some
       // reason.
       ms_membership_remove_role($account->uid, $rid);
-      db_insert('users_roles')
-        ->fields(array(
-          'uid' => $account->uid,
-          'rid' => $rid,
-        ))
-        ->execute();
+      user_multiple_role_edit(array($uid), 'add_role', $rid);
       $roles = user_roles(TRUE);
       ms_core_log('ms_membership', 'Added role !role to !user.',
         array('!role' => $roles[$rid], '!user' => l($account->name, 'user/' . $account->uid)));
@@ -860,11 +855,7 @@ function ms_membership_remove_role($uid, $rid) {
 
   if ($account && $rid && $account->uid && isset($account->roles[$rid])) {
     if (!in_array($rid, array(DRUPAL_ANONYMOUS_RID, DRUPAL_AUTHENTICATED_RID))) {
-      db_delete('users_roles')
-        ->condition('uid', $account->uid)
-        ->condition('rid', $rid)
-        ->execute();
-
+      user_multiple_role_edit(array($uid), 'remove_role', $rid);
       $roles = user_roles(TRUE);
       ms_core_log('ms_membership', 'Removed role !role from !user.',
         array('!role' => $roles[$rid], '!user' => l($account->name, 'user/' . $account->uid)));
