diff --git a/src/main/java/mi/hdm/recipes/Ingredient.java b/src/main/java/mi/hdm/recipes/Ingredient.java
index 6dfeb658764b57a305ae3b7c415fe2b1ab4c6733..2b20b963156709c3cb44bbbf43dc3dae6a3a5c83 100644
--- a/src/main/java/mi/hdm/recipes/Ingredient.java
+++ b/src/main/java/mi/hdm/recipes/Ingredient.java
@@ -26,4 +26,13 @@ public class Ingredient implements RecipeComponent {
     public NutritionTable getNutritionTable() {
         return nutritionTable;
     }
+
+    @Override
+    public boolean equals(Object o){
+        if (o instanceof Ingredient) {
+            Ingredient in = (Ingredient) o;
+            return this.name.equals(in.getName());
+        }
+        return false;
+    }
 }
diff --git a/src/main/java/mi/hdm/recipes/RecipeManager.java b/src/main/java/mi/hdm/recipes/RecipeManager.java
index ed3801fafc60e3eed8245729193d4546c309b47c..19cf5e74bbfe5d31a90ffefd96bc341d757058af 100644
--- a/src/main/java/mi/hdm/recipes/RecipeManager.java
+++ b/src/main/java/mi/hdm/recipes/RecipeManager.java
@@ -1,5 +1,8 @@
 package mi.hdm.recipes;
 
+import org.apache.logging.log4j.LogManager;
+import org.apache.logging.log4j.Logger;
+
 import java.util.List;
 import java.util.Optional;
 
@@ -8,6 +11,7 @@ public class RecipeManager {
     private final Categories categories;
     private final List<Ingredient> ingredients;
     private final NutritionCalculator nutritionCalculator;
+    private static final Logger log = LogManager.getLogger(RecipeManager.class);
 
     public RecipeManager(List<Recipe> recipes, Categories categories, List<Ingredient> ingredients, NutritionCalculator nutritionCalculator) {
         this.recipes = recipes;
@@ -43,8 +47,15 @@ public class RecipeManager {
         return new RecipeEditor(recipe);
     }
 
-    public void addIngredient(Ingredient ingredient) {
-        ingredients.add(ingredient);
+    public boolean addIngredient(Ingredient in) {
+        if (ingredients.contains(in)) {
+            log.error("Ingredient: {} not added because it already exists", in.getName());
+            return false;
+        } else {
+            log.info("Ingredient {} added successfully.", in.getName());
+            ingredients.add(in);
+            return true;
+        }
     }
 
     public Ingredient deleteIngredient(int i) {
diff --git a/src/test/java/mi/hdm/recipes/IngredientTest.java b/src/test/java/mi/hdm/recipes/IngredientTest.java
new file mode 100644
index 0000000000000000000000000000000000000000..c3698e0d167e6d17ce4ff6788a693b45664cea41
--- /dev/null
+++ b/src/test/java/mi/hdm/recipes/IngredientTest.java
@@ -0,0 +1,37 @@
+package mi.hdm.recipes;
+
+import mi.hdm.exceptions.InvalidIngredientException;
+import org.junit.Test;
+import org.junit.Assert;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertNotEquals;
+
+
+public class IngredientTest {
+
+    List<Ingredient> ingredients = new ArrayList<Ingredient>();
+    NutritionTable tt = new NutritionTable(null);
+            //Nutrition.CALORIES, 300, Nutrition.CARBS, 40, Nutrition.FAT, 15, Nutrition.PROTEINS, 7, Nutrition.FIBERS, 3.2, Nutrition.SALT, 0.6
+
+    @Test public void testEquals () {
+        Ingredient i1 = new Ingredient(Measurement.GRAM, "Banana", tt);
+        Ingredient i2 = new Ingredient(Measurement.PIECE, "Banana", tt);
+        Ingredient i3 = new Ingredient(Measurement.GRAM, "Apple", tt);
+
+        assertEquals(i1, i2);
+        assertNotEquals(i1, i3);
+        assertNotEquals(i2, i3);
+    }
+
+    /*@Test public void shouldNotBeAbleToAddIdenticalName () {
+
+        ingredients.add(Measurement.GRAM, "Banana", tt);
+        ingredients.add(Measurement.PIECE, "Banana", tt);
+
+        Assert.assertEquals(1, ingredients.size());
+    }*/
+}