diff --git a/session_limit.module b/session_limit.module
index ae39c5e..290dba5 100644
--- a/session_limit.module
+++ b/session_limit.module
@@ -30,12 +30,12 @@ function session_limit_help($path, $args) {
 function session_limit_perm() {
   return array(
     'administer session limits by role' => array(
-	  'title' => t('Administer session limits by role'),
-	  'description' = t(''),
+      'title' => t('Administer session limits by role'),
+      'description' => t(''),
     ),
     'administer session limits per user' => array(
-	  'title' => t('Administer session limits by user'),
-	  'description' = t(''),
+      'title' => t('Administer session limits by user'),
+      'description' => t(''),
     ),
   );
 }
@@ -58,7 +58,7 @@ function session_limit_menu() {
     'access callback' => 'user_is_logged_in',
     'type' => MENU_SUGGESTED_ITEM,
   );
-  $items['admin/user/session_limit'] = array(
+  $items['admin/people/session_limit'] = array(
     'title' => 'Session limit',
     'description' => 'Configure session limits.',
     'page callback' => 'drupal_get_form',
@@ -67,7 +67,7 @@ function session_limit_menu() {
     'access arguments' => array('administer site configuration'),
     'type' => MENU_NORMAL_ITEM,
   );
-  $items['admin/user/session_limit/defaults'] = array(
+  $items['admin/people/session_limit/defaults'] = array(
     'title' => 'Defaults',
     'page callback' => 'drupal_get_form',
     'page arguments' => array('session_limit_settings'),
@@ -75,7 +75,7 @@ function session_limit_menu() {
     'access arguments' => array('administer site configuration'),
     'type' => MENU_DEFAULT_LOCAL_TASK,
   );
-  $items['admin/user/session_limit/roles'] = array(
+  $items['admin/people/session_limit/roles'] = array(
     'title' => 'Role limits',
     'description' => 'Configure session limits by role.',
     'page callback' => 'drupal_get_form',
@@ -318,19 +318,23 @@ function session_limit_page() {
 
   if (variable_get('session_limit_auto_drop', 0)) {
     // Get the oldest sessions.
-    $count = db_result(db_query("SELECT COUNT(sid) FROM {sessions} WHERE uid = :uid", array(':uid' => $user->uid)));
+    $count = db_query("SELECT COUNT(sid) FROM {sessions} WHERE uid = :uid", array(':uid' => $user->uid))->fetchField();
     $max_sessions = $count - session_limit_user_max_sessions($user);
-    $result = db_query_range("SELECT sid FROM {sessions} WHERE uid = :uid ORDER BY timestamp", array(':uid' => $user->uid), 0, $max_sessions);
-
-    while ($sids = db_fetch_object($result)) {
-      session_limit_invoke_session_limit($sids->sid, 'disconnect');
+drupal_set_message($max_sessions);
+    $result = db_select('sessions', 's')
+      ->condition('s.uid', $user->uid)
+      ->fields('s', array('sid'))
+      ->orderBy('timestamp', 'ASC')
+      ->range(0, $max_sessions)
+      ->execute();
+
+    foreach ($result as $session) {
+      session_limit_invoke_session_limit($session->sid, 'disconnect');
     }
-
-    drupal_goto();
   }
 
-  $result = db_query('SELECT * FROM {sessions} WHERE uid = %d', $user->uid);
-  while ($obj =  db_fetch_object($result)) {
+  $result = db_query('SELECT * FROM {sessions} WHERE uid = :uid', array(':uid' => $user->uid));
+  foreach ($result as $obj) {
     $message = $user->sid == $obj->sid ? t('Your current session.') : '';
 
     $sids[$obj->sid] = t('<strong>Host:</strong> %host (idle: %time) <b>@message</b>',
@@ -432,7 +436,8 @@ function session_limit_user_max_sessions_byrole($account) {
  * Implements hook_trigger_name().
  */
 function session_limit_session_limit($sid, $op) {
-  $aids = _trigger_get_hook_aids('session_limit', $op);
+  global $user;
+  $aids = trigger_get_assigned_actions('session_limit');
   $context = array(
     'hook' => 'session_limit',
     'op' => $op,
@@ -450,7 +455,13 @@ function session_limit_session_limit($sid, $op) {
     case 'disconnect':
       $logout_message = t('You have been automatically logged out. Someone else has logged in with your username and password and the maximum number of @number simultaneous sessions was exceeded. This may indicate that your account has been compromised or that account sharing is not allowed on this site. Please contact the site administrator if you suspect your account has been compromised.', array('@number' => session_limit_user_max_sessions()));
       $logout_message = 'messages|'. serialize(array('error' => array($logout_message)));
-      db_query("UPDATE {sessions} SET uid = 0, session = '%s' WHERE sid = '%s'", $logout_message, $sid);
+      $query = db_update('sessions')
+        ->fields(array(
+          'uid' => 0,
+          'session' => $logout_message,
+        ))
+        ->condition('sid', $sid)
+        ->execute();
 
       watchdog('session_limit', 'Disconnected for excess active sessions.', array(), WATCHDOG_NOTICE);
       break;
