diff --git a/src/main/java/mi/hdm/recipes/NutritionCalculator.java b/src/main/java/mi/hdm/recipes/NutritionCalculator.java
index 25e85564b16b13bf5b97df5d07f6949ecb163717..7e7a396dbb1ff319d36b00d7b90aba8ff306bb6f 100644
--- a/src/main/java/mi/hdm/recipes/NutritionCalculator.java
+++ b/src/main/java/mi/hdm/recipes/NutritionCalculator.java
@@ -23,15 +23,15 @@ public class NutritionCalculator {
             return NutritionTable.empty();
         }
 
-        double totalCals = 0,
-                totalCarbs = 0,
-                totalFats = 0,
-                totalProteins = 0,
-                totalFibers = 0,
-                totalSalt = 0;
+        BigDecimal totalCals = BigDecimal.ZERO,
+                totalCarbs = BigDecimal.ZERO,
+                totalFats = BigDecimal.ZERO,
+                totalProteins = BigDecimal.ZERO,
+                totalFibers = BigDecimal.ZERO,
+                totalSalt = BigDecimal.ZERO;
 
         for (RecipeComponent entry : ingredients.keySet()) {
-            //TODO: adjust to change in NutritionTable: double -> BigDecimal
+
             final Map<Nutrition, BigDecimal> nutritionTable = entry.getNutritionTable().getTable();
 
             int divisor;
@@ -40,15 +40,15 @@ public class NutritionCalculator {
             } else {
                 divisor = 100;
             }
-            totalCals += nutritionTable.get(Nutrition.CALORIES).doubleValue() * ingredients.get(entry) / divisor;
-            totalCarbs += nutritionTable.get(Nutrition.CARBS).doubleValue() * ingredients.get(entry) / divisor;
-            totalFats += nutritionTable.get(Nutrition.FAT).doubleValue() * ingredients.get(entry) / divisor;
-            totalProteins += nutritionTable.get(Nutrition.PROTEINS).doubleValue() * ingredients.get(entry) / divisor;
-            totalFibers += nutritionTable.get(Nutrition.FIBERS).doubleValue() * ingredients.get(entry) / divisor;
-            totalSalt += nutritionTable.get(Nutrition.SALT).doubleValue() * ingredients.get(entry) / divisor;
+            totalCals = totalCals.add(nutritionTable.get(Nutrition.CALORIES).multiply(BigDecimal.valueOf(ingredients.get(entry))).divide(BigDecimal.valueOf(divisor)));
+            totalCarbs = totalCarbs.add(nutritionTable.get(Nutrition.CARBS).multiply(BigDecimal.valueOf(ingredients.get(entry))).divide(BigDecimal.valueOf(divisor)));
+            totalFats = totalFats.add(nutritionTable.get(Nutrition.FAT).multiply(BigDecimal.valueOf(ingredients.get(entry))).divide(BigDecimal.valueOf(divisor)));
+            totalProteins = totalProteins.add(nutritionTable.get(Nutrition.PROTEINS).multiply(BigDecimal.valueOf(ingredients.get(entry))).divide(BigDecimal.valueOf(divisor)));
+            totalFibers = totalFibers.add(nutritionTable.get(Nutrition.FIBERS).multiply(BigDecimal.valueOf(ingredients.get(entry))).divide(BigDecimal.valueOf(divisor)));
+            totalSalt = totalSalt.add(nutritionTable.get(Nutrition.SALT).multiply(BigDecimal.valueOf(ingredients.get(entry))).divide(BigDecimal.valueOf(divisor)));
         }
         log.info("NutritionTable calculated successfully.");
-        return new NutritionTable(totalCals, totalCarbs, totalFats, totalProteins, totalFibers, totalSalt);
+        return new NutritionTable(totalCals.doubleValue(), totalCarbs.doubleValue(), totalFats.doubleValue(), totalProteins.doubleValue(), totalFibers.doubleValue(), totalSalt.doubleValue());
     }
 
 
@@ -63,6 +63,7 @@ public class NutritionCalculator {
                 totalFibers = 0,
                 totalSalt = 0;
 
+        //we calculate with double -> still rounding errors! that's why testCalculateNutritionTableFromIngredients failes
         for (Recipe r : plan.values()) {
             final Map<Nutrition, BigDecimal> nutritionTable = r.getNutritionTable().getTable();
             totalCals += nutritionTable.get(Nutrition.CALORIES).doubleValue();