diff --git a/src/main/java/mi/hdm/controllers/RecipeCreatorController.java b/src/main/java/mi/hdm/controllers/RecipeCreatorController.java
index d8eb4df63858c4e38c699807f34a2834477be14a..2b5a72a772f8acf49441be334e3beb5438ba14a3 100644
--- a/src/main/java/mi/hdm/controllers/RecipeCreatorController.java
+++ b/src/main/java/mi/hdm/controllers/RecipeCreatorController.java
@@ -2,7 +2,6 @@ package mi.hdm.controllers;
 
 import javafx.fxml.FXML;
 import javafx.scene.control.*;
-import javafx.scene.layout.BorderPane;
 import javafx.scene.layout.FlowPane;
 import javafx.scene.layout.HBox;
 import javafx.scene.layout.VBox;
@@ -15,6 +14,12 @@ import mi.hdm.recipes.*;
 import org.apache.logging.log4j.LogManager;
 import org.apache.logging.log4j.Logger;
 
+import java.net.MalformedURLException;
+import java.net.URI;
+import java.net.URISyntaxException;
+import java.net.URL;
+import java.nio.file.Files;
+import java.nio.file.Paths;
 import java.util.ArrayList;
 import java.util.HashMap;
 import java.util.List;
@@ -38,10 +43,6 @@ public class RecipeCreatorController extends BaseController {
 
     private static final Logger log = LogManager.getLogger(RecipeCreatorController.class);
 
-    @FXML
-    private BorderPane borderPane;
-    @FXML
-    private SplitPane topSplitPane;
     @FXML
     private TextField nameTextField;
     @FXML
@@ -166,8 +167,9 @@ public class RecipeCreatorController extends BaseController {
         try {
             recipe = new Recipe(name, ingredients, description, preparation, categories, preparationTimeMins);
             recipeManager.addRecipe(recipe);
-            //recipe.setImage(imagePathTextField.getText());
-            //TODO: set Image properly
+            if (Files.exists(Paths.get(new URI(imagePathTextField.getText())))) {
+                recipe.setImage(new URL(imagePathTextField.getText()));
+            }
             log.info("Recipe '{}' was created.", name);
             changeScene(View.RECIPE_VIEW, recipe);
         } catch (InvalidRecipeException e) {
@@ -184,6 +186,12 @@ public class RecipeCreatorController extends BaseController {
             a.show();
             log.error(e.getMessage());
             log.error("Recipe not created.");
+        } catch (MalformedURLException | URISyntaxException e) {
+            Recipe r = recipeManager.getRecipeByName(name).get();
+            r.setImage(Recipe.class.getResource("/images/dish-fork-and-knife.png"));
+            log.error("Invalid image path, loaded default image.");
+            log.info("Recipe '{}' was created.", name);
+            changeScene(View.RECIPE_VIEW, r);
         }
     }
 
diff --git a/src/main/java/mi/hdm/controllers/RecipeEditorController.java b/src/main/java/mi/hdm/controllers/RecipeEditorController.java
index 8a73464a14b1062d89eb626426d91227c2ed9840..6a5e90e4bbf04946107c3f5773930179a3f393dc 100644
--- a/src/main/java/mi/hdm/controllers/RecipeEditorController.java
+++ b/src/main/java/mi/hdm/controllers/RecipeEditorController.java
@@ -2,6 +2,7 @@ package mi.hdm.controllers;
 
 import javafx.fxml.FXML;
 import javafx.scene.control.*;
+import javafx.scene.image.ImageView;
 import javafx.scene.layout.FlowPane;
 import javafx.scene.layout.HBox;
 import javafx.scene.layout.VBox;
@@ -9,11 +10,16 @@ import mi.hdm.components.CategoryCheckBox;
 import mi.hdm.components.CategoryPreviewLabel;
 import mi.hdm.components.IngredientSearchResultLabel;
 import mi.hdm.components.SelectedIngredientLabel;
-import mi.hdm.exceptions.InvalidRecipeException;
 import mi.hdm.recipes.*;
 import org.apache.logging.log4j.LogManager;
 import org.apache.logging.log4j.Logger;
 
+import java.net.MalformedURLException;
+import java.net.URI;
+import java.net.URISyntaxException;
+import java.net.URL;
+import java.nio.file.Files;
+import java.nio.file.Paths;
 import java.util.ArrayList;
 import java.util.HashMap;
 import java.util.List;
@@ -25,8 +31,7 @@ import static mi.hdm.helpers.Validation.isInteger;
 public class RecipeEditorController extends BaseController {
     private static final int ELEMENTS_PER_SEARCH_PAGE = 100;
 
-    private Recipe recipe;
-    private final RecipeManager recipeManager;
+    private final Recipe recipe;
     private final CategoryManager categoryManager;
     private final IngredientManager ingredientManager;
     private final RecipeSearch recipeSearch;
@@ -34,7 +39,7 @@ public class RecipeEditorController extends BaseController {
     private List<RecipeComponent> searchResults;
     private final List<Category> selectedCategories;
     private final List<RecipeComponent> selectedIngredients;
-    private List<SelectedIngredientLabel> selectedIngredientLabels;
+    private final List<SelectedIngredientLabel> selectedIngredientLabels;
     private int currentPage = 0;
     private int maxPages = 0;
 
@@ -66,7 +71,6 @@ public class RecipeEditorController extends BaseController {
 
     public RecipeEditorController(Recipe recipe, RecipeManager recipeManager, IngredientManager ingredientManager, CategoryManager categoryManager) {
         this.recipe = recipe;
-        this.recipeManager = recipeManager;
         this.categoryManager = categoryManager;
         this.ingredientManager = ingredientManager;
 
@@ -75,13 +79,9 @@ public class RecipeEditorController extends BaseController {
 
         searchResults = new ArrayList<>();
         selectedIngredients = new ArrayList<>();
-        ingredientManager.getIngredientsFromKeys(recipe.getIngredients()).forEach((i, amount) -> {
-            if (i instanceof Ingredient) {
-                selectedIngredients.add(i);
-            } else {
-                log.error("No ingredient with code {}", i.getUniqueCode());
-            }
-        });
+        ingredientManager.getIngredientsFromKeys(recipe.getIngredients()).forEach((i, amount) ->
+                selectedIngredients.add(i)
+        );
         recipeSearch = new RecipeSearch(recipeManager, ingredientManager);
         selectedIngredientsVbox = new VBox();
         selectedIngredientLabels = new ArrayList<>();
@@ -101,10 +101,15 @@ public class RecipeEditorController extends BaseController {
         descriptionTextArea.setText(recipe.getDescription());
         recipe.getIngredients().forEach((k, v) -> {
             HBox ingredientHBox = new HBox();
-            Button deleteIngredientButton = new Button("X");
-            deleteIngredientButton.setStyle("-fx-text-fill: d91c1c;" +
-                    "-fx-font-size: 12;" +
-                    "-fx-background-size: small;");
+            Button deleteIngredientButton = new Button();
+            deleteIngredientButton.setStyle("-fx-background-color: dedede;" +
+                    "-fx-background-radius: 5;" +
+                    "-fx-padding: 5;");
+            ImageView imageView = new ImageView(String.valueOf(Recipe.class.getResource("/images/Tasty_Pages_X_Icon.png")));
+            imageView.setPreserveRatio(true);
+            imageView.setFitHeight(15);
+            imageView.setFitWidth(15);
+            deleteIngredientButton.setGraphic(imageView);
             deleteIngredientButton.setOnAction(h -> {
                 selectedIngredients.remove(ingredientManager.getIngredient(k));
                 log.debug("User deleted ingredient '{}' from recipe.", ingredientManager.getIngredient(k).get().getName());
@@ -204,9 +209,9 @@ public class RecipeEditorController extends BaseController {
 
         recipe.setName(nameTextField.getText());
         Map<RecipeComponent, Integer> ingredients = new HashMap<>();
-        selectedIngredientLabels.forEach(label -> {
-            ingredients.put(label.getComponent(), label.getAmount());
-        });
+        selectedIngredientLabels.forEach(label ->
+                ingredients.put(label.getComponent(), label.getAmount())
+        );
 
 
         try {
@@ -216,24 +221,16 @@ public class RecipeEditorController extends BaseController {
             recipe.setCategoriesFromObjects(List.copyOf(selectedCategories));
             String prepTime = prepTimeTextField.getText();
             recipe.setPreparationTimeMins( isInteger(prepTime) ? Integer.parseInt(prepTime) : null);
-            //recipe.setImage(imagePathTextField.getText());
-            //TODO: set Image properly
+            if (Files.exists(Paths.get(new URI(imagePathTextField.getText())))) {
+                recipe.setImage(new URL(imagePathTextField.getText()));
+            }
+            log.info("Recipe '{}' was edited.", recipe.getName());
+            changeSceneToRecipe();
+        } catch (MalformedURLException | URISyntaxException e) {
+            recipe.setImage(Recipe.class.getResource("/images/dish-fork-and-knife.png"));
+            log.error("Invalid image path, loaded default image.");
             log.info("Recipe '{}' was edited.", recipe.getName());
             changeSceneToRecipe();
-        } catch (InvalidRecipeException e) {
-            Alert a = new Alert(Alert.AlertType.ERROR);
-            a.setHeaderText("Error creating recipe");
-            a.setContentText(e.getMessage());
-            a.show();
-            log.error(e.getMessage());
-            log.error("Recipe not created.");
-        } catch (RuntimeException e) {
-            Alert a = new Alert(Alert.AlertType.ERROR);
-            a.setHeaderText("Error creating recipe");
-            a.setContentText("Something went wrong when creating the recipe. Check all your inputs!");
-            a.show();
-            log.error(e.getMessage());
-            log.error("Recipe not created.");
         }
     }
 
diff --git a/src/main/java/mi/hdm/controllers/RecipeViewController.java b/src/main/java/mi/hdm/controllers/RecipeViewController.java
index d9170e7aa6f0966aaac6526663d919f0c6023669..d20639b8d0ac3b61af7daff78c0f6509d9deabab 100644
--- a/src/main/java/mi/hdm/controllers/RecipeViewController.java
+++ b/src/main/java/mi/hdm/controllers/RecipeViewController.java
@@ -79,6 +79,7 @@ public class RecipeViewController extends BaseController {
         Image image = new Image(recipe.getImageURL().toString());
         recipeImage.setImage(image);
         recipeImage.setPreserveRatio(true);
+        //TODO: for some images (f.ex. Tasty_Pages_Arrow_back.png) the image is larger than the image view
     }
 
 
diff --git a/src/main/java/mi/hdm/filesystem/FileManager.java b/src/main/java/mi/hdm/filesystem/FileManager.java
index 96f741e4c0e2414b3ca24c7f3426fe98b9349056..dd27682fc4c98de7166aa2f114703524fb7fb5fd 100644
--- a/src/main/java/mi/hdm/filesystem/FileManager.java
+++ b/src/main/java/mi/hdm/filesystem/FileManager.java
@@ -38,6 +38,7 @@ public class FileManager {
 
     private final static Logger log = LogManager.getLogger(FileManager.class);
 
+    //TODO: delete before handing in because not used?
     public static void serializeToFile(TastyPages app) {
         log.info("Writing user data to '{}'", PATH_TO_USER_DATA);
         //Serialize ingredient manager
diff --git a/src/main/java/mi/hdm/recipes/RecipeManager.java b/src/main/java/mi/hdm/recipes/RecipeManager.java
index 8a1e3720f2e213aa859f5c8dd01311a423e5a760..5ca03bcec35e7b6766a3570546d74d40932c01f7 100644
--- a/src/main/java/mi/hdm/recipes/RecipeManager.java
+++ b/src/main/java/mi/hdm/recipes/RecipeManager.java
@@ -53,7 +53,7 @@ public class RecipeManager {
         log.info("Recipe deleted successfully.");
     }
 
-    private Optional<Recipe> getRecipeByName(String name) {
+    public Optional<Recipe> getRecipeByName(String name) {
         for (final Recipe r : allRecipes.values()) {
             if (name.equals(r.getName())) {
                 return Optional.of(r);
diff --git a/src/main/resources/fxml/recipe-creator.fxml b/src/main/resources/fxml/recipe-creator.fxml
index 2007cb5f515d5acf461c0d9c59a1213f02605726..684ac3f7ab72fbcd120b21ab66dad67e83f41992 100644
--- a/src/main/resources/fxml/recipe-creator.fxml
+++ b/src/main/resources/fxml/recipe-creator.fxml
@@ -21,7 +21,7 @@
                     </padding>
                     <VBox prefHeight="200.0" prefWidth="100.0" style="-fx-background-color: ffffff;" AnchorPane.bottomAnchor="0.0" AnchorPane.leftAnchor="0.0" AnchorPane.rightAnchor="0.0" AnchorPane.topAnchor="0.0">
                   <Label text="Set path to recipe image" />
-                  <TextField promptText="Set path to recipe image if you want" style="-fx-background-color: transparent; -fx-border-width: 4; -fx-border-radius: 5; -fx-border-color: d91c1c;">
+                  <TextField fx:id="imagePathTextField" promptText="Set path to recipe image if you want" style="-fx-background-color: transparent; -fx-border-width: 4; -fx-border-radius: 5; -fx-border-color: d91c1c;">
                      <VBox.margin>
                         <Insets top="5.0" />
                      </VBox.margin></TextField>