diff --git a/src/main/java/no/ntnu/idatt1002/demo/data/Economics/ExpenseOverview.java b/src/main/java/no/ntnu/idatt1002/demo/data/Economics/ExpenseOverview.java
deleted file mode 100644
index 7dff587749ac662d267abb2775201b5c59995fc0..0000000000000000000000000000000000000000
--- a/src/main/java/no/ntnu/idatt1002/demo/data/Economics/ExpenseOverview.java
+++ /dev/null
@@ -1,23 +0,0 @@
-package no.ntnu.idatt1002.demo.data.Economics;
-
-import java.util.ArrayList;
-
-/**
- *ExpenseOverview is an abstract class for storing and getting
- * information on Expense.
- */
-public class ExpenseOverview {
-    private ArrayList<Expense> expenses;
-
-    public ExpenseOverview(){
-        this.expenses = new ArrayList<>();
-    }
-
-    /**
-     * Class constructor that takes in an ArrayList of Expense´s as argument
-     * @param expenses   An ArrayList of the Expense´s you want to overview
-     */
-    public ExpenseOverview(ArrayList<Expense> expenses){
-        this.expenses = expenses;
-    }
-}
diff --git a/src/main/java/no/ntnu/idatt1002/demo/data/Economics/IncomeOverview.java b/src/main/java/no/ntnu/idatt1002/demo/data/Economics/IncomeOverview.java
deleted file mode 100644
index 1257d12dabc7160a46cdf158a7f60008f8aad9e4..0000000000000000000000000000000000000000
--- a/src/main/java/no/ntnu/idatt1002/demo/data/Economics/IncomeOverview.java
+++ /dev/null
@@ -1,26 +0,0 @@
-package no.ntnu.idatt1002.demo.data.Economics;
-
-import java.util.ArrayList;
-
-/**
- * IncomeOverview is an abstract class for storing and getting
- * information on income.
- */
-public class IncomeOverview extends ItemOverview {
-    private ArrayList<Income> income;
-
-    /**
-     * An "empty" class constructor.
-     */
-    public IncomeOverview(){
-        this.income = new ArrayList<>();
-    }
-
-    /**
-     * Class constructor that takes in an ArrayList of Income as argument
-     * @param income   An ArrayList of the Income you want to overview
-     */
-    public IncomeOverview(ArrayList<Income> income){
-        this.income = income;
-    }
-}
diff --git a/src/main/java/no/ntnu/idatt1002/demo/data/Economics/Item.java b/src/main/java/no/ntnu/idatt1002/demo/data/Economics/Item.java
index ba80deff035caf2cdcc85c0947c1277c10aa6e54..818d21f388da4945ada87728d4883605464bf7e3 100644
--- a/src/main/java/no/ntnu/idatt1002/demo/data/Economics/Item.java
+++ b/src/main/java/no/ntnu/idatt1002/demo/data/Economics/Item.java
@@ -1,5 +1,7 @@
 package no.ntnu.idatt1002.demo.data.Economics;
 
+import java.util.Objects;
+
 /**
  * The Item class represents a good or service purchased in real life. The item belongs to a category and
  * has an amount, description and a date. The description may be left blank, but the Item must belong to a category and must
@@ -110,6 +112,18 @@ public abstract class Item {
         this.date = newDate;
     }
 
+    @Override
+    public boolean equals(Object o) {
+        if (this == o) return true;
+        if (!(o instanceof Item item)) return false;
+        return Double.compare(item.amount, amount) == 0 && recurring == item.recurring && Objects.equals(description, item.description) && Objects.equals(date, item.date);
+    }
+
+    @Override
+    public int hashCode() {
+        return Objects.hash(description, amount, recurring, date);
+    }
+
     /*    @Override
     public boolean equals(Object obj) {
         if (this == obj) {
diff --git a/src/main/java/no/ntnu/idatt1002/demo/data/Economics/ItemOverview.java b/src/main/java/no/ntnu/idatt1002/demo/data/Economics/ItemRegister.java
similarity index 59%
rename from src/main/java/no/ntnu/idatt1002/demo/data/Economics/ItemOverview.java
rename to src/main/java/no/ntnu/idatt1002/demo/data/Economics/ItemRegister.java
index c16e963383002017965d13dc4787425cc97c9a38..7d72314ca57fb5c83a41dd440f3699826130d85a 100644
--- a/src/main/java/no/ntnu/idatt1002/demo/data/Economics/ItemOverview.java
+++ b/src/main/java/no/ntnu/idatt1002/demo/data/Economics/ItemRegister.java
@@ -6,48 +6,47 @@ import java.util.ArrayList;
  * ItemOverview is an abstract class for storing and getting.
  * information on items. Superclass for Income- and ExpenseOverview.
  */
