diff --git a/recipe.module b/recipe.module
index dc514a9..4ac025a 100644
--- a/recipe.module
+++ b/recipe.module
@@ -861,65 +861,55 @@ function theme_recipe_ingredients($variables) {
   $node = $variables['node'];
   $output = "\n" . '<div class="recipe-ingredients recipe-section">';
   $output .= '<h2 class="title">' . t('Ingredients') . '</h2>';
+  $output .= '<div class="section">';
 
   $unit_list = recipe_get_units();
 
-  // Construct the $ingredients[] array.
-  if ($node->recipe_ingredients['ing'] != NULL) {
-    $output .= '<div class="section">';
-    foreach ($node->recipe_ingredients['ing'] as $ingredient) {
-      if (isset($ingredient['quantity']) && $ingredient['name']) {
-
-        // In preview mode the quantity are plain text fractions and should not be multiplied.
+  // Print the ingredients.
+  foreach ($node->recipe_ingredients['ing'] as $ingredient) {
+    // Don't print ingredients with a blank quantity or name.
+    if (empty($ingredient['quantity']) || empty($ingredient['name'])) {
+      continue;
+    }
 
-        //if ( !$node->in_preview ) {
-          if ($ingredient['quantity'] > 0) {
-            $ingredient['quantity'] *= $node->recipe_factor;
-          }
-          else {
-            $ingredient['quantity'] = '&nbsp;';
-          }
-          if (variable_get('recipe_fraction_display', t('{%d} %d&frasl;%d'))) {
-            $ingredient['quantity'] = recipe_ingredient_quantity_from_decimal($ingredient['quantity']);
-          }
-        //}
+    // Multiply the quantity by the factor from the yield form.
+    if ($ingredient['quantity'] > 0) {
+      $ingredient['quantity'] *= $node->recipe_factor;
+    }
+    else {
+      $ingredient['quantity'] = '&nbsp;';
+    }
+    if (variable_get('recipe_fraction_display', t('{%d} %d&frasl;%d'))) {
+      $ingredient['quantity'] = recipe_ingredient_quantity_from_decimal($ingredient['quantity']);
+    }
 
-        if (!empty($ingredient['link'])) {
-          $ingredient['name'] = l($ingredient['name'], 'node/' . $ingredient['link']);
-        }
+    if (isset($unit_list[$ingredient['unit_key']])) {
+      // Print the singular or plural term depending on the quantity.
+      $title = $ingredient['quantity'] > 1 ? $unit_list[$ingredient['unit_key']]['plural'] : $unit_list[$ingredient['unit_key']]['name'];
+      $abbreviation = $unit_list[$ingredient['unit_key']]['abbreviation'];
+    }
+    else {
+      $title = $ingredient['unit_key'];
+    }
+
+    // These are units for which nothing is printed.
+    $recipe_hidden_units = array('unit', 'unknown');
+    $units = '';
+    // Print the abbreviation if recipe_unit_display == 0.
+    if (variable_get('recipe_unit_display', 0) == 0 && !empty($abbreviation)) {
+      $units = '<abbr ' . drupal_attributes(array('title' => $title)) . '>' . $abbreviation . '</abbr>';
+    }
+    elseif (!in_array($ingredient['unit_key'], $recipe_hidden_units)) {
+      $units = $title;
+    }
 
-        if (isset($unit_list[$ingredient['unit_key']])) {
-          // Print the singular or plural term depending on the quantity.
-          $title = $ingredient['quantity'] > 1 ? $unit_list[$ingredient['unit_key']]['plural'] : $unit_list[$ingredient['unit_key']]['name'];
-        }
-        else {
-          $title = $ingredient['unit_key'];
-        }
-        
-        // Print the abbreviation if recipe_unit_display says to or the abbreviation is blank (ie = Unit, which we don't print).
-        if (!isset($ingredient['abbreviation']) && isset($unit_list[$ingredient['unit_key']])) {
-          $ingredient['abbreviation'] = $unit_list[$ingredient['unit_key']]['abbreviation'];
-        }
-        if (empty($ingredient['abbreviation'])) {
-          $ingredient['abbreviation'] = '&nbsp;';
-        }
-        
-        $units = '';
-        if ( variable_get('recipe_unit_display', 0) == 0 || $ingredient['abbreviation'] == '&nbsp;') {
-          $units = '<abbr ' . drupal_attributes(array('title' => $title)) . '>' . $ingredient['abbreviation'] . '</abbr>';
-        }
-        else {
-          $units = $title;
-        }
-        $fullingredient = strlen($ingredient['note']) > 0 ? $ingredient['name'] . ' (' . $ingredient['note'] . ')' : $ingredient['name'];
+    $fullingredient = empty($ingredient['link']) ? $ingredient['name'] : l($ingredient['name'], 'node/' . $ingredient['link']);
+    $fullingredient .= empty($ingredient['note']) ? '' : ' (' . $ingredient['note'] . ')';
 
 
-        $output .= "\n" . '<div rel="schema:ingredient"><div typeof="schema:Ingredient"><div class="quantity-unit" property="schema:amount"> ' . $ingredient['quantity'] . ' ' . $units . '</div> <span class="ingredient-name" property="schema:name">' . $fullingredient . '</span></div></div>';
-      }
-    }
-    $output .= '</div>';
+    $output .= "\n" . '<div rel="schema:ingredient"><div typeof="schema:Ingredient"><div class="quantity-unit" property="schema:amount"> ' . $ingredient['quantity'] . ' ' . $units . '</div> <span class="ingredient-name" property="schema:name">' . $fullingredient . '</span></div></div>';
   }
-  $output .= '</div>';
+  $output .= '</div></div>';
   return $output;
 }
 
