diff -urp vud_comment/vud_comment.module vud_comment/vud_comment.module
--- vud_comment/vud_comment.module	2010-11-13 23:11:24.000000000 -0800
+++ vud_comment/vud_comment.module	2010-11-18 19:06:54.000000000 -0800
@@ -10,7 +10,7 @@
  * Implementation of hook_perm().
  */
 function vud_comment_perm() {
-  return array('administer vote up/down on comments', 'use vote up/down on comments');
+  return array('administer vote up/down on comments', 'use vote up/down on comments', 'view votes on comments');
 }
 
 /**
@@ -48,12 +48,19 @@ function vud_comment_admin_settings() {
     '#default_value' => variable_get('vud_comment_widget', 'plain'),
     '#options'       => vud_widget_get_names(),
   );
+  $form['vud_comment_widget_placement'] = array(
+    '#type'          => 'radios',
+    '#title'       => t('Widget display'),
+    '#description' => t('Choose where to display the voting widget.'),
+    '#default_value' => variable_get('vud_comment_widget_placement', 0),
+    '#options'       => array(0 => 'Content', 1 => 'Links', 2 => 'None'),
+  );
   $form['vud_comment_votes'] = array(
     '#type'          => 'radios',
     '#title'       => t('Votes display'),
-    '#description' => t('Choose if the total number of votes will be displayed in the links part.'),
+    '#description' => t('Choose where to display the total number of votes.'),
     '#default_value' => variable_get('vud_comment_votes', 1),
-    '#options'       => array(0 => 'No', 1 => 'Yes'),
+    '#options'       => array(0 => 'Content', 1 => 'Links', 2 => 'None'),
   );
   $form['vud_comment_reset'] = array(
     '#type'          => 'radios',
@@ -96,10 +103,15 @@ function vud_comment_comment(&$comment, 
     case 'view':
       $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')) {
+      if ($comment_allow) {
         $tag = variable_get('vud_tag', 'vote');
         $widget = variable_get('vud_comment_widget', 'plain');
-        $comment->comment = theme('vud_widget', $comment->cid, 'comment', $tag, $widget) . $comment->comment;
+        if (user_access('use vote up/down on comments') && variable_get('vud_comment_widget_placement', 0) == 0) {
+          $comment->comment = theme('vud_widget', $comment->cid, 'comment', $tag, $widget) . $comment->comment;
+        }
+        if (user_access('view votes on comments') && variable_get('vud_comment_votes', 1) == 0) {
+          $comment->comment = theme('vud_votes', $comment->cid, 'comment', $tag, $widget) . $comment->comment;
+        }
       }
       break;
   }
@@ -147,16 +159,26 @@ function vud_comment_link($type, $object
   switch ($type) {
     case 'comment':
       $comment = &$object;
-      $votes_display_mode = variable_get('vud_comment_votes', 1);
-      $widget_theme = variable_get('vud_comment_widget', 'plain');
+      $type = _vud_comment_get_node_type($comment->nid);
+      $comment_allow = in_array($type, variable_get('vud_comment_node_types', array()), TRUE);
       $tag = variable_get('vud_tag', 'vote');
-      if ($votes_display_mode) {
+      $widget_theme = variable_get('vud_comment_widget', 'plain');
+
+      $votes_display_mode = variable_get('vud_comment_votes', 1);
+      if ($comment_allow && $votes_display_mode == 1 && user_access('view votes on comments')) {
         $links['vud_comment_votes_count'] = array(
           'title' => theme('vud_votes', $comment->cid, $type, $tag, $widget_theme),
           'html' => TRUE,
         );
       }
+      if ($comment_allow && user_access('use vote up/down on comments') && variable_get('vud_comment_widget_placement', 0) == 1) {
+        $links['vud_comment_widget'] = array(
+          'title' => theme('vud_widget', $comment->cid, 'comment', $tag, $widget_theme),
+          'html' => TRUE,
+        );
+      }
       if (variable_get('vud_comment_reset', 0) && user_access('reset vote up/down votes')) {
+        $tag = variable_get('vote_up_down_tag', 'vote');
         $criteria = array(
           'content_type' => $type,
           'content_id' => $comment->cid,
diff -urp vud_node/vud_node.module vud_node/vud_node.module
--- vud_node/vud_node.module	2010-08-18 07:25:17.000000000 -0700
+++ vud_node/vud_node.module	2010-11-18 18:55:18.000000000 -0800
@@ -89,6 +89,13 @@ function vud_node_admin_settings() {
     '#default_value' => variable_get('vud_node_widget', 'updown'),
     '#options'       => vud_widget_get_names(),
   );
+  $form['vud_node_widget_placement'] = array(
+    '#title'         => t('Widget placement'),
+    '#description'   => t('Choose where to display the voting widget.'),
+    '#type'          => 'radios',
+    '#default_value' => variable_get('vud_node_widget_placement', 0),
+    '#options'       => array(0 => 'Content', 1 => 'Links', 2 => 'None'),
+  );
   $form['vud_node_widget_show'] = array(
     '#type'          => 'select',
     '#title'         => t('Widget and votes display'),
@@ -158,39 +165,41 @@ function vud_node_nodeapi(&$node, $op, $
           $widget_message_code = VUD_NODE_WIDGET_MESSAGE_TEASER_DENIED;
         }
 
-        if ($node_type) {
+        if (variable_get('vud_node_widget_placement', 0) == 0) {
+          if ($node_type) {
 
-          switch ($widget_showmode) {
-            case VUD_NODE_DISPLAY_TEASER_ONLY:
-              if ($teaser == 1) {
+            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, !$vote_on_teaser || !$can_edit, $widget_message_code),
+                  '#value' => theme('vud_widget', $node->nid, 'node', $tag, $widget, $readonly, $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;
+            }
 
+          }
         }
       }
       break;
@@ -256,31 +265,70 @@ function vud_node_link($type, $object, $
       $widget_theme = variable_get('vud_node_widget', 'plain');
       $tag = variable_get('vud_tag', 'vote');
       $view_vud_node_votes_count = user_access('view vote up/down count on nodes') || user_access('use vote up/down on nodes');
+      $vote_on_teaser = (bool)variable_get('vud_node_widget_vote_on_teaser', TRUE);
+      $can_edit = user_access('use vote up/down on nodes');
+      $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;
+      }
       switch ($votes_display_mode) {
         case VUD_NODE_DISPLAY_NO:
           break;
         case VUD_NODE_DISPLAY_TEASER_ONLY:
           if (($teaser == 1) && $node_type && $view_vud_node_votes_count) {
-            $links['vud_node_votes_count'] = array(
-              'title' => theme('vud_votes', $node->nid, $type, $tag, $widget_theme),
-              'html'  => TRUE,
-            );
+            if ($can_edit && variable_get('vud_node_widget_placement', 0) == 1) {
+              $links['vud_node_widget'] = array(
+                'title' => theme('vud_widget', $node->nid, 'node', $tag, $widget_theme, !$vote_on_teaser || !$can_edit, $widget_message_code).theme('vud_votes', $node->nid, $type, $tag, $widget_theme),
+                'html'  => TRUE,
+              );
+            }
+            else {
+              $links['vud_node_votes_count'] = array(
+                'title' => theme('vud_votes', $node->nid, $type, $tag, $widget_theme),
+                'html'  => TRUE,
+              );
+            }
           }
           break;
         case VUD_NODE_DISPLAY_FULL_ONLY:
           if (($teaser == 0) && $node_type && $view_vud_node_votes_count) {
-            $links['vud_node_votes_count'] = array(
-              'title' => theme('vud_votes', $node->nid, $type, $tag, $widget_theme),
-              'html'  => TRUE,
-            );
+            if ($can_edit && variable_get('vud_node_widget_placement', 0) == 1) {
+              $links['vud_node_widget'] = array(
+                'title' => theme('vud_widget', $node->nid, 'node', $tag, $widget_theme, !$can_edit, $widget_message_code).theme('vud_votes', $node->nid, $type, $tag, $widget_theme),
+                'html'  => TRUE,
+              );
+            }
+            else {
+              $links['vud_node_votes_count'] = array(
+                'title' => theme('vud_votes', $node->nid, $type, $tag, $widget_theme),
+                'html'  => TRUE,
+              );
+            }
           }
           break;
         case VUD_NODE_DISPLAY_BOTH:
           if ($node_type && $view_vud_node_votes_count) {
-            $links['vud_node_votes_count'] = array(
-              'title' => theme('vud_votes', $node->nid, $type, $tag, $widget_theme),
-              'html'  => TRUE,
-            );
+            if ($can_edit && variable_get('vud_node_widget_placement', 0) == 1) {
+              if ($teaser == TRUE) {
+                $readonly = !$vote_on_teaser || !$can_edit;
+              }
+              else {
+                $readonly = !$can_edit;
+              }
+              $links['vud_node_widget'] = array(
+                'title' => theme('vud_widget', $node->nid, 'node', $tag, $widget_theme, $read_only, $widget_message_code).theme('vud_votes', $node->nid, $type, $tag, $widget_theme),
+                'html'  => TRUE,
+              );
+            }
+            else {
+              $links['vud_node_votes_count'] = array(
+                'title' => theme('vud_votes', $node->nid, $type, $tag, $widget_theme),
+                'html'  => TRUE,
+              );
+            }
           }
           break;
       }
