diff --git a/core/modules/poll/poll-results.tpl.php b/core/modules/poll/poll-results.tpl.php
index 4eb0fe2..bd53b38 100644
--- a/core/modules/poll/poll-results.tpl.php
+++ b/core/modules/poll/poll-results.tpl.php
@@ -15,6 +15,8 @@
  * - $vote: The choice number of the current user's vote.
  *
  * @see template_preprocess_poll_results()
+ *
+ * @ingroup themeable
  */
 ?>
 <article class="poll">
diff --git a/core/modules/poll/poll-vote.tpl.php b/core/modules/poll/poll-vote.tpl.php
index a749f91..1764675 100644
--- a/core/modules/poll/poll-vote.tpl.php
+++ b/core/modules/poll/poll-vote.tpl.php
@@ -12,6 +12,8 @@
  *   form_alter hooks.
  *
  * @see template_preprocess_poll_vote()
+ *
+ * @ingroup themeable
  */
 ?>
 <article class="poll">
diff --git a/core/modules/poll/poll.module b/core/modules/poll/poll.module
index 328f5eb..8cfec13 100644
--- a/core/modules/poll/poll.module
+++ b/core/modules/poll/poll.module
@@ -105,6 +105,18 @@ function poll_menu() {
 
 /**
  * Callback function to see if a node is acceptable for poll menu items.
+ *
+ * @param $node
+ *   The poll node object.
+ * @param $perm
+ *   A permission the user must have to view the page.
+ * @param $inspect_allowvotes
+ *   Boolean indicated whether the user can view the individual votes.
+ *
+ * @return
+ *   A render array for a page containing a list of content.
+ *
+ * @see poll_menu()
  */
 function _poll_menu_access($node, $perm, $inspect_allowvotes) {
   return user_access($perm) && ($node->type == 'poll') && ($node->allowvotes || !$inspect_allowvotes);
@@ -123,6 +135,7 @@ function poll_block_info() {
  * Implements hook_block_view().
  *
  * Generates a block containing the latest poll.
+ * @see poll_block_latest_poll_view()
  */
 function poll_block_view($delta = '') {
   if (user_access('access content')) {
@@ -215,6 +228,12 @@ function poll_field_extra_fields() {
 
 /**
  * Implements hook_form().
+ *
+ * @see poll_more_choices_submit()
+ * @see poll_node_form_submit()
+ * @see poll_choice_js()
+ * @see _poll_choice_form()
+ * @see poll_teaser()
  */
 function poll_form($node, &$form_state) {
   global $user;
@@ -338,13 +357,19 @@ function poll_form($node, &$form_state) {
 }
 
 /**
- * Submit handler to add more choices to a poll form.
+ * Form submission handler for the add more choices button on a poll node form.
  *
  * This handler is run regardless of whether JS is enabled or not. It makes
  * changes to the form state. If the button was clicked with JS disabled, then
  * the page is reloaded with the complete rebuilt form. If the button was
  * clicked with JS enabled, then ajax_form_callback() calls poll_choice_js() to
  * return just the changed part of the form.
+ *
+ * @see poll_form()
+ * @see poll_choice_js()
+ * @see poll_node_form_submit()
+ * @see _poll_choice_form()
+ * @see poll_teaser()
  */
 function poll_more_choices_submit($form, &$form_state) {
   // Add one more choice to the form.
@@ -360,6 +385,18 @@ function poll_more_choices_submit($form, &$form_state) {
   $form_state['rebuild'] = TRUE;
 }
 
+/**
+ * Form submit handler for node_form().
+ *
+ * Upon preview and final submission, we need to renumber poll choices and
+ * create a teaser output.
+ *
+ * @see poll_form()
+ * @see poll_choice_js()
+ * @see poll_node_form_submit()
+ * @see poll_more_choices_submit()
+ * @see poll_teaser()
+ */
 function _poll_choice_form($key, $chid = NULL, $value = '', $votes = 0, $weight = 0, $size = 10) {
   $form = array(
     '#tree' => TRUE,
@@ -407,12 +444,17 @@ function _poll_choice_form($key, $chid = NULL, $value = '', $votes = 0, $weight
 }
 
 /**
- * Ajax callback in response to new choices being added to the form.
+ * Ajax callback for adding new choices to the poll node form.
  *
  * This returns the new page content to replace the page content made obsolete
  * by the form submission.
  *
+ *
  * @see poll_more_choices_submit()
+ * @see poll_form()
+ * @see poll_node_form_submit()
+ * @see _poll_choice_form()
+ * @see poll_teaser()
  */
 function poll_choice_js($form, $form_state) {
   return $form['choice_wrapper']['choice'];
@@ -423,6 +465,12 @@ function poll_choice_js($form, $form_state) {
  *
  * Upon preview and final submission, we need to renumber poll choices and
  * create a teaser output.
+ *
+ * @see poll_more_choices_submit()
+ * @see poll_form()
+ * @see _poll_choice_form()
+ * @see poll_choice_js()
+ * @see poll_teaser()
  */
 function poll_node_form_submit(&$form, &$form_state) {
   // Renumber choices.
@@ -611,6 +659,9 @@ function poll_delete($node) {
  *
  * @param $node
  *   The node object to load.
+ *
+ * @see poll_view_results()
+ * @see poll_view()
  */
 function poll_block_latest_poll_view($node) {
   global $user;
@@ -654,6 +705,9 @@ function poll_block_latest_poll_view($node) {
 
 /**
  * Implements hook_view().
+ *
+ * @see poll_view_results()
+ * @see poll_block_latest_poll_view()
  */
 function poll_view($node, $view_mode) {
   global $user;
@@ -672,6 +726,12 @@ function poll_view($node, $view_mode) {
  * Creates a simple teaser that lists all the choices.
  *
  * This is primarily used for RSS.
+ *
+ * @see poll_more_choices_submit()
+ * @see poll_node_form_submit()
+ * @see poll_choice_js()
+ * @see _poll_choice_form()
+ * @see poll_form()
  */
 function poll_teaser($node) {
   $teaser = NULL;
@@ -686,10 +746,11 @@ function poll_teaser($node) {
 }
 
 /**
- * Generates the voting form for a poll.
+ * Form constructor for the poll voting form.
  *
  * @ingroup forms
  * @see poll_vote()
+ * @see poll_view_voting_validate()
  * @see phptemplate_preprocess_poll_vote()
  */
 function poll_view_voting($form, &$form_state, $node, $block = FALSE) {
@@ -727,7 +788,11 @@ function poll_view_voting($form, &$form_state, $node, $block = FALSE) {
 }
 
 /**
- * Validation function for processing votes
+ * Form validation handler for poll_view_voting().
+ *
+ * @see poll_view_voting()
+ * @see phptemplate_preprocess_poll_vote()
+ * @see poll_vote()
  */
 function poll_view_voting_validate($form, &$form_state) {
   if ($form_state['values']['choice'] == -1) {
@@ -736,7 +801,10 @@ function poll_view_voting_validate($form, &$form_state) {
 }
 
 /**
- * Submit handler for processing a vote.
+ * Form submission handler for poll_view_voting().
+ *
+ * @see poll_view_voting()
+ * @see phptemplate_preprocess_poll_vote()
  */
 function poll_vote($form, &$form_state) {
   $node = $form['#node'];
@@ -787,7 +855,7 @@ function poll_preprocess_block(&$variables) {
 /**
  * Themes the voting form for a poll.
  *
- * Inputs: $form
+ * @see poll-vote.tpl.php
  */
 function template_preprocess_poll_vote(&$variables) {
   $form = $variables['form'];
@@ -803,6 +871,9 @@ function template_preprocess_poll_vote(&$variables) {
 
 /**
  * Generates a graphical representation of the results of a poll.
+ *
+ * @see poll_block_latest_poll_view()
+ * @see poll_view()
  */
 function poll_view_results($node, $view_mode, $block = FALSE) {
   // Make sure that choices are ordered by their weight.
@@ -898,12 +969,6 @@ function theme_poll_choices($variables) {
 /**
  * Preprocess the poll_results theme hook.
  *
- * Inputs: $raw_title, $results, $votes, $raw_links, $block, $nid, $vote. The
- * $raw_* inputs to this are naturally unsafe; often safe versions are
- * made to simply overwrite the raw version, but in this case it seems likely
- * that the title and the links may be overridden by the theme layer, so they
- * are left in with a different name for that purpose.
- *
  * @see poll-results.tpl.php
  * @see poll-results--block.tpl.php
  */
@@ -917,7 +982,10 @@ function template_preprocess_poll_results(&$variables) {
 }
 
 /**
- * Builds the cancel form for a poll.
+ * Form constructor for the poll cancel form.
+ *
+ * @param $nid
+ *   The poll node ID.
  *
  * @ingroup forms
  * @see poll_cancel()
@@ -939,7 +1007,10 @@ function poll_cancel_form($form, &$form_state, $nid) {
 }
 
 /**
- * Submit callback for poll_cancel_form().
+ * Form submission handler for poll_cancel_form().
+ *
+ * @ingroup forms
+ * @see poll_cancel_form()
  */
 function poll_cancel($form, &$form_state) {
   global $user;
diff --git a/core/modules/poll/poll.pages.inc b/core/modules/poll/poll.pages.inc
index 15f3ba7..9d19082 100644
--- a/core/modules/poll/poll.pages.inc
+++ b/core/modules/poll/poll.pages.inc
@@ -2,11 +2,16 @@
 
 /**
  * @file
- * User page callbacks for the poll module.
+ * Page callbacks for the poll module.
  */
 
 /**
- * Menu callback to provide a simple list of all polls available.
+ * Page callback: Displays a simple list of all available polls.
+ *
+ * @return
+ *   A page displaying the poll results.
+ *
+ * @see poll_menu()
  */
 function poll_page() {
   $polls_per_page = 15;
@@ -46,7 +51,17 @@ function poll_page() {
 }
 
 /**
- * Callback for the 'votes' tab for polls you can see other votes on
+ * Page callback: Displays the 'votes' tab for polls.
+ *
+ * This page displays a table containing each vote that has been cast.
+ *
+ * @param $node
+ *   The poll node object.
+ *
+ * @return
+ *   A page displaying the poll results.
+ *
+ * @see poll_menu()
  */
 function poll_votes($node) {
   $votes_per_page = 20;
@@ -88,7 +103,17 @@ function poll_votes($node) {
 }
 
 /**
- * Callback for the 'results' tab for polls you can vote on
+ * Page callback: Displays the 'results' tab for polls you can vote on.
+ *
+ * This page displays a summary of the votes that have been cast.
+ *
+ * @param $node
+ *   The poll node object.
+ *
+ * @return
+ *   A page displaying the poll results.
+ *
+ * @see poll_menu()
  */
 function poll_results($node) {
   drupal_set_title($node->title);
