diff --git a/includes/reviews.admin.inc b/includes/reviews.admin.inc
index 1c32d50..bf2bfb6 100644
--- a/includes/reviews.admin.inc
+++ b/includes/reviews.admin.inc
@@ -64,6 +64,57 @@ function reviews_settings($form, &$form_state) {
     '#options' => array(0 => 'No', 1 => 'Yes'),
     '#default_value' => variable_get('reviews_notify_admin', 0),
   );
+    
+  $form['rating'] = array(
+    '#type' => 'fieldset',
+    '#title' => t('Rating Field'),
+    '#collapsible' => TRUE,
+    '#collapsed' => FALSE,
+  );
+  
+  $form['rating']['reviews_use_rating'] = array(
+    '#type' => 'checkbox',
+    '#title' => t('Use Rating field'),
+    '#description' => t('Allow users to leave Fivestar ratings with their reviews.'),
+    '#default_value' => variable_get('reviews_use_rating', 0) && module_exists('fivestar'),
+  );
+  
+  if (! module_exists('fivestar')){
+    $form['rating']['reviews_use_rating']['#disabled'] = TRUE;
+    $form['rating']['reviews_use_rating']['#description'] .= "<br>".t('Disabled because the Fivestar module is not enabled.');
+  }
+  
+  if(module_exists('fivestar')){
+  
+    $state = array(
+      'visible' => array(
+        ':input[name="reviews_use_rating"]' => array('checked' => TRUE),
+      ),
+    );
+  
+    $star_range = range(0,100);
+    unset($star_range[0]);
+    
+    $form['rating']['reviews_rating_star_count'] = array(
+      '#type' => 'select',
+      '#title' => t('Number of Stars'),
+      '#description' => t('Maximum number of stars in a rating.'),
+      '#options' => $star_range,
+      '#default_value' => variable_get('reviews_rating_star_count', 5),
+      '#states' => $state,
+    );
+    
+    $widgets = module_invoke_all('fivestar_widgets');
+    
+    $form['rating']['reviews_rating_star_widget'] = array(
+      '#type' => 'select',
+      '#title' => t('Star Widget'),
+      '#description' => t('Star widget to use for displaying a rating.'),
+      '#options' => array('default' => 'Default') + $widgets,
+      '#default_value' => variable_get('reviews_rating_star_widget', 'Default'),
+      '#states' => $state,
+    );
+  }
 
   $form['ctypes'] = array(
     '#type' => 'fieldset',
@@ -174,6 +225,9 @@ function reviews_list($form, &$form_state) {
       'status' => reviews_get_review_status($review['status']),
       'actions' => theme('item_list', $links),
     );
+    
+    if(variable_get('reviews_use_rating'))
+      $data[$review['rid']]['rating'] = $review['rating'];
   }
 
   $form['reviews'] = array(
@@ -261,8 +315,12 @@ function reviews_moderation($form, &$form_state) {
     'node_title' => array('data' => t('Reviewed Content Title')),
     'username' => array('data' => t('Reviewer')),
     'review' => array('data' => t('Review')),
+    'rating' => array('data' => t('Rating')),
     'actions' => array('data' => t('Operations')),
   );
+  
+  if (!variable_get('reviews_use_rating'))
+    unset($header['rating']);
 
   $data = array();
   while ($review = $result->fetchAssoc()) {
@@ -272,8 +330,12 @@ function reviews_moderation($form, &$form_state) {
       'node_title' => check_plain(reviews_get_node_title($review['nid'])),
       'username' => check_plain(reviews_get_username($review['uid'])),
       'review' => check_markup($review_content['value'], $review_content['format']),
+      'rating' => $review['rating'],
       'actions' => l(t('view'), 'node/' . $review['nid'] . '/reviews', array('fragment' => 'review_' . $review['rid'])) . ' / ' . l(t('approve'), 'admin/content/reviews/approve/' . $review['rid']),
     );
+    
+    if (!variable_get('reviews_use_rating'))
+      unset($header['rating']);
   }
 
   $form['reviews'] = array(
diff --git a/includes/reviews.api.inc b/includes/reviews.api.inc
index 4279206..fa53349 100644
--- a/includes/reviews.api.inc
+++ b/includes/reviews.api.inc
@@ -177,6 +177,7 @@ function reviews_load($rid) {
       'value' => $tmp['value'],
       'format' => $tmp['format'],
     );
+    $rvw->rating = $review[0]->rating;
     $rvw->created = $review[0]->created;
     return $rvw;
   }
diff --git a/includes/reviews.pages.inc b/includes/reviews.pages.inc
index 9436ac3..105d5d8 100644
--- a/includes/reviews.pages.inc
+++ b/includes/reviews.pages.inc
@@ -86,6 +86,41 @@ function reviews_add_review($form, &$form_state, $nid) {
     '#required' => TRUE,
   );
 
+  if(variable_get('reviews_use_rating') and module_exists('fivestar')) {
+    
+    $widgets = module_invoke_all('fivestar_widgets');
+    
+    $widget = array(
+      'name' => $widgets[variable_get('reviews_rating_star_widget')],
+      'css' => 'active',
+    );
+    
+    $settings = array(
+      'stars' => variable_get('reviews_rating_star_count', 5),
+      'allow_clear' => FALSE,
+      'style' => 'user',
+      'text' => 'none',
+      'widget' => $widget,
+    );
+    
+    $values = array(
+      'user' => 0,
+      'average' => 0,
+      'count' => 0,
+    );
+    
+    $form['rating'] = array(
+      '#type' => 'fivestar',
+      '#title' => t('Your rating'),
+      '#stars' => variable_get('reviews_rating_star_count', 5),
+      '#allow_clear' => FALSE,
+      '#settings' => $settings,
+      '#values' => $values,
+      '#required' => TRUE,
+    );
+  
+  }
+  
   $form['actions'] = array('#type' => 'actions');
   $form['actions']['submit'] = array('#type' => 'submit', '#value' => t('Submit Review'));
 
@@ -100,6 +135,9 @@ function reviews_add_review_submit($form, &$form_state) {
   $uid      = $form_state['values']['uid'];
   $review   = $form_state['values']['review'];
   $created  = REQUEST_TIME;
+  
+  if (variable_get('reviews_use_rating') and module_exists('fivestar'))
+    $rating = $form_state['values']['rating'];
 
   // get the node type to see if it is moderated or not
   $node = node_load($nid);
@@ -112,6 +150,9 @@ function reviews_add_review_submit($form, &$form_state) {
     'status' => $status,
     'created' => $created,
   );
+  
+  if (variable_get('reviews_use_rating') and module_exists('fivestar'))
+    $record['rating'] = $rating;
 
   $result = drupal_write_record('reviews', $record);
 
@@ -169,6 +210,40 @@ function reviews_edit_review($form, &$form_state, $nid, $rid) {
     '#format' => $review->review['format'],
   );
 
+  if(variable_get('reviews_use_rating') and module_exists('fivestar')) {
+    
+    $widget = array(
+      'name' => variable_get('reviews_rating_star_widget'),
+      'css' => 'active',
+    );
+    
+    $settings = array(
+      'stars' => variable_get('reviews_rating_star_count', 5),
+      'allow_clear' => FALSE,
+      'style' => 'user',
+      'text' => 'none',
+      'widget' => $widget,
+    );
+    
+    $values = array(
+      'user' => 0,
+      'average' => 0,
+      'count' => 0,
+    );
+    
+    $form['rating'] = array(
+      '#type' => 'fivestar',
+      '#title' => t('Your rating'),
+      '#stars' => variable_get('reviews_rating_star_count', 5),
+      '#allow_clear' => FALSE,
+      '#settings' => $settings,
+      '#values' => $values,
+      '#required' => TRUE,
+      '#default_value' => $review->rating,
+    );
+  
+  }
+  
   $form['actions'] = array('#type' => 'actions');
   $form['actions']['submit'] = array('#type' => 'submit', '#value' => t('Save Review'));
 
@@ -193,6 +268,9 @@ function reviews_edit_review_submit($form, &$form_state) {
     'review' => serialize($review),
     'status' => $status,
   );
+  
+  if (variable_get('reviews_use_rating') and module_exists('fivestar'))
+    $record['rating'] = $form_state['values']['rating'];
 
   $result = drupal_write_record('reviews', $record, 'rid');
 
diff --git a/reviews.info b/reviews.info
index d712cc0..7bd3e2d 100644
--- a/reviews.info
+++ b/reviews.info
@@ -13,4 +13,3 @@ version = "7.x-1.15"
 core = "7.x"
 project = "reviews"
 datestamp = "1370887255"
-
diff --git a/reviews.install b/reviews.install
index 0d0d4b0..d2deb35 100644
--- a/reviews.install
+++ b/reviews.install
@@ -55,6 +55,10 @@ function reviews_schema() {
         'size' => 'big',
         'not null' => TRUE,
       ),
+      'rating' => array(
+        'description' => 'The review rating.',
+        'type' => 'int',
+      ),
       'status' => array(
         'description' => 'The current status of the review 0=New, 1=Approved, 2=Rejected.',
         'type' => 'int',
@@ -90,6 +94,7 @@ function reviews_schema() {
  */
 function reviews_install() {
   reviews_update_7001();
+  reviews_update_7002();
 }
 
 /**
@@ -108,3 +113,11 @@ function reviews_update_7001() {
     return 'Added the \'reviews_count\' table for the Reviews module.';
   }
 }
+
+function reviews_update_7002() {
+  if (!db_field_exists('reviews', 'rating')){
+    $schema = drupal_get_schema('reviews');
+    db_add_field('reviews', 'rating', $schema['fields']['rating']);
+  }
+  return "Added the 'rating' field to the 'reviews' table for the Reviews module.";
+}
\ No newline at end of file
diff --git a/theme/review.tpl.php b/theme/review.tpl.php
index ab13181..d0111e7 100644
--- a/theme/review.tpl.php
+++ b/theme/review.tpl.php
@@ -10,16 +10,23 @@
  *    $rid: review ID.
  *    $uid: user ID of reviewer.
  *    $review: review text.
+ *    $rating: rating value from 0 to 100
  *    $created: timestamp of when the review was created.
  */
   global $user;
 
+  $use_rating = variable_get('reviews_use_rating') and module_exists('firestar');
+  
   $review = $variables['review'];
   $review_content = unserialize($review->review);
+  if ($use_rating)
+    $rating = $review->rating;
   $review_nid = $review->nid;
   $reviewer_uid = $review->uid;
   $classes = '';
-
+  $rating_widget = variable_get('reviews_rating_star_widget','default');
+  $default_widget = $rating_widget == 'default';
+  
   if ($variables['index'] == 0):
     $classes .= ' first';
   endif;
@@ -38,6 +45,27 @@
     $classes .= ' unpublished';
   endif;
 
+  if ($use_rating and $rating){
+    //create Fivestar rating
+    $path = drupal_get_path('module', 'fivestar');
+    drupal_add_js($path . '/js/fivestar.js');
+    drupal_add_css($path . '/css/fivestar.css');
+    if (!$default_widget)
+      drupal_add_css($rating_widget);
+    $widgets = module_invoke_all('fivestar_widgets');
+    
+    $variables = array(
+      'rating' => $rating,
+      'stars' => variable_get('reviews_rating_star_count', 5),
+      'widget' => array(
+        'name' => $default_widget ? 'default' : strtolower($widgets[$rating_widget]),
+        'css' => 'active',
+      ),
+    );
+    $star_display = theme('fivestar_static', $variables);
+    $fivestar = theme('fivestar_static_element', array('description' => '', 'star_display' => $star_display));
+  }
+  
 ?>
 <div class="reviews-review <?php print $classes; ?>">
   <a name="review_<?php print $review->rid; ?>"></a>
@@ -47,6 +75,7 @@
   <div class="reviews-content">
     <?php print check_markup($review_content['value'], $review_content['format']); ?>
   </div>
+  <?php if ($use_rating and $rating) print $fivestar; ?>
   <?php if ($user->uid == $reviewer_uid && user_is_logged_in()) { ?>
     <div class="reviews-action-links">
       <?php print l(t('edit'), 'node/' . $review_nid . '/edit-review/' . $review->rid); ?>