-public abstract class ItemOverview {
-    ArrayList<Item> items;
+public class ItemOverview<T>{
+    ArrayList<T> items;
 
     /**
      * An "empty" class constructor.
      */
-    public ItemOverview(){
+    public ItemOverview() {
         this.items = new ArrayList<>();   //ArrayList for storing item´s
     }
 
     /**
      * Class constructor that takes in an ArrayList of Item´s as argument.
-     * @param items   An ArrayList of the Item´s you want to overview.
+     * @param items An ArrayList of the Item´s you want to overview.
      */
-    public ItemOverview(ArrayList<Item> items){
+    public ItemOverview(ArrayList<T> items) {
         this.items = items;
     }
 
     /**
      * Get an ArrayList of every item.
-     * @return   item ArrayList.
+     * @return item ArrayList.
      */
-    public ArrayList<Item> getItems() {
+    public ArrayList<T> getItems() {
         return items;
     }
 
-    /**
-     * Add an Item object to items.
-     * @param newItem   The Item you want to add.
-     */
-    public void addItem(Item newItem){
+    public void addItem(T newItem){
         if(items.contains(newItem)){
             throw new IllegalArgumentException("This item is already registered");
         }
         items.add(newItem);
     }
 
+
+
     /**
      * Get the sum of all Item´s in items.
-     * @return   Sum of all Item´s.
+     * @return Sum of all Item´s.
      */
     public double getTotalSum(){
-        return items.stream().map(Item::getAmount).mapToDouble(Double::doubleValue).sum();
+        ArrayList<Item> castedItems = (ArrayList<Item>) items;
+        return castedItems.stream().map(Item::getAmount).mapToDouble(Double::doubleValue).sum();
     }
 }
diff --git a/src/test/java/no/ntnu/idatt1002/demo/data/Economics/IncomeOverviewTest.java b/src/test/java/no/ntnu/idatt1002/demo/data/Economics/IncomeOverviewTest.java
deleted file mode 100644
index d6745c0d95082f758b588e182367e5ddf8ca94cc..0000000000000000000000000000000000000000
--- a/src/test/java/no/ntnu/idatt1002/demo/data/Economics/IncomeOverviewTest.java
+++ /dev/null
@@ -1,43 +0,0 @@
-package no.ntnu.idatt1002.demo.data.Economics;
-
-import no.ntnu.idatt1002.demo.data.Economics.Income;
-import no.ntnu.idatt1002.demo.data.Economics.IncomeCategory;
-import no.ntnu.idatt1002.demo.data.Economics.IncomeOverview;
-import org.junit.jupiter.api.BeforeEach;
-import org.junit.jupiter.api.DisplayName;
-import org.junit.jupiter.api.Test;
-
-import static org.junit.jupiter.api.Assertions.*;
-
-public class IncomeOverviewTest {
-    IncomeOverview incomeOverview;
-
-    @BeforeEach
-    public void createItemOverView(){
-        incomeOverview = new IncomeOverview();
-    }
-    @Test
-    @DisplayName("addItem method throws exception when it should")
-    void addItemThrows(){
-        Income income = new Income("description", 59.9f, false, IncomeCategory.SALARY, "03.03.23");
-        assertThrows(IllegalArgumentException.class, () -> {incomeOverview.addItem(income); incomeOverview.addItem(income);});
-    }
-
-    @Test
-    @DisplayName("addItem method does not throw exception when it should not")
-    void addItemDoesNotThrow(){
-        Income expense = new Income("description", 59.9f, false, IncomeCategory.GIFT, "03.03.23");
-        Income income = new Income("anotherDescription", 6.5f, true, IncomeCategory.SALARY, "02.03.23");
-        assertDoesNotThrow(() -> {incomeOverview.addItem(expense); incomeOverview.addItem(income);});
-    }
-
-    @Test
-    @DisplayName("getTotalSum method gives correct amount")
-    void getTotalSumCorrectAmount(){
-        incomeOverview.addItem(new Income("description1", 59.9f, false, IncomeCategory.SALARY, "03.03.23"));
-        incomeOverview.addItem(new Income("description2", 62.4f, true, IncomeCategory.GIFT, "01.02.21"));
-        incomeOverview.addItem(new Income("description3", 9.81f, false, IncomeCategory.SALARY, "05.07.23"));
-        double totalIncome = 59.9f + 62.4f + 9.81f;
-        assertEquals(Math.round(incomeOverview.getTotalSum()), Math.round(totalIncome));
-    }
-}
\ No newline at end of file
diff --git a/src/test/java/no/ntnu/idatt1002/demo/data/Economics/ItemRegisterTest.java b/src/test/java/no/ntnu/idatt1002/demo/data/Economics/ItemRegisterTest.java
new file mode 100644
index 0000000000000000000000000000000000000000..de3ceaf69a17d52db6ca603aea1adc5c4cf77c2b
--- /dev/null
+++ b/src/test/java/no/ntnu/idatt1002/demo/data/Economics/ItemRegisterTest.java
@@ -0,0 +1,58 @@
+package no.ntnu.idatt1002.demo.data.Economics;
+
+import org.junit.jupiter.api.BeforeEach;
+import org.junit.jupiter.api.DisplayName;
+import org.junit.jupiter.api.Test;
+
+import java.util.ArrayList;
+
+import static org.junit.jupiter.api.Assertions.*;
+
+public class IncomeOverviewTest {
+    ItemRegister<Income> incomeRegister;
+
+    @BeforeEach
+    public void createItemOverView(){
+        incomeRegister = new ItemRegister();
+    }
+    @Test
+    @DisplayName("addItem method throws exception when it should")
+    void addItemThrows(){
+        Income income = new Income("description", 59.9f, false, IncomeCategory.SALARY, "03.03.23");
+        assertThrows(IllegalArgumentException.class, () -> {
+            incomeRegister.addItem(income);
+            incomeRegister.addItem(income);});
+    }
+
+    @Test
+    @DisplayName("addItem method does not throw exception when it should not")
+    void addItemDoesNotThrow(){
+        Income income1 = new Income("description", 59.9f, false, IncomeCategory.GIFT, "03.03.23");
+        Income income2 = new Income("anotherDescription", 6.5f, true, IncomeCategory.SALARY, "02.03.23");
+        assertDoesNotThrow(() -> {
+            incomeRegister.addItem(income1); incomeRegister.addItem(income2);});
+    }
+
+    @Test
+    @DisplayName("getTotalSum method gives correct amount")
+    void getTotalSumCorrectAmount(){
+        incomeRegister.addItem(new Income("description1", 59.9f, false, IncomeCategory.SALARY, "03.03.23"));
+        incomeRegister.addItem(new Income("description2", 62.4f, true, IncomeCategory.GIFT, "01.02.21"));
+        incomeRegister.addItem(new Income("description3", 9.81f, false, IncomeCategory.SALARY, "05.07.23"));
+        double totalIncome = 59.9f + 62.4f + 9.81f;
+        System.out.println(incomeRegister.getTotalSum());
+        assertEquals(Math.round(incomeRegister.getTotalSum()), Math.round(totalIncome));
+    }
+
+    @Test
+    void getIncomeBasedOnCategoryGivesCorrectIncome(){
+        incomeRegister.addItem(new Income("description1", 59.9f, false, IncomeCategory.SALARY, "03.03.23"));
+        incomeRegister.addItem(new Income("description2", 62.4f, true, IncomeCategory.GIFT, "01.02.21"));
+        incomeRegister.addItem(new Income("description3", 9.81f, false, IncomeCategory.SALARY, "05.07.23"));
+        ArrayList<Income> incomeCategory = new ArrayList<>();
+        incomeCategory.add(new Income("description1", 59.9f, false, IncomeCategory.SALARY, "03.03.23"));
+        incomeCategory.add(new Income("description3", 9.81f, false, IncomeCategory.SALARY, "05.07.23"));
+        assertEquals(incomeRegister.getItemsBasedOnCategory(IncomeCategory.SALARY), incomeCategory);
+    }
+}
+ 
\ No newline at end of file