diff --git vud.install vud.install
index 33e7545..b69704b 100644
--- vud.install
+++ vud.install
@@ -6,24 +6,9 @@
  */
 
 /**
- * Implementation of hook_install().
- */
-function vud_install() {
-  drupal_install_schema('vud');
-}
-
-/**
- * Implementation of hook_schema().
- */
-function vud_schema() {
-  return array();
-}
-
-/**
  * Implementation of hook_uninstall().
  */
 function vud_uninstall() {
-  drupal_uninstall_schema('vud');
   variable_del('vud_tag');
   variable_del('vud_reset_vote');
 }
diff --git vud.module vud.module
index ed32d30..213db2e 100644
--- vud.module
+++ vud.module
@@ -8,57 +8,12 @@
 module_load_include('inc', 'vud', 'vud.theme');  // Include the theme.inc file.
 
 /**
- * Implementation of hook_init().
- */
-function vud_init() {
-  // Remove anonymous sessions which were previously set to prevent pressflow
-  // page caching. This will eventually clean up those sessions over time.
-  // @todo: remove in a future release when it can be reasonably expected that
-  // no more sessions with this variable exist in the wild.
-  $now = time();
-  if (!empty($_SESSION['vud_timestamp'])) {
-    unset($_SESSION['vud_timestamp']);
-  }
-}
-
-/**
- * Implementation of hook_help().
- */
-function vud_help($path, $arg) {
-  switch ($path) {
-    case 'admin/help#vud':
-      $output = '<p>'. t('Provides a configurable up/down voting widget for other modules to use.') .'</p>';
-      return $output;
-  }
-}
-
-/**
- * Advanced menu settings callback.
- */
-function vud_admin_advanced_settings() {
-  $form['vud_tag'] = array(
-    '#type'          => 'textfield',
-    '#title'         => t('Voting API tag'),
-    '#default_value' => variable_get('vud_tag', 'vote'),
-    '#description'   => t('Since Vote Up/Down uses Voting API, all votes will be tagged with this term. (default: vote)<br />This tag is useful is you have deployed various modules that use Voting API. It should always be a unique value. Usually, there is NO need to change this.'),
-  );
-  $form['vud_message_on_deny'] = array(
-    '#type'          => 'checkbox',
-    '#title'         => t('Message on denied permission'),
-    '#default_value' => variable_get('vud_message_on_deny', FALSE),
-    '#description'   => t('When this flag is active, a modal window will be shown to the end user instead of avoid showing the voting links'),
-  );
-
-  return system_settings_form($form);
-}
-
-/**
  * Implementation of hook_menu().
  */
 function vud_menu() {
   $items = array();
 
-  $items['admin/settings/voteupdown'] = array(
+  $items['admin/config/search/voteupdown'] = array(
     'title'            => 'Vote Up/Down',
     'description'      => 'Control the functioning of Vote Up/Down.',
     'page callback'    => 'drupal_get_form',
@@ -67,7 +22,7 @@ function vud_menu() {
     'type'             => MENU_NORMAL_ITEM,
   );
 
-  $items['admin/settings/voteupdown/advanced'] = array(
+  $items['admin/config/search/voteupdown/advanced'] = array(
     'title'  => 'General',
     'type'   => MENU_DEFAULT_LOCAL_TASK,
     'weight' => -10,
@@ -110,10 +65,72 @@ function vud_menu() {
 }
 
 /**
- * Implementation of hook_perm().
+ * Implementation of hook_init().
  */
-function vud_perm() {
-  return array('use vote up/down', 'administer vote up/down', 'access vote up/down statistics', 'reset vote up/down votes');
+function vud_init() {
+  // Remove anonymous sessions which were previously set to prevent pressflow
+  // page caching. This will eventually clean up those sessions over time.
+  // @todo: remove in a future release when it can be reasonably expected that
+  // no more sessions with this variable exist in the wild.
+  $now = time();
+  if (!empty($_SESSION['vud_timestamp'])) {
+    unset($_SESSION['vud_timestamp']);
+  }
+}
+
+/**
+ * Implementation of hook_help().
+ */
+function vud_help($path, $arg) {
+  switch ($path) {
+    case 'admin/help#vud':
+      $output = '<p>'. t('Provides a configurable up/down voting widget for other modules to use.') .'</p>';
+      return $output;
+  }
+}
+
+/**
+ * Advanced menu settings callback.
+ */
+function vud_admin_advanced_settings() {
+  $form['vud_tag'] = array(
+    '#type'          => 'textfield',
+    '#title'         => t('Voting API tag'),
+    '#default_value' => variable_get('vud_tag', 'vote'),
+    '#description'   => t('Since Vote Up/Down uses Voting API, all votes will be tagged with this term. (default: vote)<br />This tag is useful is you have deployed various modules that use Voting API. It should always be a unique value. Usually, there is NO need to change this.'),
+  );
+  $form['vud_message_on_deny'] = array(
+    '#type'          => 'checkbox',
+    '#title'         => t('Message on denied permission'),
+    '#default_value' => variable_get('vud_message_on_deny', FALSE),
+    '#description'   => t('When this flag is active, a modal window will be shown to the end user instead of avoid showing the voting links'),
+  );
+
+  return system_settings_form($form);
+}
+
+/**
+ * Implementation of hook_permission().
+ */
+function vud_permission() {
+  return array(
+    'use vote up/down' => array(
+      'title' => t('Use Vote Up/Down'),
+      'description' => t('Grant users the ability to cast votes'),
+    ),
+    'administer vote up/down' => array(
+      'title' => t('Administer Vote Up/Down'),
+      'description' => t('Adjust the settings of the Vote Up/Down module'),
+    ), 
+    'access vote up/down statistics' => array(
+      'title' => t('Access Vote Up/Down Statistics'),
+      'description' => t('Permission to see who is voting on what'),
+    ), 
+    'reset vote up/down votes' => array(
+      'title' => t('Reset Votes'),
+      'description' => t('Reset all of the Up/Down votes on the site'),
+    ),
+  );
 }
 
 /**
diff --git vud_comment/vud_comment.info vud_comment/vud_comment.info
index b0bff1f..aa4a054 100644
--- vud_comment/vud_comment.info
+++ vud_comment/vud_comment.info
@@ -3,4 +3,4 @@ description = "Allows adding an up/down voting widget to comments."
 dependencies[] = comment
 dependencies[] = vud
 package = Voting
-core = 6.x
+core = 7.x
diff --git vud_comment/vud_comment.install vud_comment/vud_comment.install
index ad2d945..fe0df4d 100644
--- vud_comment/vud_comment.install
+++ vud_comment/vud_comment.install
@@ -6,27 +6,12 @@
  */
 
 /**
- * Implementation of hook_install().
- */
-function vud_comment_install() {
-  drupal_install_schema('vud_comment');
-}
-
-/**
- * Implementation of hook_schema().
- */
-function vud_comment_schema() {
-  return array();
-}
-
-/**
  * Implementation of hook_uninstall().
  */
 function vud_comment_uninstall() {
-  drupal_uninstall_schema('vud_comment');
   variable_del('vud_comment_node_types');
   variable_del('vud_comment_widget');
   variable_del('vud_comment_widget_display');
   variable_del('vud_comment_votes');
   variable_del('vud_comment_reset');
-}
\ No newline at end of file
+}
diff --git vud_comment/vud_comment.module vud_comment/vud_comment.module
index b19d6ac..93041f2 100644
--- vud_comment/vud_comment.module
+++ vud_comment/vud_comment.module
@@ -9,21 +9,13 @@ define('VUD_COMMENT_DISPLAY_HIDDEN', 0);
 define('VUD_COMMENT_DISPLAY_NORMAL', 1);
 
 /**
- * Implementation of hook_perm().
- */
-function vud_comment_perm() {
-  return array('administer vote up/down on comments', 'use vote up/down on comments');
-}
-
-/**
  * Implementation of hook_menu().
  */
 function vud_comment_menu() {
   $items = array();
-  $items['admin/settings/voteupdown/comment'] = array(
+  $items['admin/config/search/voteupdown/comment'] = array(
     'title'            => 'Comments',
     'description'      => 'Vote Up/Down Comment settings',
-    'page callback'    => 'drupal_get_form',
     'page arguments'   => array('vud_comment_admin_settings'),
     'access arguments' => array('administer vote up/down on comments'),
     'type'             => MENU_LOCAL_TASK,
@@ -33,6 +25,20 @@ function vud_comment_menu() {
 }
 
 /**
+ * Implementation of hook_permission().
+ */
+function vud_comment_permission() {
+  return array(
+    'administer vote up/down on comments' => array(
+      'title' => t('Administer Vote Up/Down on Comments'),
+    ),
+    'use vote up/down on comments' => array(
+      'title' => t('Vote on Comments'),
+    ),
+  );
+}
+
+/**
  * Menu callback for administration settings.
  */
 function vud_comment_admin_settings() {
@@ -41,7 +47,7 @@ function vud_comment_admin_settings() {
     '#title'       => t('Node types'),
     '#description' => t('Select the node types for which voting on comments will be activated.'),
     '#default_value' => variable_get('vud_comment_node_types', array()),
-    '#options'       => node_get_types('names'),
+    '#options'       => node_type_get_names(),
   );
   $form['vud_comment_widget'] = array(
     '#type'          => 'radios',
@@ -101,25 +107,21 @@ function vud_comment_admin_settings_validate($form, &$form_state) {
 }
 
 /**
- * Implementation of hook_comment().
+ * Implementation of hook_comment_view().
  */
-function vud_comment_comment(&$comment, $op) {
-  switch ($op) {
-    case 'view':
-      if (!isset($comment->cid)) {
-        return;
-      }
-      $type = _vud_comment_get_node_type($comment->nid);
-      $comment_allow = in_array($type, variable_get('vud_comment_node_types', array()), TRUE);
-      if ($comment_allow && user_access('use vote up/down on comments')) {
-        $tag = variable_get('vud_tag', 'vote');
-        $widget = variable_get('vud_comment_widget', 'plain');
-        $comment->vud_comment_widget = theme('vud_widget', $comment->cid, 'comment', $tag, $widget);
-        if (variable_get('vud_comment_widget_display', VUD_COMMENT_DISPLAY_NORMAL) == VUD_COMMENT_DISPLAY_NORMAL) {
-          $comment->comment = $comment->vud_comment_widget . $comment->comment;
-        }
-      }
-      break;
+function vud_comment_comment_view($comment, $view_mode, $langcode) {
+  if (!isset($comment->cid)) {
+    return;
+  }
+  $type = _vud_comment_get_node_type($comment->nid);
+  $comment_allow = in_array($type, variable_get('vud_comment_node_types', array()), TRUE);
+  if ($comment_allow && user_access('use vote up/down on comments')) {
+    $tag = variable_get('vud_tag', 'vote');
+    $widget = variable_get('vud_comment_widget', 'plain');
+    $comment->vud_comment_widget = theme('vud_widget', $comment->cid, 'comment', $tag, $widget);
+    if (variable_get('vud_comment_widget_display', VUD_COMMENT_DISPLAY_NORMAL) == VUD_COMMENT_DISPLAY_NORMAL) {
+      $comment->comment = $comment->vud_comment_widget . $comment->comment;
+    }
   }
 }
 
diff --git vud_node/vud_node.info vud_node/vud_node.info
index c4796b7..542a3c3 100644
--- vud_node/vud_node.info
+++ vud_node/vud_node.info
@@ -2,4 +2,4 @@ name = Vote Up/Down Nodes
 description = "Allows adding an up/down voting widget to selected content types."
 dependencies[] = vud
 package = Voting
-core = 6.x
\ No newline at end of file
+core = 7.x
diff --git vud_node/vud_node.install vud_node/vud_node.install
index c9ddd60..711e437 100644
--- vud_node/vud_node.install
+++ vud_node/vud_node.install
@@ -6,24 +6,9 @@
  */
 
 /**
- * Implementation of hook_install().
- */
-function vud_node_install() {
-  drupal_install_schema('vud_node');
-}
-
-/**
- * Implementation of hook_schema().
- */
-function vud_node_schema() {
-  return array();
-}
-
-/**
  * Implementation of hook_uninstall().
  */
 function vud_node_uninstall() {
-  drupal_uninstall_schema('vud_node');
   variable_del('vud_node_types');
   variable_del('vud_node_widget');
   variable_del('vud_node_widget_show');
diff --git vud_node/vud_node.module vud_node/vud_node.module
index 635f600..44ef2d8 100644
--- vud_node/vud_node.module
+++ vud_node/vud_node.module
@@ -13,10 +13,24 @@ define('VUD_NODE_DISPLAY_BOTH', 3);
 define('VUD_NODE_WIDGET_MESSAGE_TEASER_DENIED', 2);
 
 /**
- * Implementation of hook_perm().
+ * Implementation of hook_permission().
  */
-function vud_node_perm() {
-  return array('view vote up/down count on nodes', 'use vote up/down on nodes', 'administer vote up/down on nodes', 'see vote up/down node stats');
+function vud_node_permission() {
+  return array(
+    'view vote up/down count on nodes' => array(
+      'title' => t('View Vote Count on Nodes'),
+    ),
+    'use vote up/down on nodes' => array(
+      'title' => t('Vote on Nodes'),
+      'description' => t('Allow users to vote nodes up/down'),
+    ),
+    'administer vote up/down on nodes' => array(
+      'title' => t('Administer Voting on Nodes'),
+    ),
+    'see vote up/down node stats' => array(
+      'title' => t('View Voting Statistics for Nodes'),
+    ),
+  );
 }
 
 /**
@@ -25,10 +39,9 @@ function vud_node_perm() {
 function vud_node_menu() {
   $items = array();
 
-  $items['admin/settings/voteupdown/node'] = array(
+  $items['admin/config/search/voteupdown/node'] = array(
     'title'            => 'Nodes',
     'description'      => 'Vote Up/Down Node settings',
-    'page callback'    => 'drupal_get_form',
     'page arguments'   => array('vud_node_admin_settings'),
     'access arguments' => array('administer vote up/down on nodes'),
     'weight'           => -10,
@@ -79,7 +92,7 @@ function vud_node_admin_settings() {
     '#title'         => t('Node types'),
     '#description'   => t('Select the node types for which you want to activate voting.'),
     '#default_value' => variable_get('vud_node_types', array()),
-    '#options'       => node_get_types('names'),
+    '#options'       => node_type_get_names(),
   );
   $form['vud_node_widget'] = array(
     '#title'         => t('Widget selection'),
@@ -126,73 +139,69 @@ function vud_node_vud_widget_message_codes_alter(&$widget_message_codes) {
 }
 
 /**
- * Implementation of hook_nodeapi().
+ * Implementation of hook_node_view().
  */
-function vud_node_nodeapi(&$node, $op, $a3 = NULL, $a4 = NULL) {
-  switch ($op) {
-    case 'view':
-      // avoid showing the widget in some node builds
-      $exclude_modes = array(
-        NODE_BUILD_PREVIEW,
-        NODE_BUILD_SEARCH_INDEX,
-        NODE_BUILD_SEARCH_RESULT,
-        NODE_BUILD_RSS,
-      );
-      if (in_array($node->build_mode, $exclude_modes)) {
-        break;
-      }
-      if (($can_edit=user_access('use vote up/down on nodes')) || user_access('view vote up/down count on nodes')) {
-        $node_type = in_array($node->type, variable_get('vud_node_types', array()), TRUE);
-        $widget_showmode = variable_get('vud_node_widget_show', VUD_NODE_DISPLAY_BOTH);
-        $tag = variable_get('vud_tag', 'vote');
-        $widget = variable_get('vud_node_widget', 'plain');
-        $vote_on_teaser = (bool)variable_get('vud_node_widget_vote_on_teaser', TRUE);
-        $teaser = $a3;
+function vud_node_node_view($node, $view_mode, $langcode) {
+  // avoid showing the widget in some node builds
+  $exclude_modes = array(
+    NODE_BUILD_PREVIEW,
+    NODE_BUILD_SEARCH_INDEX,
+    NODE_BUILD_SEARCH_RESULT,
+    NODE_BUILD_RSS,
+  );
+  if (in_array($node->build_mode, $exclude_modes)) {
+    break;
+  }
+  if (($can_edit=user_access('use vote up/down on nodes')) || user_access('view vote up/down count on nodes')) {
+    $node_type = in_array($node->type, variable_get('vud_node_types', array()), TRUE);
+    $widget_showmode = variable_get('vud_node_widget_show', VUD_NODE_DISPLAY_BOTH);
+    $tag = variable_get('vud_tag', 'vote');
+    $widget = variable_get('vud_node_widget', 'plain');
+    $vote_on_teaser = (bool)variable_get('vud_node_widget_vote_on_teaser', TRUE);
+    $teaser = $a3;
 
-        $widget_message_code = VUD_WIDGET_MESSAGE_ERROR;
-        if (!$can_edit) {
-          $widget_message_code = VUD_WIDGET_MESSAGE_DENIED;
-        }
-        elseif (!$vote_on_teaser) {
-          $widget_message_code = VUD_NODE_WIDGET_MESSAGE_TEASER_DENIED;
-        }
+    $widget_message_code = VUD_WIDGET_MESSAGE_ERROR;
+    if (!$can_edit) {
+      $widget_message_code = VUD_WIDGET_MESSAGE_DENIED;
+    }
+    elseif (!$vote_on_teaser) {
+      $widget_message_code = VUD_NODE_WIDGET_MESSAGE_TEASER_DENIED;
+    }
 
-        if ($node_type) {
+    if ($node_type) {
 
-          switch ($widget_showmode) {
-            case VUD_NODE_DISPLAY_TEASER_ONLY:
-              if ($teaser == 1) {
-                $node->content['vud_node_widget_display'] = array(
-                  '#value' => theme('vud_widget', $node->nid, 'node', $tag, $widget, !$vote_on_teaser || !$can_edit, $widget_message_code),
-                  '#weight' => -10,
-                );
-              }
-              break;
-            case VUD_NODE_DISPLAY_FULL_ONLY:
-              if ($teaser == 0) {
-                $node->content['vud_node_widget_display'] = array(
-                  '#value' => theme('vud_widget', $node->nid, 'node', $tag, $widget, !$can_edit, $widget_message_code),
-                  '#weight' => -10,
-                );
-              }
-              break;
-            case VUD_NODE_DISPLAY_BOTH:
-              if ($teaser == 1) {
-                $readonly = !$vote_on_teaser || !$can_edit;
-              }
-              else {
-                $readonly = !$can_edit;
-              }
-              $node->content['vud_node_widget_display'] = array(
-                '#value' => theme('vud_widget', $node->nid, 'node', $tag, $widget, $readonly, $widget_message_code),
-                '#weight' => -10,
-              );
-              break;
+      switch ($widget_showmode) {
+        case VUD_NODE_DISPLAY_TEASER_ONLY:
+          if ($teaser == 1) {
+            $node->content['vud_node_widget_display'] = array(
+              '#value' => theme('vud_widget', $node->nid, 'node', $tag, $widget, !$vote_on_teaser || !$can_edit, $widget_message_code),
+              '#weight' => -10,
+            );
           }
-
-        }
+          break;
+        case VUD_NODE_DISPLAY_FULL_ONLY:
+          if ($teaser == 0) {
+            $node->content['vud_node_widget_display'] = array(
+              '#value' => theme('vud_widget', $node->nid, 'node', $tag, $widget, !$can_edit, $widget_message_code),
+              '#weight' => -10,
+            );
+          }
+          break;
+        case VUD_NODE_DISPLAY_BOTH:
+          if ($teaser == 1) {
+            $readonly = !$vote_on_teaser || !$can_edit;
+          }
+          else {
+            $readonly = !$can_edit;
+          }
+          $node->content['vud_node_widget_display'] = array(
+            '#value' => theme('vud_widget', $node->nid, 'node', $tag, $widget, $readonly, $widget_message_code),
+            '#weight' => -10,
+          );
+          break;
       }
-      break;
+
+    }
   }
 }
 
diff --git vud_term/vud_term.info vud_term/vud_term.info
index 62b8ca8..c6eedeb 100644
--- vud_term/vud_term.info
+++ vud_term/vud_term.info
@@ -3,4 +3,4 @@ description = "Allows adding an up/down voting widget to taxonomy terms on a nod
 dependencies[] = taxonomy
 dependencies[] = vud
 package = Voting
-core = 6.x
\ No newline at end of file
+core = 7.x
diff --git vud_term/vud_term.install vud_term/vud_term.install
index 69f7e04..84660e8 100644
--- vud_term/vud_term.install
+++ vud_term/vud_term.install
@@ -6,24 +6,9 @@
  */
 
 /**
- * Implementation of hook_install().
- */
-function vud_term_install() {
-  drupal_install_schema('vud_term');
-}
-
-/**
- * Implementation of hook_schema().
- */
-function vud_term_schema() {
-  return array();
-}
-
-/**
  * Implementation of hook_uninstall().
  */
 function vud_term_uninstall() {
-  drupal_uninstall_schema('vud_term');
   variable_del('vud_term_types');
   variable_del('vud_term_widget');
   variable_del('vud_term_votetable_show');
diff --git vud_term/vud_term.module vud_term/vud_term.module
index 7bcdc42..decd86d 100644
--- vud_term/vud_term.module
+++ vud_term/vud_term.module
@@ -6,21 +6,14 @@
  */
 
 /**
- * Implementation of hook_perm().
- */
-function vud_term_perm() {
-  return array('use vote up/down on terms', 'administer vote up/down on terms');
-}
-
-/**
  * Implementation of hook_menu().
  */
 function vud_term_menu() {
   $items = array();
-  $items['admin/settings/voteupdown/term'] = array(
+
+  $items['admin/config/search/voteupdown/term'] = array(
     'title'            => 'Terms',
     'description'      => 'Vote Up/Down Term settings',
-    'page callback'    => 'drupal_get_form',
     'page arguments'   => array('vud_term_admin_settings'),
     'access arguments' => array('administer vote up/down on terms'),
     'type'             => MENU_LOCAL_TASK,
@@ -30,6 +23,20 @@ function vud_term_menu() {
 }
 
 /**
+ * Implementation of hook_permission().
+ */
+function vud_term_permission() {
+  return array(
+    'use vote up/down on terms' => array(
+      'title' => t('Vote on Terms'),
+    ),
+    'administer vote up/down on terms' => array(
+      'title' => t('Administer Vote Up/Down on Comments'),
+    ),
+  );
+}
+
+/**
  * Advanced menu settings callback.
  */
 function vud_term_admin_settings() {
@@ -38,7 +45,7 @@ function vud_term_admin_settings() {
     '#title'         => t('Node types'),
     '#description'   => t('Select the node types for which you want to activate voting on terms.'),
     '#default_value' => variable_get('vud_term_types', array()),
-    '#options'       => node_get_types('names'),
+    '#options'       => node_type_get_names(),
   );
   $form['vud_term_widget'] = array(
     '#type'          => 'radios',
@@ -66,33 +73,30 @@ function vud_term_admin_settings() {
 }
 
 /**
- * Implementation of hook_nodeapi().
+ * Implementation of hook_node_view().
  */
-function vud_term_nodeapi(&$node, $op, $a3 = NULL, $a4 = NULL) {
-  switch ($op) {
-    case 'view':
-      if (user_access('use vote up/down on terms')) {
-        $node_type = in_array($node->type, variable_get('vud_term_types', array()), TRUE);
-        $showmode  = variable_get('vud_term_votetable_show', 1);
-        $teaser = $a3;
-        if ($node_type) {
-          switch ($showmode) {
-            case 0:
-              if ($teaser == 1) {
-                _vud_term_generate_table($node);
-              }
-              break;
-            case 1:
-              if ($teaser == 0) {
-                _vud_term_generate_table($node);
-              }
-              break;
-            case 2:
-              _vud_term_generate_table($node);
-              break;
+function vud_term_node_view($node, $view_mode, $langcode) {
+  if (user_access('use vote up/down on terms')) {
+    $node_type = in_array($node->type, variable_get('vud_term_types', array()), TRUE);
+    $showmode  = variable_get('vud_term_votetable_show', 1);
+    $teaser = $a3;
+    if ($node_type) {
+      switch ($showmode) {
+        case 0:
+          if ($teaser == 1) {
+            _vud_term_generate_table($node);
+          }
+          break;
+        case 1:
+          if ($teaser == 0) {
+            _vud_term_generate_table($node);
           }
-        }
+          break;
+        case 2:
+          _vud_term_generate_table($node);
+          break;
       }
+    }
   }
 }
 
