diff --git a/permission_watchdog_7/permission_watchdog.admin.inc b/permission_watchdog/permission_watchdog.admin.inc
index 543a025..b9e960d 100644
--- a/permission_watchdog_7/permission_watchdog.admin.inc
+++ b/permission_watchdog/permission_watchdog.admin.inc
@@ -2,76 +2,71 @@
 
 function permission_watchdog_admin_settings() {
   $form = array();
-  
-  $roles = array_merge(array('all' => t('All roles')),  user_roles());
-  
-  
+
+  $roles = array('all' => t('All roles')) + user_roles();
+
   $form['permsission_watchdog_roles'] = array(
     '#type' => 'checkboxes',
     '#title' => t('Track changes to permissions on the following roles.'),
     '#options' => $roles,
     '#default_value' => variable_get('permsission_watchdog_roles', array()),
   );
-  
+
   return system_settings_form($form);
 }
 
 function permission_watchdog_report($form, $form_state) {
   $form = array();
   $headers = array(t('User'), t('Role'), t('Timestamp'), t('Changes'));
-  $module_info = system_get_info('module');
   $permission_labels = array();
-  foreach (module_implements('permission') as $module) {
-    $modules[$module] = $module_info[$module]['name'];
-  }
-  foreach ($modules as $module => $display_name) {
-    if ($permissions = module_invoke($module, 'permission')) {
+  foreach (module_implements('perm') as $module) {
+    if ($permissions = module_invoke($module, 'perm')) {
+      $path = drupal_get_path('module', $module) . '/' . $module . '.info';
+      $info = drupal_parse_info_file($path);
+      $labels = array();
+
       foreach($permissions as $k => $permission) {
-        $permissions[$k]['module'] = $display_name;
+        $labels[$permission] = $info['name'];
       }
-      $permission_labels = array_merge($permission_labels, $permissions);
+      $permission_labels = array_merge($permission_labels, $labels);
     }
   }
-  $query = db_select('permission_watchdog', 'w');
-  $count_query = clone $query;
-  $count_query->addExpression('COUNT(w.change_id)');
-  
+
+  $query = "SELECT `change_id`, `uid`, `rid`, `stamp`, `data` FROM {permission_watchdog}";
+  $count_query = "SELECT COUNT(`change_id`) FROM {permission_watchdog}";
+
   $session = ($_SESSION['permission_watchdog_filter']) ? $_SESSION['permission_watchdog_filter'] : array();
-  
-  if($session['roles']) {
-    $query->condition('rid', $session['roles'], 'IN');
+
+  if(isset($session['roles'])) {
+    $query = sprintf($query . "WHERE `rid` IN (%s)", implode(", ", $session['roles']));
+    $count_query = sprintf($query . " WHERE `rid` IN (%s)", implode(', ', $session['roles']));
   }
-  
-  $query = $query->extend('PagerDefault')->extend('TableSort');
-  $query
-    ->fields('w', array('uid', 'rid', 'stamp', 'data'))
-    ->limit(30)
-    ->setCountQuery($count_query);
-  $result = $query->execute();
-  
+
+  $result = pager_query($query, 30, 0, $count_query);
+
   $rows = array();
-  
-  foreach($result as $row) {
+
+  while($row = db_fetch_object($result)) {
     $changes = unserialize($row->data);
-    $role = user_role_load($row->rid);
+    $role = db_fetch_object(db_query('SELECT r.rid, p.perm FROM {role} r LEFT JOIN {permission} p ON r.rid = p.rid WHERE r.rid = %d', $row->rid));
     $items = array();
     foreach($changes as $permission => $change) {
       $change = ($change) ? t('Added') : t('Removed');
       $items[] = t('%change <strong>@module:</strong> !permission', array('%change' => $change,
-                    '@module' => $permission_labels[$permission]['module'],
-                    '!permission' => $permission_labels[$permission]['title']));
+                    '@module' => $permission_labels[$permission],
+                    '!permission' => $permission));
     }
     $rows[] = array(theme('username', array('account' => user_load($row->uid))),
                     $role->name,
                     format_date($row->stamp),
-                    theme('item_list', array('items' => $items)));
+                    theme('item_list', $items));
   }
-  
+
   $form['filters'] = array(
     '#type' => 'fieldset',
     '#title' => 'Filters',
   );
-  
+
   $form['filters']['roles'] = array(
     '#type' => 'select',
     '#multiple' => 'multple',
@@ -79,16 +74,16 @@ function permission_watchdog_report($form, $form_state) {
     '#options' => user_roles(),
     '#default_value' => $session['roles'],
   );
-  
+
   $form['filters']['submit'] = array(
     '#type' => 'submit',
     '#value' => t('Filter'),
   );
-  
-  $form['table'] = array('#markup' => theme('table', array('header' => $headers, 'rows' => $rows)));
-  
-  $form['pager'] = array('#markup' => theme('pager'));
-  
+
+  $form['table'] = array('#value' => theme('table', $headers, $rows));
+
+  $form['pager'] = array('#value' => theme('pager'));
+
   return $form;
 }
 
@@ -99,5 +94,4 @@ function permission_watchdog_report_submit($form, $form_state) {
       $_SESSION['permission_watchdog_filter']['roles'][$rid] = $rid;
     }
   }
-  
-}
\ No newline at end of file
+}
diff --git a/permission_watchdog_7/permission_watchdog.info b/permission_watchdog/permission_watchdog.info
index 58dd04b..769cb48 100644
--- a/permission_watchdog_7/permission_watchdog.info
+++ b/permission_watchdog/permission_watchdog.info
@@ -1,10 +1,3 @@
 name=Permission Watchdog
 description = Logs changes to role permissions.
