diff --git a/src/main/java/no/ntnu/idatt1002/demo/controller/AddBudgetController.java b/src/main/java/no/ntnu/idatt1002/demo/controller/AddBudgetController.java
index 03dd27713f6a4b15aff1a30974394888a841958a..8a44c9b34c02e6516c65bdad2149b1a07fbf6dd9 100644
--- a/src/main/java/no/ntnu/idatt1002/demo/controller/AddBudgetController.java
+++ b/src/main/java/no/ntnu/idatt1002/demo/controller/AddBudgetController.java
@@ -16,6 +16,9 @@ import no.ntnu.idatt1002.demo.data.Economics.ExpenseCategory;
 /**
  * Class that represents the popup dialog box that appears whenever a budget item is to be added or edited.
  * The dialog contains various fields that are used to create a new item or edit an existing item.
+ * @author Anders Emil Bergan
+ * @since 24.3.2023
+ *
  */
 public class AddBudgetController {
 
@@ -42,9 +45,12 @@ public class AddBudgetController {
      */
     @FXML
     public void initialize(){
+        //Set the possible values in a list.
         ObservableList<ExpenseCategory> expenseCategories = FXCollections.observableArrayList(
                 ExpenseCategory.values());
+        //Set the values inside the dropbox
         categoryVariable.setItems(expenseCategories);
+        //Set default value
         categoryVariable.setPromptText("Category");
     }
 
@@ -56,6 +62,26 @@ public class AddBudgetController {
         return this.newBudgetItem;
     }
 
+    /**
+     * Binds the item that is taken in as the argument with a budget item declared in this class. The item of this class is instantiated
+     * as a deep copy of the argument. Each attribute of their attributes are then bounded. The text fields and category boxes
+     * in the dialog window are then set to the values of the chosen item, as to not display empty values.
+     * @param item The item that is chosen to be edited.
+     */
+    @FXML
+    public void setBudget(BudgetItem item){
+        //Deep copying item and then binding the two items
+        chosenBudgetItem = new BudgetItem(item.getBudgetAmount(), item.getBudgetDescription(), item.getBudgetCategory());
+        chosenBudgetItem.getAmountProperty().bindBidirectional(item.getAmountProperty());
+        chosenBudgetItem.getDescriptionProperty().bindBidirectional(item.getDescriptionProperty());
+        chosenBudgetItem.getCategoryProperty().bindBidirectional(item.getCategoryProperty());
+
+        //Set the values of the input fields of the dialog box
+        amountVariable.textProperty().set(String.valueOf(item.getBudgetAmount()));
+        descriptionVariable.textProperty().set(item.getBudgetDescription());
+        categoryVariable.setValue(item.getBudgetCategory());
+    }
+
     /**
      * Adds a new to the budget tableview or edits an existing entry in table if the OK button is pressed.
      * An entry is edited as the selected entry of the table is bounded to another budget item in this class. If this budget item
@@ -82,26 +108,6 @@ public class AddBudgetController {
         stage.close();
     }
 
-    /**
-     * Binds the item that is taken in as the argument with a budget item from this class. The item of this class is instantiated
-     * as a deep copy of the argument. Each attribute of their attributes are then bounded. The text fields and category boxes
-     * in the dialog window are then set to the values of the chosen item, as to not display empty values.
-     * @param item The item that is chosen to be edited.
-     */
-    @FXML
-    public void setBudget(BudgetItem item){
-        //Deep copying item and then binding the two items
-        chosenBudgetItem = new BudgetItem(item.getBudgetAmount(), item.getBudgetDescription(), item.getBudgetCategory());
-        chosenBudgetItem.getAmountProperty().bindBidirectional(item.getAmountProperty());
-        chosenBudgetItem.getDescriptionProperty().bindBidirectional(item.getDescriptionProperty());
-        chosenBudgetItem.getCategoryProperty().bindBidirectional(item.getCategoryProperty());
-
-        //Set the values of the input fields of the dialog box
-        amountVariable.textProperty().set(String.valueOf(item.getBudgetAmount()));
-        descriptionVariable.textProperty().set(item.getBudgetDescription());
-        categoryVariable.setValue(item.getBudgetCategory());
-    }
-
     /**
      * Closes the dialog box.
      * @param actionEvent A button click on the close button.
diff --git a/src/main/java/no/ntnu/idatt1002/demo/controller/AddExpenseController.java b/src/main/java/no/ntnu/idatt1002/demo/controller/AddExpenseController.java
index b4a6ce145c8384a8ecfd3f9b908b4c004f52c319..1356e31ab7f012d75d8d3bc489ea884d9f6c4679 100644
--- a/src/main/java/no/ntnu/idatt1002/demo/controller/AddExpenseController.java
+++ b/src/main/java/no/ntnu/idatt1002/demo/controller/AddExpenseController.java
@@ -17,8 +17,14 @@ import javafx.scene.control.TextField;
 import javafx.stage.Stage;
 import no.ntnu.idatt1002.demo.data.Economics.Expense;
 import no.ntnu.idatt1002.demo.data.Economics.ExpenseCategory;
-import no.ntnu.idatt1002.demo.data.Economics.Income;
+import no.ntnu.idatt1002.demo.data.Economics.Expense;
 
+/**
+ * Class that represents the popup dialog box that appears whenever an expense is to be added or edited.
+ * The dialog contains various fields that are used to create a new expense or edit an existing expense.
+ * @author Harry Linrui Xu
+ * @since 13.3.2023
+ */
 public class AddExpenseController {
   Expense newExpense = null; //the expense that is chosen when editing or the expense that is created when adding
 
@@ -48,17 +54,26 @@ public class AddExpenseController {
   @FXML
   private ComboBox<Boolean> recurringBox;
 
+  /**
+   * Initializes the category and recurring drop boxes by filling them with all the values from the ExpenseCategory enum, 
+   * and the boolean values respectively, and the datepicker calendar.
+   * It then sets them to the default values of GIFT, false and today respectively.
+   */
   @FXML
   public void initialize() {
+    //Set the possible values in a list.
     ObservableList<ExpenseCategory> expenseCategories = FXCollections.observableArrayList(
         ExpenseCategory.values());
+    //Set the values inside the dropbox
     categoryBox.setItems(expenseCategories);
+    //Set default value
     categoryBox.setValue(ExpenseCategory.FOOD);
 
     ObservableList<Boolean> recurring = FXCollections.observableArrayList(true, false);
     recurringBox.setItems(recurring);
     recurringBox.setValue(false);
 
+    //Set date to today
     datePicker.setValue(LocalDate.now());
   }
 
@@ -70,7 +85,18 @@ public class AddExpenseController {
     return recurringBox.getValue();//.equals("Yes");
   }
 
-  public void setExpense(Expense expense) { //TODO NEED CANCEL BUTTON TO REMOVE THE CHANGES IF CANCEL IS PRESSED
+  public Expense getNewExpense() {
+    return this.newExpense;
+  }
+
+  /**
+   * Binds the expense that is taken in as the argument with an expense declared in this class. The expense of this class is instantiated
+   * as a deep copy of the argument. Each attribute of their attributes are then bounded. The text fields and category boxes
+   * in the dialog window are then set to the values of the chosen expense, as to not display empty values.
+   * @param expense The expense that is chosen to be edited.
+   */
+  public void setExpense(Expense expense) {
+    //Deep copying expense and then binding the two expenses
     chosenExpense = new Expense(expense.getDescription(), expense.getAmount(), expense.isRecurring(), expense.getCategory(), expense.getDate());
     chosenExpense.descriptionProperty().bindBidirectional(expense.descriptionProperty());
     chosenExpense.amountProperty().bindBidirectional(expense.amountProperty());
@@ -78,6 +104,7 @@ public class AddExpenseController {
     chosenExpense.expenseCategoryObjectProperty().bindBidirectional(expense.expenseCategoryObjectProperty());
     chosenExpense.dateProperty().bindBidirectional(expense.dateProperty());
 
+    //Set the values of the input fields of the dialog box
     descriptionField.textProperty().set(expense.getDescription());
     amountField.textProperty().setValue(String.valueOf(expense.getAmount()));
     recurringBox.setValue(expense.isRecurring());
@@ -85,8 +112,15 @@ public class AddExpenseController {
     categoryBox.setValue(expense.getCategory());
   }
 
+  /**
+   * Adds a new to the tableview or edits an existing entry in table if the OK button is pressed.
+   * An entry is edited as the selected entry of the table is bounded to another expense in this class. If this expense
+   * is altered, the expense in the tableview will automatically respond with the same changes.
+   * @param event If the OK button is pressed.
+   */
   @FXML
   public void pressOkBtn(ActionEvent event) {
+    //Instantiates a new expense
     if (newExpense == null) {
       LocalDate date = datePicker.getValue();
       double amount = Double.parseDouble(amountField.getText());
@@ -95,6 +129,7 @@ public class AddExpenseController {
       boolean recurring = isRecurring();
       newExpense = new Expense(description, amount, recurring, category, date);
     }
+    //Sets the value of the expense(chosen) that is bounded to the chosen expense (not chosenExpense) in the tableview
     if (chosenExpense != null) {
       chosenExpense.setDescription((descriptionField.getText()));
       chosenExpense.setAmount(Double.parseDouble(amountField.getText()));
@@ -107,6 +142,10 @@ public class AddExpenseController {
     ((Stage) source.getScene().getWindow()).close();
   }
 
+  /**
+   * Closes the dialog box and cancels any pending changes.
+   * @param event A button click on the cancel button.
+   */
   @FXML
   public void pressCancelBtn(ActionEvent event) {
     final Node source = (Node) event.getSource();
@@ -114,8 +153,4 @@ public class AddExpenseController {
 
     stage.close();
   }
-
-  public Expense getNewExpense() {
-    return this.newExpense;
-  }
 }
\ No newline at end of file
diff --git a/src/main/java/no/ntnu/idatt1002/demo/controller/AddIncomeController.java b/src/main/java/no/ntnu/idatt1002/demo/controller/AddIncomeController.java
index d59604546b8dffc0e021ad82a5dc195d90a0b3db..9c96a53cf7296065ad834b4aeafa223aa9916004 100644
--- a/src/main/java/no/ntnu/idatt1002/demo/controller/AddIncomeController.java
+++ b/src/main/java/no/ntnu/idatt1002/demo/controller/AddIncomeController.java
@@ -19,6 +19,12 @@ import no.ntnu.idatt1002.demo.data.Economics.Expense;
 import no.ntnu.idatt1002.demo.data.Economics.Income;
 import no.ntnu.idatt1002.demo.data.Economics.IncomeCategory;
 
+/**
+ * Class that represents the popup dialog box that appears whenever an income is to be added or edited.
+ * The dialog contains various fields that are used to create a new income or edit an existing income.
+ * @author Harry Linrui Xu
+ * @since 24.3.2023
+ */
 public class AddIncomeController {
 
   Income newIncome = null;
@@ -45,17 +51,26 @@ public class AddIncomeController {
   @FXML
   private ComboBox<Boolean> recurringBox;
 
+  /**
+   * Initializes the category and recurring drop boxes by filling them with all the values from the IncomeCategory enum, 
+   * and the boolean values respectively, and the datepicker calendar.
+   * It then sets them to the default values of GIFT, false and today respectively.
+   */
   @FXML
   public void initialize() {
+    //Set the possible values in a list.
     ObservableList<IncomeCategory> incomeCategories = FXCollections.observableArrayList(
         IncomeCategory.values());
+    //Set the values inside the dropbox
     categoryBox.setItems(incomeCategories);
+    //Set default value
     categoryBox.setValue(IncomeCategory.GIFT);
 
     ObservableList<Boolean> recurring = FXCollections.observableArrayList(true, false);
     recurringBox.setItems(recurring);
     recurringBox.setValue(false);
 
+    //Set date to today
     datePicker.setValue(LocalDate.now());
   }
 
@@ -67,7 +82,18 @@ public class AddIncomeController {
     return recurringBox.getValue();//.equals("Yes");
   }
 
-  public void setIncome(Income income) { //TODO NEED CANCEL BUTTON TO REMOVE THE CHANGES IF CANCEL IS PRESSED
+  public Income getNewIncome() {
+    return this.newIncome;
+  }
+
+  /**
+   * Binds the income that is taken in as the argument with an income declared in this class. The income of this class is instantiated
+   * as a deep copy of the argument. Each attribute of their attributes are then bounded. The text fields and category boxes
+   * in the dialog window are then set to the values of the chosen income, as to not display empty values.
+   * @param income The income that is chosen to be edited.
+   */
+  public void setIncome(Income income) {
+    //Deep copying income and then binding the two incomes
     chosenIncome = new Income(income.getDescription(), income.getAmount(), income.isRecurring(), income.getCategory(), income.getDate());
     chosenIncome.descriptionProperty().bindBidirectional(income.descriptionProperty());
     chosenIncome.amountProperty().bindBidirectional(income.amountProperty());
@@ -78,6 +104,7 @@ public class AddIncomeController {
     amountField.textProperty().setValue(String.valueOf(income.getAmount()));
     recurringBox.setValue(income.isRecurring());
 
+    //Set the values of the input fields of the dialog box
     descriptionField.textProperty().set(income.getDescription());
     amountField.textProperty().setValue(String.valueOf(income.getAmount()));
     recurringBox.setValue(income.isRecurring());
@@ -85,8 +112,15 @@ public class AddIncomeController {
     categoryBox.setValue(income.getCategory());
   }
 
+  /**
+   * Adds a new to the tableview or edits an existing entry in table if the OK button is pressed.
+   * An entry is edited as the selected entry of the table is bounded to another income in this class. If this income
+   * is altered, the income in the tableview will automatically respond with the same changes.
+   * @param event If the OK button is pressed.
+   */
   @FXML
   public void pressOkBtn(ActionEvent event) {
+    //Instantiates a new income
     if (chosenIncome == null) {
       LocalDate date = datePicker.getValue();
       double amount = Double.parseDouble(amountField.getText());
@@ -95,6 +129,7 @@ public class AddIncomeController {
       boolean recurring = isRecurring();
       newIncome = new Income(description, amount, recurring, category, date);
     }
+    //Sets the value of the income(chosenIncome) that is bounded to the chosen income (not chosenIncome) in the tableview
     if (chosenIncome != null) {
       chosenIncome.setDescription((descriptionField.getText()));
       chosenIncome.setAmount(Double.parseDouble(amountField.getText()));
@@ -107,6 +142,11 @@ public class AddIncomeController {
     ((Stage) source.getScene().getWindow()).close();
   }
 
+
+  /**
+   * Closes the dialog box and cancels any pending changes.
+   * @param event A button click on the cancel button.
+   */
   @FXML
   public void pressCancelBtn(ActionEvent event) {
     final Node source = (Node) event.getSource();
@@ -114,8 +154,4 @@ public class AddIncomeController {
 
     stage.close();
   }
-
-  public Income getNewIncome() {
-    return this.newIncome;
-  }
 }
\ No newline at end of file
diff --git a/src/main/java/no/ntnu/idatt1002/demo/controller/ExpensesController.java b/src/main/java/no/ntnu/idatt1002/demo/controller/ExpensesController.java
index 34b0c179e2ed78299250a6723a84e1599efbe074..0c0b143394019421b312c6974a792442ce22e414 100644
--- a/src/main/java/no/ntnu/idatt1002/demo/controller/ExpensesController.java
+++ b/src/main/java/no/ntnu/idatt1002/demo/controller/ExpensesController.java
@@ -32,10 +32,13 @@ import no.ntnu.idatt1002.demo.data.Economics.IncomeRegister;
 import no.ntnu.idatt1002.demo.data.Economics.Item;
 import no.ntnu.idatt1002.demo.data.Economics.ItemRegister;
 
-enum DialogMode {
-  ADD, EDIT, DELETE
-}
-
+/**
+ * Controller for expense scene in the application. This controller manages all actions that relates to the expense tableview (add, edit and delete), the switching
+ * of scenes from the expense scene to another scene, and the saving of the table, whenever the user switches to another scene.
+ *
+ * @author Harry Linrui Xu
+ * @since 13.3.2023
+ */
 public class ExpensesController {
 
   @FXML
@@ -50,7 +53,7 @@ public class ExpensesController {
   private ComboBox<String> show;
 
   @FXML
-  private Button incomeBtn;
+  private Button expenseBtn;
 
   @FXML
   private Text sum;
@@ -86,35 +89,54 @@ public class ExpensesController {
 
   ObservableList<String> filter;
 
+  /**
+   * Initializes the expense register, the observable expense list and the tableview, along values of the dropbox used for filtering the tableview.
+   * The method is called each time the FXML of this scene is loaded.
+   * @throws IOException If there occurs any exception when loading the budget register from a file.
+   */
   @FXML
   public void initialize() throws IOException {
+    //Initialize table columns
     dateColumn.setCellValueFactory(new PropertyValueFactory<Expense, String>("date"));
     amountColumn.setCellValueFactory(new PropertyValueFactory<Expense, Double>("amount"));
     categoryColumn.setCellValueFactory(new PropertyValueFactory<Expense, ExpenseCategory>("category"));
     descriptionColumn.setCellValueFactory(new PropertyValueFactory<Expense, String>("description"));
     recurringColumn.setCellValueFactory(new PropertyValueFactory<Expense, Boolean>("recurring"));
 
+    //Initialize the filter box
     filter = FXCollections.observableArrayList("All", "Food", "Clothes", "Books", "Other",
         "Fixed expense");
     show.setItems(filter);
     show.setValue("All");
 
+    //Initialize registers and tableview
     expenseRegister = loadExpenseDataFromFile("Expense");
     expenses = FXCollections.observableArrayList(expenseRegister.getItems());
     expenseTableView.setItems(expenses);
 
+    //Initialize sum field under the tableview
     sum.setText(String.valueOf(expenseRegister.getTotalSum()));
   }
 
+  /**
+   * Method for handling the adding of new entries in the tableview.
+   * @param event A button click on the add button.
+   */
   @FXML
   protected void handleAddButton(ActionEvent event) {
     handleEditButton(event);
   }
 
+  /**
+   * Method for handling the editing of a chosen entry in the tableview.
+   * @param event A button click on the edit button.
+   */
   @FXML
   protected void handleEditButton(ActionEvent event) {
+    //Instantiate FXML loader and loads the popup for adding expense
     FXMLLoader loader = new FXMLLoader();
     loader.setLocation(getClass().getResource("/view/AddExpense.fxml"));
+    
     Expense newExpense = null;
     String dialogTitle = "";
     // Load the FXML file for your dialog box
@@ -134,7 +156,8 @@ public class ExpensesController {
     /**
      * The mode of the dialog. NEW if new contact, EDIT if edit existing contact.
      */
-    DialogMode dialogMode;
+    DialogMode dialogMode;    
+    //Sets the title of the dialog box
     if (event.getSource().equals(addBtn)) {
       dialogMode = DialogMode.ADD;
       dialogTitle = "Add expense";
@@ -144,25 +167,32 @@ public class ExpensesController {
         && expenseTableView.getSelectionModel().getSelectedItem() != null) {
       dialogMode = DialogMode.EDIT;
       dialogTitle = "Edit expense";
+      //Gets the selected item from the table
       newExpense = expenseTableView.getSelectionModel().getSelectedItem();
+      //Binds the selected item to another item which is defined in the ItemController
       dialogController.setExpense(newExpense);
     } else {
       return;
     }
     dialog.setTitle(dialogTitle);
-    dialog.showAndWait();
-
     // Show the Dialog and wait for the user to close it
+    dialog.showAndWait();
+    
     //Get the newly created expense from the dialog pane
     newExpense = dialogController.getNewExpense();
 
+    //Adds the new item to the register
     if (newExpense != null && dialogMode == DialogMode.ADD) {
       expenseRegister.addItem(newExpense);
     }
+    //Updates the tableview using the register
     refreshTableView();
   }
-  //Only add the expense to the tableview, if the expense is not null
 
+  /**
+   * Deletes an entry from the tableview, if an entry has been selected. The method brings up a popup window, asking for confirmation for deleting the entry.
+   * @param event A button click on the delete button
+   */
   @FXML
   public void handleDeleteBtn(ActionEvent event) {
     Expense chosenExpense = expenseTableView.getSelectionModel().getSelectedItem();
@@ -176,12 +206,20 @@ public class ExpensesController {
     }
   }
 
+  /**
+   * Method for synching the register with the tableview. The observable list to which the tableview is set, is being refilled with all the entries
+   * in the register, keeping it updated with new changes.
+   */
   protected void refreshTableView() {
     this.expenses.setAll(expenseRegister.getItems());
     this.sum.setText(String.valueOf(expenseRegister.getTotalSum()));
 
   }
 
+  /**
+   * Returns an optional, which is a popup alert box, asking for confirmation for deleting an entry.
+   * @return An alert box, asking for confirmation for deleting the selected entry of the tableview.
+   */
   private Optional<ButtonType> showConfirmationDialog() {
     Alert alert = new Alert(AlertType.CONFIRMATION);
     alert.setTitle("Confirm Delete");
@@ -191,6 +229,12 @@ public class ExpensesController {
     return alert.showAndWait();
   }
 
+  /**
+   * Method that either reads data from a file with which it fills an expense register, if older changes exist, or instantiates an expense register if the file is empty.
+   * @param fileName The name of the file that is being read from.
+   * @return An object of type IncomeRegister.
+   * @throws IOException If an error occurs while reading from the file.
+   */
   public ExpenseRegister loadExpenseDataFromFile(String fileName) throws IOException {
     //ItemRegister<T extends Item>
     FileHandling fileHandling = new FileHandling();
@@ -206,16 +250,27 @@ public class ExpensesController {
     return expenseRegister;
   }
 
+  /**
+   * Saves the changes made to the expense tableview by writing the information to a file.
+   * @param fileName The name of the file that is written to.
+   * @throws IOException If an error occurs while writing to the file.
+   */
   public void saveDataToFile(String fileName) throws IOException {
     FileHandling fileHandling = new FileHandling();
     fileHandling.writeItemRegisterToFile(expenseRegister, fileName);
   }
 
+  /**
+   * Switches scenes from the expense scene to another, by loading a new FXML file and setting the scene to this location.
+   * The destination depends entirely on which button is pressed.
+   * @param event A button click on the buttons on the buttonbar or the next button
+   * @throws IOException If an error occurs with loading any of the FXML files.
+   */
   @FXML
   public void switchScene(ActionEvent event) throws IOException {
     saveDataToFile("Expense");
     FXMLLoader loader = new FXMLLoader();
-    if (event.getSource() == incomeBtn) {
+    if (event.getSource() == expenseBtn) {
       loader.setLocation(SceneController.class.getResource("/view/Income.fxml"));
     } else if (event.getSource() == returnBtn) {
       loader.setLocation(SceneController.class.getResource("/view/FirstMenu.fxml"));
diff --git a/src/main/java/no/ntnu/idatt1002/demo/controller/IncomeController.java b/src/main/java/no/ntnu/idatt1002/demo/controller/IncomeController.java
index 489d98dba005251700af594b22a7870ecf52d110..d2981e60718b6e3fe5a30ddbf185808b8fcae157 100644
--- a/src/main/java/no/ntnu/idatt1002/demo/controller/IncomeController.java
+++ b/src/main/java/no/ntnu/idatt1002/demo/controller/IncomeController.java
@@ -28,12 +28,15 @@ import no.ntnu.idatt1002.demo.data.Economics.IncomeCategory;
 import no.ntnu.idatt1002.demo.data.Economics.IncomeRegister;
 import no.ntnu.idatt1002.demo.data.Economics.FileHandling;
 
+/**
+ * Controller for income scene in the application. This controller manages all actions that relates to the income tableview (add, edit and delete), the switching
+ * of scenes from the income scene to another scene, and the saving of the table, whenever the user switches to another scene.
+ *
+ * @author Harry Linrui Xu
+ * @since 24.3.2023
+ */
 public class IncomeController {
 
-  /**
-   * The mode of the dialog. NEW if new contact, EDIT if edit existing contact.
-   */
-  private DialogMode dialogMode;
   @FXML
   private Button addBtn;
   @FXML
@@ -81,35 +84,54 @@ public class IncomeController {
 
   ObservableList<String> filter;
 
+  /**
+   * Initializes the income register, the observable income list and the tableview, along values of the dropbox used for filtering the tableview.
+   * The method is called each time the FXML of this scene is loaded.
+   * @throws IOException If there occurs any exception when loading the budget register from a file.
+   */
   @FXML
   public void initialize() throws IOException {
+    //Initialize table columns
     dateColumn.setCellValueFactory(new PropertyValueFactory<Income, String>("date"));
     amountColumn.setCellValueFactory(new PropertyValueFactory<Income, Double>("amount"));
     categoryColumn.setCellValueFactory(new PropertyValueFactory<Income, IncomeCategory>("category"));
     descriptionColumn.setCellValueFactory(new PropertyValueFactory<Income, String>("description"));
     recurringColumn.setCellValueFactory(new PropertyValueFactory<Income, Boolean>("recurring"));
 
+    //Initialize the filter box
     filter = FXCollections.observableArrayList("All", "Gift", "Salary", "Student loan", "Fixed income");
     show.setItems(filter);
     show.setValue("All");
 
+    //Initialize registers and tableview
     incomeRegister = loadIncomeDataFromFile("Income");
     income = FXCollections.observableArrayList(incomeRegister.getItems());
     incomeTableView.setItems(income);
 
+    //Initialize sum field under the tableview
     sum.setText(String.valueOf(incomeRegister.getTotalSum()));
     //if budget.register isEmpty -> disable expense
   }
 
+  /**
+   * Method for handling the adding of new entries in the tableview.
+   * @param event A button click on the add button.
+   */
   @FXML
   protected void handleAddButton(ActionEvent event) {
     handleEditButton(event);
   }
 
+  /**
+   * Method for handling the editing of a chosen entry in the tableview.
+   * @param event A button click on the edit button.
+   */
   @FXML
   protected void handleEditButton(ActionEvent event) {
+    //Instantiate FXML loader and loads the popup for adding income
     FXMLLoader loader = new FXMLLoader();
     loader.setLocation(getClass().getResource("/view/AddIncome.fxml"));
+
     Income newIncome = null;
     String dialogTitle = "";
     // Load the FXML file for your dialog box
@@ -126,16 +148,24 @@ public class IncomeController {
     // Get the controller for the loaded FXML file
     AddIncomeController dialogController = loader.getController();
 
+    /**
+     * The mode of the dialog. NEW if new contact, EDIT if edit existing contact.
+     */
+    DialogMode dialogMode;
+    //Sets the title of the dialog box
     if (event.getSource().equals(addBtn)) {
       dialogMode = DialogMode.ADD;
       dialogTitle = "Add income";
-    } else if (event.getSource().equals(editBtn)
-        && incomeTableView.getSelectionModel().getSelectedItem() != null) {
+    }
+    else if (event.getSource().equals(editBtn) && incomeTableView.getSelectionModel().getSelectedItem() != null) {
       dialogMode = DialogMode.EDIT;
       dialogTitle = "Edit income";
+      //Gets the selected item from the table
       newIncome = incomeTableView.getSelectionModel().getSelectedItem();
+      //Binds the selected item to another item which is defined in the ItemController
       dialogController.setIncome(newIncome);
-    } else {
+    }
+    else {
       return;
     }
 
@@ -145,19 +175,27 @@ public class IncomeController {
     //Get the newly created income from the dialog pane
     newIncome = dialogController.getNewIncome();
 
+    //Adds the new item to the register
     if (newIncome != null && dialogMode == DialogMode.ADD) {
       incomeRegister.addItem(newIncome);
     }
+    //Updates the tableview using the register
     refreshTableView();
   }
-  //Only add the income to the tableview, if the income is not null
 
+  /**
+   * Deletes an entry from the tableview, if an entry has been selected. The method brings up a popup window, asking for confirmation for deleting the entry.
+   * @param event A button click on the delete button
+   */
   @FXML
   public void handleDeleteBtn(ActionEvent event) {
+    //Gets the selected item from the tableview
     Income chosenIncome = incomeTableView.getSelectionModel().getSelectedItem();
+    //Exits the method if nothing is selected
     if (chosenIncome == null) {
       return;
     }
+    //Brings up a confirmation popup
     Optional<ButtonType> isConfirmed = showConfirmationDialog();
     if (isConfirmed.isPresent() && isConfirmed.get() == ButtonType.OK) {
       incomeRegister.removeItem(chosenIncome);
@@ -165,11 +203,19 @@ public class IncomeController {
     }
   }
 
+  /**
+   * Method for synching the register with the tableview. The observable list to which the tableview is set, is being refilled with all the entries
+   * in the register, keeping it updated with new changes.
+   */
   protected void refreshTableView() {
     this.income.setAll(incomeRegister.getItems());
     this.sum.setText(String.valueOf(incomeRegister.getTotalSum()));
   }
 
+  /**
+   * Returns an optional, which is a popup alert box, asking for confirmation for deleting an entry.
+   * @return An alert box, asking for confirmation for deleting the selected entry of the tableview.
+   */
   private Optional<ButtonType> showConfirmationDialog() {
     Alert alert = new Alert(AlertType.CONFIRMATION);
     alert.setTitle("Confirm Delete");
@@ -179,12 +225,18 @@ public class IncomeController {
     return alert.showAndWait();
   }
 
+  /**
+   * Method that either reads data from a file with which it fills an income register, if older changes exist, or instantiates an income register if the file is empty.
+   * @param fileName The name of the file that is being read from.
+   * @return An object of type IncomeRegister.
+   * @throws IOException If an error occurs while reading from the file.
+   */
   public IncomeRegister loadIncomeDataFromFile(String fileName) throws IOException {
     FileHandling fileHandling = new FileHandling();
+    //Instantiate new incomeRegister
     if (fileHandling.isEmpty(fileName)) {
       incomeRegister = new IncomeRegister();
-      System.out.println("hey");
-    } else {
+    } else { //Load previous income register
       try {
         incomeRegister = fileHandling.readIncomeRegisterFromFile(fileName);
       } catch (IOException e) {
@@ -194,13 +246,25 @@ public class IncomeController {
     return incomeRegister;
   }
 
+  /**
+   * Saves the changes made to the income tableview by writing the information to a file.
+   * @param fileName The name of the file that is written to.
+   * @throws IOException If an error occurs while writing to the file.
+   */
   public void saveDataToFile(String fileName) throws IOException {
     FileHandling fileHandling = new FileHandling();
     fileHandling.writeItemRegisterToFile(incomeRegister, fileName);
   }
 
+  /**
+   * Switches scenes from the income scene to another, by loading a new FXML file and setting the scene to this location.
+   * The destination depends entirely on which button is pressed.
+   * @param event A button click on the buttons on the buttonbar or the next button
+   * @throws IOException If an error occurs with loading any of the FXML files.
+   */
   @FXML
   public void switchScene(ActionEvent event) throws IOException {
+    //Always saving the data when switching scenes
     saveDataToFile("Income");
     FXMLLoader loader = new FXMLLoader();
     if (event.getSource() == expenseBtn) {
diff --git a/src/main/java/no/ntnu/idatt1002/demo/controller/MainMenuController.java b/src/main/java/no/ntnu/idatt1002/demo/controller/MainMenuController.java
index f59aedc77d55dec90953454bd5f59e139b8cf3ed..da5b38ef71f9ea025c20ece3f1cc7bcfeaf9e1e2 100644
--- a/src/main/java/no/ntnu/idatt1002/demo/controller/MainMenuController.java
+++ b/src/main/java/no/ntnu/idatt1002/demo/controller/MainMenuController.java
@@ -19,6 +19,10 @@ import no.ntnu.idatt1002.demo.data.Economics.ExpenseRegister;
 import no.ntnu.idatt1002.demo.data.Economics.FileHandling;
 import no.ntnu.idatt1002.demo.data.Economics.IncomeRegister;
 
+/**
+ * Class that acts as both a main menu and monthly budget overview that shows the monthly progress of a users account.
+ * The main menu act as a hub that branches to numerous other windows, such as adding expenses or looking into food recipes.
+ */
 public class MainMenuController {
 
     @FXML
@@ -49,24 +53,36 @@ public class MainMenuController {
     private Label balanceLbl;
 
 
+    /**
+     * Initializes various classes that relates to income and expense, in order to present the overview that depends on the
+     * income (money inflow) and expense (money outflow).
+     * Sets the progress bar, budget month, balance label, date and how much of the monthly budget has been spent.
+     * @throws IOException Upon errors with file reading/writing.
+     */
     @FXML
     public void initialize() throws IOException {
+        //Instantiate the income- controller and register
         IncomeController incomeController = new IncomeController();
         IncomeRegister incomeRegister = incomeController.loadIncomeDataFromFile("Income");
 
+        //Instantiate the expense- controller and register
         ExpensesController expensesController = new ExpensesController();
         ExpenseRegister expenseRegister = expensesController.loadExpenseDataFromFile("Expense");
 
         double incomeSum = incomeRegister.getTotalSum();
         double expenseSum = expenseRegister.getTotalSum();
 
+        //Set progress
         progressbar.setProgress(expenseSum/incomeSum);
-        progressMarker.setTranslateX(-275 + progressbar.getProgress());
+        //progressMarker.setTranslateX(-275 + progressbar.getProgress());
 
+        //Displaying month
         budgetMonth.setText("BUDGET " + (LocalDate.EPOCH.getMonth()));
         double balance = incomeSum - expenseSum;
+        //Set balance
         balanceLbl.setText("Balance: " + (balance));
 
+        //Displaying how much of the monthly budget has been spent.
         today.setText("Used " + expenseSum + " out of " + incomeSum + " this month");
 
         if (balance < 0) {
@@ -77,9 +93,14 @@ public class MainMenuController {
         //date.restrict
     }
 
+    /**
+     * Switches scenes from the main menu scene to another, by loading a new FXML file and setting the scene to this location.
+     * The destination depends entirely on which button is pressed.
+     * @param event A button click.
+     * @throws IOException If an error occurs with loading any of the FXML files.
+     */
     @FXML
     public void switchScene(ActionEvent event) throws IOException {
-        //saveDataToFile("Income");
         FXMLLoader loader = new FXMLLoader();
         if (event.getSource() == addExpenseBtn) {
             loader.setLocation(SceneController.class.getResource("/view/Expenses.fxml"));
diff --git a/src/main/resources/Budget/Budget.budget b/src/main/resources/Budget/Budget.budget
index 4b13590418e1c85d6e13c753079f5f263a34968c..f8b78881d4dbd024d085098e54750a590d23948b 100644
--- a/src/main/resources/Budget/Budget.budget
+++ b/src/main/resources/Budget/Budget.budget
@@ -5,3 +5,7 @@ budgetAmount=500.0
 budgetCategory=FOOD
 budgetDescription=
 
+budgetAmount=67.0
+budgetCategory=CLOTHES
+budgetDescription=
+
diff --git a/src/main/resources/Economics/Expense.register b/src/main/resources/Economics/Expense.register
index cb7c48161722fe64c7ee78d250daf74239ef58a7..8104fc76275dd1266765a39854b046291556961f 100644
--- a/src/main/resources/Economics/Expense.register
+++ b/src/main/resources/Economics/Expense.register
@@ -8,8 +8,3 @@ amount=100.0
 isRecurring=Recurring
 category=OTHER
 
-date=2023-03-27
-amount=10000.0
-isRecurring=Not recurring
-category=FOOD
-