-core = 7.x
-
-; Information added by drupal.org packaging script on 2012-02-01
-version = "7.x-1.x-dev"
-core = "7.x"
-project = "permission_watchdog"
-datestamp = "1328057268"
-
+core = 6.x
diff --git a/permission_watchdog_7/permission_watchdog.install b/permission_watchdog/permission_watchdog.install
index 7785528..492ac58 100644
--- a/permission_watchdog_7/permission_watchdog.install
+++ b/permission_watchdog/permission_watchdog.install
@@ -6,6 +6,13 @@
  */
 
 /**
+ * Implementation of hook_install().
+ */
+function permission_watchdog_install() {
+  drupal_install_schema('permission_watchdog');
+}
+
+/**
  * Implements hook_schema().
  */
 function permission_watchdog_schema() {
@@ -36,7 +43,7 @@ function permission_watchdog_schema() {
         'unsigned' => 1,
         'not null' => TRUE,
       ),
-      'data' => array( 
+      'data' => array(
         'type' => 'blob',
         'not null' => FALSE,
         'size' => 'big',
@@ -45,9 +52,7 @@ function permission_watchdog_schema() {
       ),
 
     ),
-    'indexes' => array(
-      'change_id' => array('change_id'),
-    ),
+    'primary key' => array('change_id'),
   );
 
   return $schema;
diff --git a/permission_watchdog_7/permission_watchdog.module b/permission_watchdog/permission_watchdog.module
index 5fae3c6..e5df4ed 100644
--- a/permission_watchdog_7/permission_watchdog.module
+++ b/permission_watchdog/permission_watchdog.module
@@ -6,7 +6,7 @@
 function permission_watchdog_menu() {
   $items = array();
 
-  $items['admin/config/people/permission_watchdog'] = array(
+  $items['admin/settings/logging/permission_watchdog'] = array(
     'title' => 'Permission watchdog',
     'description' => 'Logs changes to role permissions.',
     'page callback' => 'drupal_get_form',
@@ -15,7 +15,7 @@ function permission_watchdog_menu() {
     'access arguments' => array('administer site configuration'),
     'file' => 'permission_watchdog.admin.inc',
   );
-  
+
   $items['admin/reports/permission_watchdog'] = array(
     'title' => 'Permission change report',
     'description' => t('Display a log of changes to role permissions.'),
@@ -24,27 +24,41 @@ function permission_watchdog_menu() {
     'access arguments' => array('administer site configuration'),
     'file' => 'permission_watchdog.admin.inc',
   );
-  
+
   return $items;
 }
 
 /**
- * Implements hook_FORM_ID_alter().
+ * Implements hook_form_alter().
  * Altering the user permissions form to add another submit handler.
  */
-function permission_watchdog_form_user_admin_permissions_alter(&$form, $form_state, $form_id) {
-  $form['role_permissions'] = array(
-    '#type' => 'value',
-    '#value' => array(),
-  );
-  foreach($form['role_names'] as $rid => $role) {
-    if (strpos($rid, '#') !== FALSE) {
-      continue;
+function permission_watchdog_form_alter(&$form, $form_state, $form_id) {
+  if ($form_id == 'user_admin_perm') {
+    $form['role_permissions'] = array(
+      '#type' => 'value',
+      '#value' => array(),
+    );
+    foreach($form['role_names'] as $rid => $role_name) {
+      if (strpos($rid, '#') !== FALSE) {
+        continue;
+      }
+
+      $form['role_permissions']['#value'][$rid] = array();
+
+      if (is_numeric($rid)) {
+        $result = db_query('SELECT r.rid, p.perm FROM {role} r LEFT JOIN {permission} p ON r.rid = p.rid WHERE r.rid = %d', $rid);
+      }
+      else {
+        $result = db_query('SELECT r.rid, p.perm FROM {role} r LEFT JOIN {permission} p ON r.rid = p.rid ORDER BY name');
+      }
+
+      while ($role = db_fetch_object($result)) {
+        $form['role_permissions']['#value'][$rid] = explode(', ', $role->perm);
+      }
     }
-    $role_permissions = user_role_permissions(array($rid => $rid));
-    $form['role_permissions']['#value'][$rid] = $role_permissions[$rid];
+
+    $form['#submit'][] = 'permission_watchdog_form_user_admin_permissions_alter_submit';
   }
-  $form['#submit'][] = 'permission_watchdog_form_user_admin_permissions_alter_submit';
 }
 
 function permission_watchdog_form_user_admin_permissions_alter_submit($form, &$form_state) {
@@ -53,22 +67,20 @@ function permission_watchdog_form_user_admin_permissions_alter_submit($form, &$f
   foreach($form['role_permissions']['#value'] as $rid => $role_permissions) {
     if ($roles[$rid] || $roles['all']) {
       $data = array();
-      foreach($form_state['values'][$rid] as $permission => $value) {
-        if (!$role_permissions[$permission] && $value) {
-          $data[$permission] = 1;
-        }
-        elseif ($role_permissions[$permission] && !$value) {
-          $data[$permission] = 0;
-        }
+
+      // Permissions added
+      $perms_changed = array_keys(array_diff($form_state['values'][$rid], $role_permissions));
+      foreach($perms_changed as $perm) {
+        $data[$perm] = TRUE;
       }
-      if(count($data)) {
-        db_insert('permission_watchdog')
-          ->fields(array('rid' => $rid,
-                         'stamp' => time(),
-                         'uid' => $user->uid,
-                         'data' => serialize($data)))
-          ->execute();
+
+      // Permissions removed
+      $perms_changed  = array_diff($role_permissions, $form_state['values'][$rid]);
+      foreach($perms_changed as $perm) {
+        $data[$perm] = FALSE;
       }
+
+      db_query("INSERT INTO {permission_watchdog} (`rid`, `uid`, `stamp`, `data`) VALUES (%d, %d, %d, '%s')", $rid, $user->uid, time(), serialize($data));
     }
   }
-}
\ No newline at end of file
+}
