diff --git a/src/main/java/ntnu/idatt2016/v233/SmartMat/config/CorsConfig.java b/src/main/java/ntnu/idatt2016/v233/SmartMat/config/security/CorsConfig.java
similarity index 97%
rename from src/main/java/ntnu/idatt2016/v233/SmartMat/config/CorsConfig.java
rename to src/main/java/ntnu/idatt2016/v233/SmartMat/config/security/CorsConfig.java
index 1a228e45e1da8670f4515e2dd0606a24086f7ae4..3af4d23745e94ec3404c52fcfe2e20fd9d6397a6 100644
--- a/src/main/java/ntnu/idatt2016/v233/SmartMat/config/CorsConfig.java
+++ b/src/main/java/ntnu/idatt2016/v233/SmartMat/config/security/CorsConfig.java
@@ -1,4 +1,4 @@
-package ntnu.idatt2016.v233.SmartMat.config;
+package ntnu.idatt2016.v233.SmartMat.config.security;
 
 import lombok.AllArgsConstructor;
 import ntnu.idatt2016.v233.SmartMat.config.properties.DomainProperty;
diff --git a/src/main/java/ntnu/idatt2016/v233/SmartMat/config/SecurityConfig.java b/src/main/java/ntnu/idatt2016/v233/SmartMat/config/security/SecurityConfig.java
similarity index 97%
rename from src/main/java/ntnu/idatt2016/v233/SmartMat/config/SecurityConfig.java
rename to src/main/java/ntnu/idatt2016/v233/SmartMat/config/security/SecurityConfig.java
index 446e5800a250bc12d9dd18f118dfa7f150a61a58..f5ca823df13567b7f275c91da4e5eae5011c0db8 100644
--- a/src/main/java/ntnu/idatt2016/v233/SmartMat/config/SecurityConfig.java
+++ b/src/main/java/ntnu/idatt2016/v233/SmartMat/config/security/SecurityConfig.java
@@ -1,4 +1,4 @@
-package ntnu.idatt2016.v233.SmartMat.config;
+package ntnu.idatt2016.v233.SmartMat.config.security;
 
 import lombok.AllArgsConstructor;
 import org.springframework.context.annotation.Bean;
diff --git a/src/main/java/ntnu/idatt2016/v233/SmartMat/controller/user/AchievementController.java b/src/main/java/ntnu/idatt2016/v233/SmartMat/controller/group/AchievementController.java
similarity index 97%
rename from src/main/java/ntnu/idatt2016/v233/SmartMat/controller/user/AchievementController.java
rename to src/main/java/ntnu/idatt2016/v233/SmartMat/controller/group/AchievementController.java
index 30de98804780198e9882f48b6ec6b777ef820e24..fdcd0321b0701ca738082f89dcb689c8ad764b86 100644
--- a/src/main/java/ntnu/idatt2016/v233/SmartMat/controller/user/AchievementController.java
+++ b/src/main/java/ntnu/idatt2016/v233/SmartMat/controller/group/AchievementController.java
@@ -1,4 +1,4 @@
-package ntnu.idatt2016.v233.SmartMat.controller.user;
+package ntnu.idatt2016.v233.SmartMat.controller.group;
 
 import lombok.AllArgsConstructor;
 import ntnu.idatt2016.v233.SmartMat.entity.group.Achievement;
diff --git a/src/main/java/ntnu/idatt2016/v233/SmartMat/controller/group/FridgeController.java b/src/main/java/ntnu/idatt2016/v233/SmartMat/controller/group/FridgeController.java
index 20bde998469e42d9ffaa1e8133d1f32c9ff7d17b..f2761d9d0e5ceb72ec255868b4de41bba59a84a4 100644
--- a/src/main/java/ntnu/idatt2016/v233/SmartMat/controller/group/FridgeController.java
+++ b/src/main/java/ntnu/idatt2016/v233/SmartMat/controller/group/FridgeController.java
@@ -2,7 +2,7 @@ package ntnu.idatt2016.v233.SmartMat.controller.group;
 
 import lombok.AllArgsConstructor;
 import ntnu.idatt2016.v233.SmartMat.dto.enums.Authority;
-import ntnu.idatt2016.v233.SmartMat.dto.request.FridgeProductRequest;
+import ntnu.idatt2016.v233.SmartMat.dto.request.product.FridgeProductRequest;
 import ntnu.idatt2016.v233.SmartMat.entity.fridgeProduct.FridgeProductAsso;
 import ntnu.idatt2016.v233.SmartMat.entity.group.Fridge;
 import ntnu.idatt2016.v233.SmartMat.entity.product.Product;
diff --git a/src/main/java/ntnu/idatt2016/v233/SmartMat/controller/ShoppingListController.java b/src/main/java/ntnu/idatt2016/v233/SmartMat/controller/group/ShoppingListController.java
similarity index 97%
rename from src/main/java/ntnu/idatt2016/v233/SmartMat/controller/ShoppingListController.java
rename to src/main/java/ntnu/idatt2016/v233/SmartMat/controller/group/ShoppingListController.java
index 5888530361ed719265366859bc75d407a8bc7fea..53b94501afe81b079d69971e932ad0707b21d9a2 100644
--- a/src/main/java/ntnu/idatt2016/v233/SmartMat/controller/ShoppingListController.java
+++ b/src/main/java/ntnu/idatt2016/v233/SmartMat/controller/group/ShoppingListController.java
@@ -1,4 +1,4 @@
-package ntnu.idatt2016.v233.SmartMat.controller;
+package ntnu.idatt2016.v233.SmartMat.controller.group;
 
 import java.util.Optional;
 
@@ -8,7 +8,6 @@ import ntnu.idatt2016.v233.SmartMat.entity.user.User;
 import ntnu.idatt2016.v233.SmartMat.service.group.GroupService;
 import ntnu.idatt2016.v233.SmartMat.service.product.ProductService;
 import ntnu.idatt2016.v233.SmartMat.service.user.UserService;
-import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.http.HttpStatus;
 import org.springframework.http.ResponseEntity;
 import org.springframework.security.core.Authentication;
@@ -16,8 +15,8 @@ import org.springframework.web.bind.annotation.*;
 
 
 import lombok.AllArgsConstructor;
-import ntnu.idatt2016.v233.SmartMat.entity.ShoppingList;
-import ntnu.idatt2016.v233.SmartMat.service.ShoppingListService;
+import ntnu.idatt2016.v233.SmartMat.entity.group.ShoppingList;
+import ntnu.idatt2016.v233.SmartMat.service.group.ShoppingListService;
 
 /**
  * Controller for the shopping list
diff --git a/src/main/java/ntnu/idatt2016/v233/SmartMat/controller/group/WasteController.java b/src/main/java/ntnu/idatt2016/v233/SmartMat/controller/group/WasteController.java
index 444287ff655c7dde446d25ab059dc906d92c92c4..372c8acda19be58d01bd4ea710a3f4829bd779cf 100644
--- a/src/main/java/ntnu/idatt2016/v233/SmartMat/controller/group/WasteController.java
+++ b/src/main/java/ntnu/idatt2016/v233/SmartMat/controller/group/WasteController.java
@@ -2,8 +2,8 @@ package ntnu.idatt2016.v233.SmartMat.controller.group;
 
 import java.util.List;
 import lombok.AllArgsConstructor;
-import ntnu.idatt2016.v233.SmartMat.dto.request.WasteRequest;
-import ntnu.idatt2016.v233.SmartMat.entity.Waste;
+import ntnu.idatt2016.v233.SmartMat.dto.request.group.WasteRequest;
+import ntnu.idatt2016.v233.SmartMat.entity.group.Waste;
 import ntnu.idatt2016.v233.SmartMat.service.group.GroupService;
 import ntnu.idatt2016.v233.SmartMat.service.group.WasteService;
 import ntnu.idatt2016.v233.SmartMat.util.CategoryUtil;
diff --git a/src/main/java/ntnu/idatt2016/v233/SmartMat/controller/WeeklyMenuController.java b/src/main/java/ntnu/idatt2016/v233/SmartMat/controller/group/WeeklyMenuController.java
similarity index 78%
rename from src/main/java/ntnu/idatt2016/v233/SmartMat/controller/WeeklyMenuController.java
rename to src/main/java/ntnu/idatt2016/v233/SmartMat/controller/group/WeeklyMenuController.java
index 66e959088c0931da21e24aafeeed4262a904b361..5a09f731edd989d75a2ba64f0c9fc78bd6d1f21f 100644
--- a/src/main/java/ntnu/idatt2016/v233/SmartMat/controller/WeeklyMenuController.java
+++ b/src/main/java/ntnu/idatt2016/v233/SmartMat/controller/group/WeeklyMenuController.java
@@ -1,4 +1,4 @@
-package ntnu.idatt2016.v233.SmartMat.controller;
+package ntnu.idatt2016.v233.SmartMat.controller.group;
 
 import org.springframework.web.bind.annotation.GetMapping;
 import org.springframework.web.bind.annotation.PathVariable;
@@ -9,10 +9,8 @@ import java.util.List;
 
 import org.springframework.http.ResponseEntity;
 import lombok.AllArgsConstructor;
-import ntnu.idatt2016.v233.SmartMat.dto.response.RecipeWithMatchCount;
-import ntnu.idatt2016.v233.SmartMat.dto.response.WeeklyMenuResponse;
-import ntnu.idatt2016.v233.SmartMat.service.RecipeService;
-import ntnu.idatt2016.v233.SmartMat.service.WeeklyMenuService;
+import ntnu.idatt2016.v233.SmartMat.dto.response.product.RecipeWithMatchCount;
+import ntnu.idatt2016.v233.SmartMat.service.product.RecipeService;
 
 /**
  * Controller for weekly menu
diff --git a/src/main/java/ntnu/idatt2016/v233/SmartMat/controller/AllergyController.java b/src/main/java/ntnu/idatt2016/v233/SmartMat/controller/product/AllergyController.java
similarity index 87%
rename from src/main/java/ntnu/idatt2016/v233/SmartMat/controller/AllergyController.java
rename to src/main/java/ntnu/idatt2016/v233/SmartMat/controller/product/AllergyController.java
index 578ce1f9658a4bd90d11e1089f6b83d854769605..c2bd0a247d35ce0b599da6f887103483862af7b8 100644
--- a/src/main/java/ntnu/idatt2016/v233/SmartMat/controller/AllergyController.java
+++ b/src/main/java/ntnu/idatt2016/v233/SmartMat/controller/product/AllergyController.java
@@ -1,9 +1,9 @@
-package ntnu.idatt2016.v233.SmartMat.controller;
+package ntnu.idatt2016.v233.SmartMat.controller.product;
 
 import lombok.AllArgsConstructor;
-import ntnu.idatt2016.v233.SmartMat.dto.response.AllergyResponse;
+import ntnu.idatt2016.v233.SmartMat.dto.response.product.AllergyResponse;
 import ntnu.idatt2016.v233.SmartMat.entity.product.Allergy;
-import ntnu.idatt2016.v233.SmartMat.service.AllergyService;
+import ntnu.idatt2016.v233.SmartMat.service.product.AllergyService;
 
 import java.util.List;
 
diff --git a/src/main/java/ntnu/idatt2016/v233/SmartMat/controller/product/ProductController.java b/src/main/java/ntnu/idatt2016/v233/SmartMat/controller/product/ProductController.java
index 742a2ca7741ab24ac1a770bfcafbc4fd229cab77..91d344332678dd8b8df273fe1dab89f45f7ce149 100644
--- a/src/main/java/ntnu/idatt2016/v233/SmartMat/controller/product/ProductController.java
+++ b/src/main/java/ntnu/idatt2016/v233/SmartMat/controller/product/ProductController.java
@@ -1,15 +1,14 @@
 package ntnu.idatt2016.v233.SmartMat.controller.product;
 
 import lombok.AllArgsConstructor;
-import ntnu.idatt2016.v233.SmartMat.dto.request.ProductRequest;
+import ntnu.idatt2016.v233.SmartMat.dto.request.product.ProductRequest;
 import ntnu.idatt2016.v233.SmartMat.entity.product.Allergy;
 import ntnu.idatt2016.v233.SmartMat.entity.product.Category;
 import ntnu.idatt2016.v233.SmartMat.entity.product.Product;
-import ntnu.idatt2016.v233.SmartMat.service.AllergyService;
+import ntnu.idatt2016.v233.SmartMat.service.product.AllergyService;
 import ntnu.idatt2016.v233.SmartMat.service.product.CategoryService;
 import ntnu.idatt2016.v233.SmartMat.service.product.ProductService;
 import ntnu.idatt2016.v233.SmartMat.util.CategoryUtil;
-import ntnu.idatt2016.v233.SmartMat.util.ProductUtil;
 import org.springframework.http.HttpStatus;
 import org.springframework.http.ResponseEntity;
 import org.springframework.web.bind.annotation.*;
diff --git a/src/main/java/ntnu/idatt2016/v233/SmartMat/controller/RecipeController.java b/src/main/java/ntnu/idatt2016/v233/SmartMat/controller/product/RecipeController.java
similarity index 93%
rename from src/main/java/ntnu/idatt2016/v233/SmartMat/controller/RecipeController.java
rename to src/main/java/ntnu/idatt2016/v233/SmartMat/controller/product/RecipeController.java
index 4d737a31efa32a475a99768944a6bca2c8fc8424..0fee844f2f5677689c5c7d4b09a81f01269f0922 100644
--- a/src/main/java/ntnu/idatt2016/v233/SmartMat/controller/RecipeController.java
+++ b/src/main/java/ntnu/idatt2016/v233/SmartMat/controller/product/RecipeController.java
@@ -1,11 +1,11 @@
-package ntnu.idatt2016.v233.SmartMat.controller;
+package ntnu.idatt2016.v233.SmartMat.controller.product;
 
 import org.springframework.security.core.Authentication;
 import org.springframework.web.bind.annotation.RestController;
 
 import lombok.AllArgsConstructor;
-import ntnu.idatt2016.v233.SmartMat.entity.Recipe;
-import ntnu.idatt2016.v233.SmartMat.service.RecipeService;
+import ntnu.idatt2016.v233.SmartMat.entity.product.Recipe;
+import ntnu.idatt2016.v233.SmartMat.service.product.RecipeService;
 
 import java.util.List;
 
diff --git a/src/main/java/ntnu/idatt2016/v233/SmartMat/controller/AuthenticationController.java b/src/main/java/ntnu/idatt2016/v233/SmartMat/controller/user/AuthenticationController.java
similarity index 94%
rename from src/main/java/ntnu/idatt2016/v233/SmartMat/controller/AuthenticationController.java
rename to src/main/java/ntnu/idatt2016/v233/SmartMat/controller/user/AuthenticationController.java
index f2d40cf818cb95ebf70e54e392cb16d6dc8472ec..8dd6615f0e1160a335db253194777f269990ceee 100644
--- a/src/main/java/ntnu/idatt2016/v233/SmartMat/controller/AuthenticationController.java
+++ b/src/main/java/ntnu/idatt2016/v233/SmartMat/controller/user/AuthenticationController.java
@@ -1,7 +1,7 @@
-package ntnu.idatt2016.v233.SmartMat.controller;
+package ntnu.idatt2016.v233.SmartMat.controller.user;
 
-import ntnu.idatt2016.v233.SmartMat.dto.request.LoginRequest;
-import ntnu.idatt2016.v233.SmartMat.service.TokenService;
+import ntnu.idatt2016.v233.SmartMat.dto.request.user.LoginRequest;
+import ntnu.idatt2016.v233.SmartMat.service.user.TokenService;
 import org.springframework.http.HttpStatus;
 import org.springframework.http.ResponseEntity;
 import org.springframework.security.authentication.AuthenticationManager;
diff --git a/src/main/java/ntnu/idatt2016/v233/SmartMat/controller/user/UserController.java b/src/main/java/ntnu/idatt2016/v233/SmartMat/controller/user/UserController.java
index df6a56d68705f5785f3a657061785bf871d8d30e..a94e7f96dc9e6149229c2a1058482e404fab8226 100644
--- a/src/main/java/ntnu/idatt2016/v233/SmartMat/controller/user/UserController.java
+++ b/src/main/java/ntnu/idatt2016/v233/SmartMat/controller/user/UserController.java
@@ -2,11 +2,10 @@ package ntnu.idatt2016.v233.SmartMat.controller.user;
 
 
 import lombok.AllArgsConstructor;
-import ntnu.idatt2016.v233.SmartMat.dto.request.AllergyRequest;
-import ntnu.idatt2016.v233.SmartMat.dto.request.RegisterUserRequest;
+import ntnu.idatt2016.v233.SmartMat.dto.request.product.AllergyRequest;
+import ntnu.idatt2016.v233.SmartMat.dto.request.user.RegisterUserRequest;
 import ntnu.idatt2016.v233.SmartMat.dto.enums.Authority;
-import ntnu.idatt2016.v233.SmartMat.dto.request.UpdateUserRequest;
-import ntnu.idatt2016.v233.SmartMat.entity.product.Allergy;
+import ntnu.idatt2016.v233.SmartMat.dto.request.user.UpdateUserRequest;
 import ntnu.idatt2016.v233.SmartMat.entity.user.User;
 import ntnu.idatt2016.v233.SmartMat.service.user.UserService;
 import org.springframework.http.HttpStatus;
@@ -16,9 +15,7 @@ import org.springframework.security.core.authority.SimpleGrantedAuthority;
 import org.springframework.security.crypto.password.PasswordEncoder;
 import org.springframework.web.bind.annotation.*;
 
-import java.util.ArrayList;
 import java.util.Optional;
-import java.util.stream.Collectors;
 
 
 /**
diff --git a/src/main/java/ntnu/idatt2016/v233/SmartMat/dto/request/ShoppingListRequest.java b/src/main/java/ntnu/idatt2016/v233/SmartMat/dto/request/group/ShoppingListRequest.java
similarity index 86%
rename from src/main/java/ntnu/idatt2016/v233/SmartMat/dto/request/ShoppingListRequest.java
rename to src/main/java/ntnu/idatt2016/v233/SmartMat/dto/request/group/ShoppingListRequest.java
index a2c08a96071e4ccd0f5dcfbba51aafe49d65d4a9..98d8466282d9d40ff67d2eda2baef2d1734f25cf 100644
--- a/src/main/java/ntnu/idatt2016/v233/SmartMat/dto/request/ShoppingListRequest.java
+++ b/src/main/java/ntnu/idatt2016/v233/SmartMat/dto/request/group/ShoppingListRequest.java
@@ -1,4 +1,4 @@
-package ntnu.idatt2016.v233.SmartMat.dto.request;
+package ntnu.idatt2016.v233.SmartMat.dto.request.group;
 
 import lombok.AllArgsConstructor;
 import lombok.Builder;
diff --git a/src/main/java/ntnu/idatt2016/v233/SmartMat/dto/request/WasteRequest.java b/src/main/java/ntnu/idatt2016/v233/SmartMat/dto/request/group/WasteRequest.java
similarity index 85%
rename from src/main/java/ntnu/idatt2016/v233/SmartMat/dto/request/WasteRequest.java
rename to src/main/java/ntnu/idatt2016/v233/SmartMat/dto/request/group/WasteRequest.java
index 929fc9a5a51f83fc0812cc82ba6fdf3bef1408ce..57fbb9e62f33f205fca86d195b8b45341914e4f6 100644
--- a/src/main/java/ntnu/idatt2016/v233/SmartMat/dto/request/WasteRequest.java
+++ b/src/main/java/ntnu/idatt2016/v233/SmartMat/dto/request/group/WasteRequest.java
@@ -1,4 +1,4 @@
-package ntnu.idatt2016.v233.SmartMat.dto.request;
+package ntnu.idatt2016.v233.SmartMat.dto.request.group;
 
 /**
  * WasteRequest is a record class representing a request to add a product to a fridge.
diff --git a/src/main/java/ntnu/idatt2016/v233/SmartMat/dto/request/AllergyRequest.java b/src/main/java/ntnu/idatt2016/v233/SmartMat/dto/request/product/AllergyRequest.java
similarity index 88%
rename from src/main/java/ntnu/idatt2016/v233/SmartMat/dto/request/AllergyRequest.java
rename to src/main/java/ntnu/idatt2016/v233/SmartMat/dto/request/product/AllergyRequest.java
index 88b9e45f9f5e5bf513f1309697c6ea7f8a8b39ba..f704455a403077b2894bd0a4cdc63982f79efb00 100644
--- a/src/main/java/ntnu/idatt2016/v233/SmartMat/dto/request/AllergyRequest.java
+++ b/src/main/java/ntnu/idatt2016/v233/SmartMat/dto/request/product/AllergyRequest.java
@@ -1,4 +1,4 @@
-package ntnu.idatt2016.v233.SmartMat.dto.request;
+package ntnu.idatt2016.v233.SmartMat.dto.request.product;
 
 import lombok.AllArgsConstructor;
 import lombok.Builder;
diff --git a/src/main/java/ntnu/idatt2016/v233/SmartMat/dto/request/FavoriteRequest.java b/src/main/java/ntnu/idatt2016/v233/SmartMat/dto/request/product/FavoriteRequest.java
similarity index 89%
rename from src/main/java/ntnu/idatt2016/v233/SmartMat/dto/request/FavoriteRequest.java
rename to src/main/java/ntnu/idatt2016/v233/SmartMat/dto/request/product/FavoriteRequest.java
index dcb4dd85fac54e0b69761747a1ec246fa590560b..16f916c63dd0c12bb0dc147de21deb8e5158434d 100644
--- a/src/main/java/ntnu/idatt2016/v233/SmartMat/dto/request/FavoriteRequest.java
+++ b/src/main/java/ntnu/idatt2016/v233/SmartMat/dto/request/product/FavoriteRequest.java
@@ -1,4 +1,4 @@
-package ntnu.idatt2016.v233.SmartMat.dto.request;
+package ntnu.idatt2016.v233.SmartMat.dto.request.product;
 
 import lombok.AllArgsConstructor;
 import lombok.Builder;
diff --git a/src/main/java/ntnu/idatt2016/v233/SmartMat/dto/request/FridgeProductRequest.java b/src/main/java/ntnu/idatt2016/v233/SmartMat/dto/request/product/FridgeProductRequest.java
similarity index 89%
rename from src/main/java/ntnu/idatt2016/v233/SmartMat/dto/request/FridgeProductRequest.java
rename to src/main/java/ntnu/idatt2016/v233/SmartMat/dto/request/product/FridgeProductRequest.java
index 48da0a316c85c3030849196301685c3352f4a45f..5b8fb3f2751d4c8194f6db229161b4baeee95777 100644
--- a/src/main/java/ntnu/idatt2016/v233/SmartMat/dto/request/FridgeProductRequest.java
+++ b/src/main/java/ntnu/idatt2016/v233/SmartMat/dto/request/product/FridgeProductRequest.java
@@ -1,4 +1,4 @@
-package ntnu.idatt2016.v233.SmartMat.dto.request;
+package ntnu.idatt2016.v233.SmartMat.dto.request.product;
 
 /**
  * FridgeProductRequest is a record class representing a request to add a product to a fridge.
diff --git a/src/main/java/ntnu/idatt2016/v233/SmartMat/dto/request/ProductRequest.java b/src/main/java/ntnu/idatt2016/v233/SmartMat/dto/request/product/ProductRequest.java
similarity index 90%
rename from src/main/java/ntnu/idatt2016/v233/SmartMat/dto/request/ProductRequest.java
rename to src/main/java/ntnu/idatt2016/v233/SmartMat/dto/request/product/ProductRequest.java
index 4e067b92fb65f5a12eb1945370fda2dca928a2cd..9ab92d0765316c4627c3e99d7210a5fca24fb109 100644
--- a/src/main/java/ntnu/idatt2016/v233/SmartMat/dto/request/ProductRequest.java
+++ b/src/main/java/ntnu/idatt2016/v233/SmartMat/dto/request/product/ProductRequest.java
@@ -1,4 +1,4 @@
-package ntnu.idatt2016.v233.SmartMat.dto.request;
+package ntnu.idatt2016.v233.SmartMat.dto.request.product;
 
 import lombok.Builder;
 
diff --git a/src/main/java/ntnu/idatt2016/v233/SmartMat/dto/request/RecipeRequest.java b/src/main/java/ntnu/idatt2016/v233/SmartMat/dto/request/product/RecipeRequest.java
similarity index 88%
rename from src/main/java/ntnu/idatt2016/v233/SmartMat/dto/request/RecipeRequest.java
rename to src/main/java/ntnu/idatt2016/v233/SmartMat/dto/request/product/RecipeRequest.java
index fcc9451ce21396ce2fe067869d2d19f93fc30e1b..06466befcc7f4539f4bfeba26d37141a75b9d71e 100644
--- a/src/main/java/ntnu/idatt2016/v233/SmartMat/dto/request/RecipeRequest.java
+++ b/src/main/java/ntnu/idatt2016/v233/SmartMat/dto/request/product/RecipeRequest.java
@@ -1,4 +1,4 @@
-package ntnu.idatt2016.v233.SmartMat.dto.request;
+package ntnu.idatt2016.v233.SmartMat.dto.request.product;
 
 import lombok.AllArgsConstructor;
 import lombok.Builder;
diff --git a/src/main/java/ntnu/idatt2016/v233/SmartMat/dto/request/LoginRequest.java b/src/main/java/ntnu/idatt2016/v233/SmartMat/dto/request/user/LoginRequest.java
similarity index 76%
rename from src/main/java/ntnu/idatt2016/v233/SmartMat/dto/request/LoginRequest.java
rename to src/main/java/ntnu/idatt2016/v233/SmartMat/dto/request/user/LoginRequest.java
index 709e502b3161fb3163881c5828c2868ae038c84e..edb09789ef6e1e0b6f0c63ec47376ced3eb913eb 100644
--- a/src/main/java/ntnu/idatt2016/v233/SmartMat/dto/request/LoginRequest.java
+++ b/src/main/java/ntnu/idatt2016/v233/SmartMat/dto/request/user/LoginRequest.java
@@ -1,4 +1,4 @@
-package ntnu.idatt2016.v233.SmartMat.dto.request;
+package ntnu.idatt2016.v233.SmartMat.dto.request.user;
 
 /**
  * LoginRequest is a record class representing a login request.
diff --git a/src/main/java/ntnu/idatt2016/v233/SmartMat/dto/request/RegisterUserRequest.java b/src/main/java/ntnu/idatt2016/v233/SmartMat/dto/request/user/RegisterUserRequest.java
similarity index 90%
rename from src/main/java/ntnu/idatt2016/v233/SmartMat/dto/request/RegisterUserRequest.java
rename to src/main/java/ntnu/idatt2016/v233/SmartMat/dto/request/user/RegisterUserRequest.java
index 6df60e0ff9f3f4762475bf4a5253999f1791c3f1..b4927c774f3813de4fcbbb8a510498a40377c9cd 100644
--- a/src/main/java/ntnu/idatt2016/v233/SmartMat/dto/request/RegisterUserRequest.java
+++ b/src/main/java/ntnu/idatt2016/v233/SmartMat/dto/request/user/RegisterUserRequest.java
@@ -1,4 +1,4 @@
-package ntnu.idatt2016.v233.SmartMat.dto.request;
+package ntnu.idatt2016.v233.SmartMat.dto.request.user;
 
 import java.sql.Date;
 
diff --git a/src/main/java/ntnu/idatt2016/v233/SmartMat/dto/request/UpdateUserRequest.java b/src/main/java/ntnu/idatt2016/v233/SmartMat/dto/request/user/UpdateUserRequest.java
similarity index 91%
rename from src/main/java/ntnu/idatt2016/v233/SmartMat/dto/request/UpdateUserRequest.java
rename to src/main/java/ntnu/idatt2016/v233/SmartMat/dto/request/user/UpdateUserRequest.java
index 2e7e6ccd9e9f2d9765aff9e50d7c3fd78954f747..2c927fd34b9250d235232f1262e40feb3fb5065a 100644
--- a/src/main/java/ntnu/idatt2016/v233/SmartMat/dto/request/UpdateUserRequest.java
+++ b/src/main/java/ntnu/idatt2016/v233/SmartMat/dto/request/user/UpdateUserRequest.java
@@ -1,4 +1,4 @@
-package ntnu.idatt2016.v233.SmartMat.dto.request;
+package ntnu.idatt2016.v233.SmartMat.dto.request.user;
 
 import java.sql.Date;
 import java.util.List;
diff --git a/src/main/java/ntnu/idatt2016/v233/SmartMat/dto/response/WeeklyMenuResponse.java b/src/main/java/ntnu/idatt2016/v233/SmartMat/dto/response/group/WeeklyMenuResponse.java
similarity index 88%
rename from src/main/java/ntnu/idatt2016/v233/SmartMat/dto/response/WeeklyMenuResponse.java
rename to src/main/java/ntnu/idatt2016/v233/SmartMat/dto/response/group/WeeklyMenuResponse.java
index 3e203560a7b6adcd7692eab13a2339f6685b0038..9137def5806e9fab4fdcbaa2bdb4fdda9a227999 100644
--- a/src/main/java/ntnu/idatt2016/v233/SmartMat/dto/response/WeeklyMenuResponse.java
+++ b/src/main/java/ntnu/idatt2016/v233/SmartMat/dto/response/group/WeeklyMenuResponse.java
@@ -1,4 +1,4 @@
-package ntnu.idatt2016.v233.SmartMat.dto.response;
+package ntnu.idatt2016.v233.SmartMat.dto.response.group;
 
 import lombok.AllArgsConstructor;
 import lombok.Builder;
diff --git a/src/main/java/ntnu/idatt2016/v233/SmartMat/dto/response/AllergyResponse.java b/src/main/java/ntnu/idatt2016/v233/SmartMat/dto/response/product/AllergyResponse.java
similarity index 83%
rename from src/main/java/ntnu/idatt2016/v233/SmartMat/dto/response/AllergyResponse.java
rename to src/main/java/ntnu/idatt2016/v233/SmartMat/dto/response/product/AllergyResponse.java
index fcf34981233259778721089e4377f3171c3529b6..60b8c1377152139528c9d9974a37342a3db93c84 100644
--- a/src/main/java/ntnu/idatt2016/v233/SmartMat/dto/response/AllergyResponse.java
+++ b/src/main/java/ntnu/idatt2016/v233/SmartMat/dto/response/product/AllergyResponse.java
@@ -1,4 +1,4 @@
-package ntnu.idatt2016.v233.SmartMat.dto.response;
+package ntnu.idatt2016.v233.SmartMat.dto.response.product;
 
 import lombok.AllArgsConstructor;
 import lombok.Builder;
diff --git a/src/main/java/ntnu/idatt2016/v233/SmartMat/dto/response/RecipeDetails.java b/src/main/java/ntnu/idatt2016/v233/SmartMat/dto/response/product/RecipeDetails.java
similarity index 86%
rename from src/main/java/ntnu/idatt2016/v233/SmartMat/dto/response/RecipeDetails.java
rename to src/main/java/ntnu/idatt2016/v233/SmartMat/dto/response/product/RecipeDetails.java
index f02cb54c3d000e676ab235d17f89337c166e8cbb..7018edf86a3467e87563d7fc07dfaebb56b637fe 100644
--- a/src/main/java/ntnu/idatt2016/v233/SmartMat/dto/response/RecipeDetails.java
+++ b/src/main/java/ntnu/idatt2016/v233/SmartMat/dto/response/product/RecipeDetails.java
@@ -1,4 +1,4 @@
-package ntnu.idatt2016.v233.SmartMat.dto.response;
+package ntnu.idatt2016.v233.SmartMat.dto.response.product;
 
 import lombok.AllArgsConstructor;
 import lombok.Builder;
diff --git a/src/main/java/ntnu/idatt2016/v233/SmartMat/dto/response/RecipeWithMatchCount.java b/src/main/java/ntnu/idatt2016/v233/SmartMat/dto/response/product/RecipeWithMatchCount.java
similarity index 72%
rename from src/main/java/ntnu/idatt2016/v233/SmartMat/dto/response/RecipeWithMatchCount.java
rename to src/main/java/ntnu/idatt2016/v233/SmartMat/dto/response/product/RecipeWithMatchCount.java
index 72ad5a44533b9661d9e0bfc795cdea7740d88186..c316c27ba4208d5278a3bfe5f355d90671896a80 100644
--- a/src/main/java/ntnu/idatt2016/v233/SmartMat/dto/response/RecipeWithMatchCount.java
+++ b/src/main/java/ntnu/idatt2016/v233/SmartMat/dto/response/product/RecipeWithMatchCount.java
@@ -1,9 +1,10 @@
-package ntnu.idatt2016.v233.SmartMat.dto.response;
+package ntnu.idatt2016.v233.SmartMat.dto.response.product;
 
 import lombok.AllArgsConstructor;
 import lombok.Builder;
 import lombok.Data;
 import lombok.NoArgsConstructor;
+import ntnu.idatt2016.v233.SmartMat.dto.response.product.RecipeDetails;
 
 /**
  * This class represents recipe response with match count
diff --git a/src/main/java/ntnu/idatt2016/v233/SmartMat/entity/group/Group.java b/src/main/java/ntnu/idatt2016/v233/SmartMat/entity/group/Group.java
index ad150509697077816d53dc47a97c9aa52b08a94a..bb55257ad70ef44d38e061253fd0b0ab665e7ebc 100644
--- a/src/main/java/ntnu/idatt2016/v233/SmartMat/entity/group/Group.java
+++ b/src/main/java/ntnu/idatt2016/v233/SmartMat/entity/group/Group.java
@@ -7,8 +7,6 @@ import lombok.AllArgsConstructor;
 import lombok.Builder;
 import lombok.Data;
 import lombok.NoArgsConstructor;
-import ntnu.idatt2016.v233.SmartMat.entity.ShoppingList;
-import ntnu.idatt2016.v233.SmartMat.entity.user.User;
 import org.hibernate.annotations.OnDelete;
 import org.hibernate.annotations.OnDeleteAction;
 
diff --git a/src/main/java/ntnu/idatt2016/v233/SmartMat/entity/ShoppingList.java b/src/main/java/ntnu/idatt2016/v233/SmartMat/entity/group/ShoppingList.java
similarity index 96%
rename from src/main/java/ntnu/idatt2016/v233/SmartMat/entity/ShoppingList.java
rename to src/main/java/ntnu/idatt2016/v233/SmartMat/entity/group/ShoppingList.java
index 1a8166737aec9ea5980fca8a7d4116f1d613004f..989ac1bb4f08cf9f61558f1c95ab44229accc68a 100644
--- a/src/main/java/ntnu/idatt2016/v233/SmartMat/entity/ShoppingList.java
+++ b/src/main/java/ntnu/idatt2016/v233/SmartMat/entity/group/ShoppingList.java
@@ -1,4 +1,4 @@
-package ntnu.idatt2016.v233.SmartMat.entity;
+package ntnu.idatt2016.v233.SmartMat.entity.group;
 
 
 import com.fasterxml.jackson.annotation.JsonIgnore;
diff --git a/src/main/java/ntnu/idatt2016/v233/SmartMat/entity/Waste.java b/src/main/java/ntnu/idatt2016/v233/SmartMat/entity/group/Waste.java
similarity index 96%
rename from src/main/java/ntnu/idatt2016/v233/SmartMat/entity/Waste.java
rename to src/main/java/ntnu/idatt2016/v233/SmartMat/entity/group/Waste.java
index 716a3db2566b1fff782cf055e05e5a5ac76165bb..9b5a4d4ec3a73f1624b222cbeededc9849c6658f 100644
--- a/src/main/java/ntnu/idatt2016/v233/SmartMat/entity/Waste.java
+++ b/src/main/java/ntnu/idatt2016/v233/SmartMat/entity/group/Waste.java
@@ -1,4 +1,4 @@
-package ntnu.idatt2016.v233.SmartMat.entity;
+package ntnu.idatt2016.v233.SmartMat.entity.group;
 
 import com.fasterxml.jackson.annotation.JsonIgnore;
 import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
diff --git a/src/main/java/ntnu/idatt2016/v233/SmartMat/entity/product/Product.java b/src/main/java/ntnu/idatt2016/v233/SmartMat/entity/product/Product.java
index febadac7f378791155c7cc320db0d8642fa6010e..2b7586100ea43ae21088ef9fcc163897d60b8d74 100644
--- a/src/main/java/ntnu/idatt2016/v233/SmartMat/entity/product/Product.java
+++ b/src/main/java/ntnu/idatt2016/v233/SmartMat/entity/product/Product.java
@@ -1,16 +1,13 @@
 package ntnu.idatt2016.v233.SmartMat.entity.product;
 
 import com.fasterxml.jackson.annotation.JsonIgnore;
-import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
 import com.fasterxml.jackson.annotation.JsonIncludeProperties;
 import jakarta.persistence.*;
 import lombok.AllArgsConstructor;
 import lombok.Builder;
 import lombok.Data;
 import lombok.NoArgsConstructor;
-import ntnu.idatt2016.v233.SmartMat.entity.ShoppingList;
-import ntnu.idatt2016.v233.SmartMat.entity.group.Fridge;
-import ntnu.idatt2016.v233.SmartMat.entity.Recipe;
+import ntnu.idatt2016.v233.SmartMat.entity.group.ShoppingList;
 import ntnu.idatt2016.v233.SmartMat.entity.fridgeProduct.FridgeProductAsso;
 import org.hibernate.annotations.OnDelete;
 import org.hibernate.annotations.OnDeleteAction;
diff --git a/src/main/java/ntnu/idatt2016/v233/SmartMat/entity/Recipe.java b/src/main/java/ntnu/idatt2016/v233/SmartMat/entity/product/Recipe.java
similarity index 97%
rename from src/main/java/ntnu/idatt2016/v233/SmartMat/entity/Recipe.java
rename to src/main/java/ntnu/idatt2016/v233/SmartMat/entity/product/Recipe.java
index ab7b573795477e2000362eb2c2725ea793e107f5..935e3393a4d472bc844cd0bf5dc5efcee4f68b79 100644
--- a/src/main/java/ntnu/idatt2016/v233/SmartMat/entity/Recipe.java
+++ b/src/main/java/ntnu/idatt2016/v233/SmartMat/entity/product/Recipe.java
@@ -1,4 +1,4 @@
-package ntnu.idatt2016.v233.SmartMat.entity;
+package ntnu.idatt2016.v233.SmartMat.entity.product;
 
 import java.util.ArrayList;
 import java.util.List;
diff --git a/src/main/java/ntnu/idatt2016/v233/SmartMat/entity/user/User.java b/src/main/java/ntnu/idatt2016/v233/SmartMat/entity/user/User.java
index ff2635a7b446773b566b912ab37efc4bb2db8345..2440c3fdc8aaff8ac0095479368d2d8624f8b0cd 100644
--- a/src/main/java/ntnu/idatt2016/v233/SmartMat/entity/user/User.java
+++ b/src/main/java/ntnu/idatt2016/v233/SmartMat/entity/user/User.java
@@ -6,7 +6,7 @@ import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
 import jakarta.persistence.*;
 import lombok.*;
 import ntnu.idatt2016.v233.SmartMat.dto.enums.Authority;
-import ntnu.idatt2016.v233.SmartMat.entity.Recipe;
+import ntnu.idatt2016.v233.SmartMat.entity.product.Recipe;
 import ntnu.idatt2016.v233.SmartMat.entity.group.UserGroupAsso;
 import ntnu.idatt2016.v233.SmartMat.entity.product.Allergy;
 import org.springframework.security.core.GrantedAuthority;
diff --git a/src/main/java/ntnu/idatt2016/v233/SmartMat/repository/user/AchievementRepository.java b/src/main/java/ntnu/idatt2016/v233/SmartMat/repository/group/AchievementRepository.java
similarity index 91%
rename from src/main/java/ntnu/idatt2016/v233/SmartMat/repository/user/AchievementRepository.java
rename to src/main/java/ntnu/idatt2016/v233/SmartMat/repository/group/AchievementRepository.java
index b702e3496b105cb93d8146b7d0dafb959944ea5d..41442c7a949c0a19ffb7c7d879ebd8f056c314aa 100644
--- a/src/main/java/ntnu/idatt2016/v233/SmartMat/repository/user/AchievementRepository.java
+++ b/src/main/java/ntnu/idatt2016/v233/SmartMat/repository/group/AchievementRepository.java
@@ -1,4 +1,4 @@
-package ntnu.idatt2016.v233.SmartMat.repository.user;
+package ntnu.idatt2016.v233.SmartMat.repository.group;
 
 import ntnu.idatt2016.v233.SmartMat.entity.group.Achievement;
 import org.springframework.data.jpa.repository.JpaRepository;
diff --git a/src/main/java/ntnu/idatt2016/v233/SmartMat/repository/ShoppingListRepository.java b/src/main/java/ntnu/idatt2016/v233/SmartMat/repository/group/ShoppingListRepository.java
similarity index 87%
rename from src/main/java/ntnu/idatt2016/v233/SmartMat/repository/ShoppingListRepository.java
rename to src/main/java/ntnu/idatt2016/v233/SmartMat/repository/group/ShoppingListRepository.java
index f0dd168099ad926833f0f6a438c60d98614a632b..1e0966b9949de2186bd6047552fea331ab46b252 100644
--- a/src/main/java/ntnu/idatt2016/v233/SmartMat/repository/ShoppingListRepository.java
+++ b/src/main/java/ntnu/idatt2016/v233/SmartMat/repository/group/ShoppingListRepository.java
@@ -1,9 +1,9 @@
-package ntnu.idatt2016.v233.SmartMat.repository;
+package ntnu.idatt2016.v233.SmartMat.repository.group;
 
 import java.util.List;
 import java.util.Optional;
 
-import ntnu.idatt2016.v233.SmartMat.entity.ShoppingList;
+import ntnu.idatt2016.v233.SmartMat.entity.group.ShoppingList;
 import org.springframework.data.jpa.repository.JpaRepository;
 
 /**
diff --git a/src/main/java/ntnu/idatt2016/v233/SmartMat/repository/group/WasteRepository.java b/src/main/java/ntnu/idatt2016/v233/SmartMat/repository/group/WasteRepository.java
index aaa41eb7248df4b21f53cbb0298226ecf7d64fa3..dd7694b63272d04ca3bfe801bcad55109520f888 100644
--- a/src/main/java/ntnu/idatt2016/v233/SmartMat/repository/group/WasteRepository.java
+++ b/src/main/java/ntnu/idatt2016/v233/SmartMat/repository/group/WasteRepository.java
@@ -1,7 +1,7 @@
 package ntnu.idatt2016.v233.SmartMat.repository.group;
 
 import java.util.List;
-import ntnu.idatt2016.v233.SmartMat.entity.Waste;
+import ntnu.idatt2016.v233.SmartMat.entity.group.Waste;
 import ntnu.idatt2016.v233.SmartMat.entity.group.Group;
 import org.springframework.data.jpa.repository.JpaRepository;
 import org.springframework.data.jpa.repository.Query;
diff --git a/src/main/java/ntnu/idatt2016/v233/SmartMat/repository/AllergyRepository.java b/src/main/java/ntnu/idatt2016/v233/SmartMat/repository/product/AllergyRepository.java
similarity index 92%
rename from src/main/java/ntnu/idatt2016/v233/SmartMat/repository/AllergyRepository.java
rename to src/main/java/ntnu/idatt2016/v233/SmartMat/repository/product/AllergyRepository.java
index 539e6349851f9dee0c3aee195e8e11f2e1ea6b59..fbf141bd70815a45761b65a9f10ed4f9521c0c65 100644
--- a/src/main/java/ntnu/idatt2016/v233/SmartMat/repository/AllergyRepository.java
+++ b/src/main/java/ntnu/idatt2016/v233/SmartMat/repository/product/AllergyRepository.java
@@ -1,4 +1,4 @@
-package ntnu.idatt2016.v233.SmartMat.repository;
+package ntnu.idatt2016.v233.SmartMat.repository.product;
 
 import ntnu.idatt2016.v233.SmartMat.entity.product.Allergy;
 
diff --git a/src/main/java/ntnu/idatt2016/v233/SmartMat/repository/RecipeRepository.java b/src/main/java/ntnu/idatt2016/v233/SmartMat/repository/product/RecipeRepository.java
similarity index 90%
rename from src/main/java/ntnu/idatt2016/v233/SmartMat/repository/RecipeRepository.java
rename to src/main/java/ntnu/idatt2016/v233/SmartMat/repository/product/RecipeRepository.java
index ace138c6f0374c10191072d2fee5d013e795e3dd..e6c4bede5d8eac14ed90aa530db4f1c6f3e81449 100644
--- a/src/main/java/ntnu/idatt2016/v233/SmartMat/repository/RecipeRepository.java
+++ b/src/main/java/ntnu/idatt2016/v233/SmartMat/repository/product/RecipeRepository.java
@@ -1,11 +1,10 @@
-package ntnu.idatt2016.v233.SmartMat.repository;
+package ntnu.idatt2016.v233.SmartMat.repository.product;
 
 import java.util.List;
 
-import ntnu.idatt2016.v233.SmartMat.entity.Recipe;
+import ntnu.idatt2016.v233.SmartMat.entity.product.Recipe;
 import org.springframework.data.jpa.repository.JpaRepository;
 import org.springframework.data.jpa.repository.Query;
-import org.springframework.data.repository.query.Param;
 
 /**
  * This interface defines the methods for the recipe repository
diff --git a/src/main/java/ntnu/idatt2016/v233/SmartMat/service/group/FridgeService.java b/src/main/java/ntnu/idatt2016/v233/SmartMat/service/group/FridgeService.java
index e7ae96f171e7aedb2624f7a5f8363f474e53c0ec..7552574b66282d870173ace6ae40ab8fa34a6eea 100644
--- a/src/main/java/ntnu/idatt2016/v233/SmartMat/service/group/FridgeService.java
+++ b/src/main/java/ntnu/idatt2016/v233/SmartMat/service/group/FridgeService.java
@@ -1,8 +1,8 @@
 package ntnu.idatt2016.v233.SmartMat.service.group;
 
 import lombok.AllArgsConstructor;
-import ntnu.idatt2016.v233.SmartMat.dto.request.FridgeProductRequest;
-import ntnu.idatt2016.v233.SmartMat.entity.Waste;
+import ntnu.idatt2016.v233.SmartMat.dto.request.product.FridgeProductRequest;
+import ntnu.idatt2016.v233.SmartMat.entity.group.Waste;
 import ntnu.idatt2016.v233.SmartMat.entity.fridgeProduct.FridgeProductAsso;
 import ntnu.idatt2016.v233.SmartMat.entity.group.Fridge;
 import ntnu.idatt2016.v233.SmartMat.entity.group.Group;
@@ -14,13 +14,10 @@ import ntnu.idatt2016.v233.SmartMat.repository.product.FridgeProductAssoRepo;
 import ntnu.idatt2016.v233.SmartMat.service.product.ProductService;
 
 import ntnu.idatt2016.v233.SmartMat.util.GroupUtil;
-import ntnu.idatt2016.v233.SmartMat.util.ProductUtil;
-import org.springframework.context.annotation.aspectj.EnableSpringConfigured;
 import org.springframework.stereotype.Service;
 
 import java.sql.Timestamp;
 import java.time.LocalDate;
-import java.util.Date;
 import java.util.Optional;
 
 /**
diff --git a/src/main/java/ntnu/idatt2016/v233/SmartMat/service/group/GroupService.java b/src/main/java/ntnu/idatt2016/v233/SmartMat/service/group/GroupService.java
index fb3e22f7e9958b0878bb09fe236237f896648002..7094051a004d94b6d2864fc9e7a9d60fac773f72 100644
--- a/src/main/java/ntnu/idatt2016/v233/SmartMat/service/group/GroupService.java
+++ b/src/main/java/ntnu/idatt2016/v233/SmartMat/service/group/GroupService.java
@@ -2,12 +2,12 @@ package ntnu.idatt2016.v233.SmartMat.service.group;
 
 import jakarta.transaction.Transactional;
 import lombok.AllArgsConstructor;
-import ntnu.idatt2016.v233.SmartMat.entity.ShoppingList;
+import ntnu.idatt2016.v233.SmartMat.entity.group.ShoppingList;
 import ntnu.idatt2016.v233.SmartMat.entity.group.Fridge;
 import ntnu.idatt2016.v233.SmartMat.entity.group.Group;
 import ntnu.idatt2016.v233.SmartMat.entity.group.UserGroupAsso;
 import ntnu.idatt2016.v233.SmartMat.entity.group.UserGroupId;
-import ntnu.idatt2016.v233.SmartMat.repository.ShoppingListRepository;
+import ntnu.idatt2016.v233.SmartMat.repository.group.ShoppingListRepository;
 import ntnu.idatt2016.v233.SmartMat.repository.group.FridgeRepository;
 import ntnu.idatt2016.v233.SmartMat.repository.group.GroupRepository;
 import ntnu.idatt2016.v233.SmartMat.repository.group.UserGroupAssoRepository;
diff --git a/src/main/java/ntnu/idatt2016/v233/SmartMat/service/ShoppingListService.java b/src/main/java/ntnu/idatt2016/v233/SmartMat/service/group/ShoppingListService.java
similarity index 95%
rename from src/main/java/ntnu/idatt2016/v233/SmartMat/service/ShoppingListService.java
rename to src/main/java/ntnu/idatt2016/v233/SmartMat/service/group/ShoppingListService.java
index 2d5701c93820fd18f97dc73b27b9776ba580c8b1..646177fea1a235941c26d8bb35aeaca406b2371a 100644
--- a/src/main/java/ntnu/idatt2016/v233/SmartMat/service/ShoppingListService.java
+++ b/src/main/java/ntnu/idatt2016/v233/SmartMat/service/group/ShoppingListService.java
@@ -1,4 +1,4 @@
-package ntnu.idatt2016.v233.SmartMat.service;
+package ntnu.idatt2016.v233.SmartMat.service.group;
 
 import java.util.List;
 import java.util.Optional;
@@ -7,8 +7,8 @@ import ntnu.idatt2016.v233.SmartMat.repository.product.ProductRepository;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
-import ntnu.idatt2016.v233.SmartMat.entity.ShoppingList;
-import ntnu.idatt2016.v233.SmartMat.repository.ShoppingListRepository;
+import ntnu.idatt2016.v233.SmartMat.entity.group.ShoppingList;
+import ntnu.idatt2016.v233.SmartMat.repository.group.ShoppingListRepository;
 
 /**
  * Service for the shopping list
diff --git a/src/main/java/ntnu/idatt2016/v233/SmartMat/service/group/WasteService.java b/src/main/java/ntnu/idatt2016/v233/SmartMat/service/group/WasteService.java
index 20615c62e65ba9805211656fc5c924d57dca563c..daa26dbc5da3c1a1f9457eb424d6062b8435dafc 100644
--- a/src/main/java/ntnu/idatt2016/v233/SmartMat/service/group/WasteService.java
+++ b/src/main/java/ntnu/idatt2016/v233/SmartMat/service/group/WasteService.java
@@ -1,13 +1,10 @@
 package ntnu.idatt2016.v233.SmartMat.service.group;
 
-import java.nio.channels.FileChannel;
-import java.sql.Date;
 import java.sql.Timestamp;
-import java.util.ArrayList;
 import java.util.List;
 import lombok.AllArgsConstructor;
-import ntnu.idatt2016.v233.SmartMat.dto.request.WasteRequest;
-import ntnu.idatt2016.v233.SmartMat.entity.Waste;
+import ntnu.idatt2016.v233.SmartMat.dto.request.group.WasteRequest;
+import ntnu.idatt2016.v233.SmartMat.entity.group.Waste;
 import ntnu.idatt2016.v233.SmartMat.entity.group.Group;
 import ntnu.idatt2016.v233.SmartMat.entity.product.Product;
 import ntnu.idatt2016.v233.SmartMat.repository.group.GroupRepository;
diff --git a/src/main/java/ntnu/idatt2016/v233/SmartMat/service/WeeklyMenuService.java b/src/main/java/ntnu/idatt2016/v233/SmartMat/service/group/WeeklyMenuService.java
similarity index 86%
rename from src/main/java/ntnu/idatt2016/v233/SmartMat/service/WeeklyMenuService.java
rename to src/main/java/ntnu/idatt2016/v233/SmartMat/service/group/WeeklyMenuService.java
index 2fedb932097f72b492e003266d59c5788f42a3ed..c8a7bfcbcc7d1644e4c7eb5e50e034396733bb52 100644
--- a/src/main/java/ntnu/idatt2016/v233/SmartMat/service/WeeklyMenuService.java
+++ b/src/main/java/ntnu/idatt2016/v233/SmartMat/service/group/WeeklyMenuService.java
@@ -1,4 +1,4 @@
-package ntnu.idatt2016.v233.SmartMat.service;
+package ntnu.idatt2016.v233.SmartMat.service.group;
 
 import java.util.List;
 import java.util.stream.Collectors;
@@ -6,8 +6,8 @@ import java.util.stream.Collectors;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
-import ntnu.idatt2016.v233.SmartMat.dto.response.WeeklyMenuResponse;
-import ntnu.idatt2016.v233.SmartMat.repository.RecipeRepository;
+import ntnu.idatt2016.v233.SmartMat.dto.response.group.WeeklyMenuResponse;
+import ntnu.idatt2016.v233.SmartMat.repository.product.RecipeRepository;
 
 /**
  * Service class for weekly menu
diff --git a/src/main/java/ntnu/idatt2016/v233/SmartMat/service/AllergyService.java b/src/main/java/ntnu/idatt2016/v233/SmartMat/service/product/AllergyService.java
similarity index 88%
rename from src/main/java/ntnu/idatt2016/v233/SmartMat/service/AllergyService.java
rename to src/main/java/ntnu/idatt2016/v233/SmartMat/service/product/AllergyService.java
index 20fa670787178e384f2964f0a7c3c68b0e27d6c0..a20246f04344dedcb641cc09392f606a1987a7ea 100644
--- a/src/main/java/ntnu/idatt2016/v233/SmartMat/service/AllergyService.java
+++ b/src/main/java/ntnu/idatt2016/v233/SmartMat/service/product/AllergyService.java
@@ -1,4 +1,4 @@
-package ntnu.idatt2016.v233.SmartMat.service;
+package ntnu.idatt2016.v233.SmartMat.service.product;
 
 import java.util.List;
 import java.util.Optional;
@@ -7,9 +7,9 @@ import java.util.stream.Collectors;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
-import ntnu.idatt2016.v233.SmartMat.dto.response.AllergyResponse;
+import ntnu.idatt2016.v233.SmartMat.dto.response.product.AllergyResponse;
 import ntnu.idatt2016.v233.SmartMat.entity.product.Allergy;
-import ntnu.idatt2016.v233.SmartMat.repository.AllergyRepository;
+import ntnu.idatt2016.v233.SmartMat.repository.product.AllergyRepository;
 
 /**
  * Service for allergies
diff --git a/src/main/java/ntnu/idatt2016/v233/SmartMat/service/RecipeService.java b/src/main/java/ntnu/idatt2016/v233/SmartMat/service/product/RecipeService.java
similarity index 95%
rename from src/main/java/ntnu/idatt2016/v233/SmartMat/service/RecipeService.java
rename to src/main/java/ntnu/idatt2016/v233/SmartMat/service/product/RecipeService.java
index 04a38cb5573a47d211777de2a5945a1861ebe391..8758e6d508150cef8693ac43725dd380add30b63 100644
--- a/src/main/java/ntnu/idatt2016/v233/SmartMat/service/RecipeService.java
+++ b/src/main/java/ntnu/idatt2016/v233/SmartMat/service/product/RecipeService.java
@@ -1,10 +1,10 @@
-package ntnu.idatt2016.v233.SmartMat.service;
+package ntnu.idatt2016.v233.SmartMat.service.product;
 
-import ntnu.idatt2016.v233.SmartMat.dto.response.RecipeDetails;
-import ntnu.idatt2016.v233.SmartMat.dto.response.RecipeWithMatchCount;
-import ntnu.idatt2016.v233.SmartMat.entity.Recipe;
+import ntnu.idatt2016.v233.SmartMat.dto.response.product.RecipeDetails;
+import ntnu.idatt2016.v233.SmartMat.dto.response.product.RecipeWithMatchCount;
+import ntnu.idatt2016.v233.SmartMat.entity.product.Recipe;
 import ntnu.idatt2016.v233.SmartMat.entity.user.User;
-import ntnu.idatt2016.v233.SmartMat.repository.RecipeRepository;
+import ntnu.idatt2016.v233.SmartMat.repository.product.RecipeRepository;
 
 import java.util.ArrayList;
 import java.util.Arrays;
diff --git a/src/main/java/ntnu/idatt2016/v233/SmartMat/service/user/AchievementService.java b/src/main/java/ntnu/idatt2016/v233/SmartMat/service/user/AchievementService.java
index 7ef5c28bb2f00ca939d49679fdf75d6a54440c0e..9f4c139545fd82239993a8b36ff1af2bc370566c 100644
--- a/src/main/java/ntnu/idatt2016/v233/SmartMat/service/user/AchievementService.java
+++ b/src/main/java/ntnu/idatt2016/v233/SmartMat/service/user/AchievementService.java
@@ -2,7 +2,7 @@ package ntnu.idatt2016.v233.SmartMat.service.user;
 
 import lombok.AllArgsConstructor;
 import ntnu.idatt2016.v233.SmartMat.entity.group.Achievement;
-import ntnu.idatt2016.v233.SmartMat.repository.user.AchievementRepository;
+import ntnu.idatt2016.v233.SmartMat.repository.group.AchievementRepository;
 import org.springframework.stereotype.Service;
 
 import java.util.List;
diff --git a/src/main/java/ntnu/idatt2016/v233/SmartMat/service/TokenService.java b/src/main/java/ntnu/idatt2016/v233/SmartMat/service/user/TokenService.java
similarity index 97%
rename from src/main/java/ntnu/idatt2016/v233/SmartMat/service/TokenService.java
rename to src/main/java/ntnu/idatt2016/v233/SmartMat/service/user/TokenService.java
index 6f83285bf463003a8b8901b1089ad2ce5519ac80..2602cc1c9878f0c1cfa54e10fe1c1c496a17b3eb 100644
--- a/src/main/java/ntnu/idatt2016/v233/SmartMat/service/TokenService.java
+++ b/src/main/java/ntnu/idatt2016/v233/SmartMat/service/user/TokenService.java
@@ -1,4 +1,4 @@
-package ntnu.idatt2016.v233.SmartMat.service;
+package ntnu.idatt2016.v233.SmartMat.service.user;
 
 import org.springframework.security.core.Authentication;
 import org.springframework.security.core.GrantedAuthority;
diff --git a/src/main/java/ntnu/idatt2016/v233/SmartMat/service/user/UserService.java b/src/main/java/ntnu/idatt2016/v233/SmartMat/service/user/UserService.java
index 7dc252ed2df343c200ede3430235873aae6bf2bf..37ced9f8e3ac80441b4dfdea16067d0e422cff0a 100644
--- a/src/main/java/ntnu/idatt2016/v233/SmartMat/service/user/UserService.java
+++ b/src/main/java/ntnu/idatt2016/v233/SmartMat/service/user/UserService.java
@@ -1,21 +1,17 @@
 package ntnu.idatt2016.v233.SmartMat.service.user;
 
 import lombok.AllArgsConstructor;
-import ntnu.idatt2016.v233.SmartMat.dto.enums.Authority;
-import ntnu.idatt2016.v233.SmartMat.entity.Recipe;
+import ntnu.idatt2016.v233.SmartMat.entity.product.Recipe;
 import ntnu.idatt2016.v233.SmartMat.entity.product.Allergy;
 import ntnu.idatt2016.v233.SmartMat.entity.user.User;
-import ntnu.idatt2016.v233.SmartMat.repository.AllergyRepository;
+import ntnu.idatt2016.v233.SmartMat.repository.product.AllergyRepository;
 import ntnu.idatt2016.v233.SmartMat.repository.user.UserRepository;
-import ntnu.idatt2016.v233.SmartMat.service.RecipeService;
+import ntnu.idatt2016.v233.SmartMat.service.product.RecipeService;
 import org.springframework.http.HttpStatus;
 import org.springframework.http.ResponseEntity;
 import org.springframework.security.core.userdetails.UsernameNotFoundException;
 import org.springframework.stereotype.Service;
 
-import jakarta.persistence.EntityNotFoundException;
-
-import java.nio.channels.FileChannel;
 import java.util.List;
 import java.util.Optional;
 
diff --git a/src/main/java/ntnu/idatt2016/v233/SmartMat/util/StatisticUtil.java b/src/main/java/ntnu/idatt2016/v233/SmartMat/util/StatisticUtil.java
index 9ef7a57c7de6cc2845fc8c44bb3dbb0fc9ecb64a..7089d5eb3553a752f5afc6afe982a8d6a74818e1 100644
--- a/src/main/java/ntnu/idatt2016/v233/SmartMat/util/StatisticUtil.java
+++ b/src/main/java/ntnu/idatt2016/v233/SmartMat/util/StatisticUtil.java
@@ -1,8 +1,7 @@
 package ntnu.idatt2016.v233.SmartMat.util;
 
-import ntnu.idatt2016.v233.SmartMat.entity.Waste;
+import ntnu.idatt2016.v233.SmartMat.entity.group.Waste;
 
-import java.sql.Date;
 import java.sql.Timestamp;
 import java.time.LocalDate;
 import java.time.LocalDateTime;
diff --git a/src/test/java/ntnu/idatt2016/v233/SmartMat/controller/user/AchievementControllerTest.java b/src/test/java/ntnu/idatt2016/v233/SmartMat/controller/group/AchievementControllerTest.java
similarity index 96%
rename from src/test/java/ntnu/idatt2016/v233/SmartMat/controller/user/AchievementControllerTest.java
rename to src/test/java/ntnu/idatt2016/v233/SmartMat/controller/group/AchievementControllerTest.java
index 02209b61614b8715df0c0a50b9db34ee0c44f81d..6e267fe652792d799e6b9c7e1c0a2b5f47459e46 100644
--- a/src/test/java/ntnu/idatt2016/v233/SmartMat/controller/user/AchievementControllerTest.java
+++ b/src/test/java/ntnu/idatt2016/v233/SmartMat/controller/group/AchievementControllerTest.java
@@ -1,6 +1,7 @@
-package ntnu.idatt2016.v233.SmartMat.controller.user;
+package ntnu.idatt2016.v233.SmartMat.controller.group;
 
 import com.fasterxml.jackson.databind.ObjectMapper;
+import ntnu.idatt2016.v233.SmartMat.controller.group.AchievementController;
 import ntnu.idatt2016.v233.SmartMat.entity.group.Achievement;
 import ntnu.idatt2016.v233.SmartMat.service.user.AchievementService;
 import org.junit.jupiter.api.BeforeEach;
diff --git a/src/test/java/ntnu/idatt2016/v233/SmartMat/controller/group/FridgeControllerTest.java b/src/test/java/ntnu/idatt2016/v233/SmartMat/controller/group/FridgeControllerTest.java
index cb449e2fb28229ad92e252504c1d88208c68094e..b29d163ed57dd53994d4f616a2684a9ded0af1b6 100644
--- a/src/test/java/ntnu/idatt2016/v233/SmartMat/controller/group/FridgeControllerTest.java
+++ b/src/test/java/ntnu/idatt2016/v233/SmartMat/controller/group/FridgeControllerTest.java
@@ -2,7 +2,7 @@ package ntnu.idatt2016.v233.SmartMat.controller.group;
 
 import com.fasterxml.jackson.databind.ObjectMapper;
 import ntnu.idatt2016.v233.SmartMat.dto.enums.Authority;
-import ntnu.idatt2016.v233.SmartMat.dto.request.FridgeProductRequest;
+import ntnu.idatt2016.v233.SmartMat.dto.request.product.FridgeProductRequest;
 import ntnu.idatt2016.v233.SmartMat.entity.fridgeProduct.FridgeProductAsso;
 import ntnu.idatt2016.v233.SmartMat.entity.group.Fridge;
 import ntnu.idatt2016.v233.SmartMat.entity.product.Product;
diff --git a/src/test/java/ntnu/idatt2016/v233/SmartMat/controller/ShoppingListControllerTest.java b/src/test/java/ntnu/idatt2016/v233/SmartMat/controller/group/ShoppingListControllerTest.java
similarity index 97%
rename from src/test/java/ntnu/idatt2016/v233/SmartMat/controller/ShoppingListControllerTest.java
rename to src/test/java/ntnu/idatt2016/v233/SmartMat/controller/group/ShoppingListControllerTest.java
index 4afee683e846a9830fc16a01fbe95880a1d4a210..410c01b1b603327d361f8122c1894adfaa04dc51 100644
--- a/src/test/java/ntnu/idatt2016/v233/SmartMat/controller/ShoppingListControllerTest.java
+++ b/src/test/java/ntnu/idatt2016/v233/SmartMat/controller/group/ShoppingListControllerTest.java
@@ -1,14 +1,14 @@
-package ntnu.idatt2016.v233.SmartMat.controller;
+package ntnu.idatt2016.v233.SmartMat.controller.group;
 
+import ntnu.idatt2016.v233.SmartMat.controller.group.ShoppingListController;
 import ntnu.idatt2016.v233.SmartMat.dto.enums.Authority;
-import ntnu.idatt2016.v233.SmartMat.dto.request.ShoppingListRequest;
-import ntnu.idatt2016.v233.SmartMat.entity.ShoppingList;
+import ntnu.idatt2016.v233.SmartMat.entity.group.ShoppingList;
 import ntnu.idatt2016.v233.SmartMat.entity.group.Group;
 import ntnu.idatt2016.v233.SmartMat.entity.group.UserGroupAsso;
 import ntnu.idatt2016.v233.SmartMat.entity.group.UserGroupId;
 import ntnu.idatt2016.v233.SmartMat.entity.product.Product;
 import ntnu.idatt2016.v233.SmartMat.entity.user.User;
-import ntnu.idatt2016.v233.SmartMat.service.ShoppingListService;
+import ntnu.idatt2016.v233.SmartMat.service.group.ShoppingListService;
 import ntnu.idatt2016.v233.SmartMat.service.group.GroupService;
 import ntnu.idatt2016.v233.SmartMat.service.product.ProductService;
 import ntnu.idatt2016.v233.SmartMat.service.user.UserService;
diff --git a/src/test/java/ntnu/idatt2016/v233/SmartMat/controller/group/WasteControllerTest.java b/src/test/java/ntnu/idatt2016/v233/SmartMat/controller/group/WasteControllerTest.java
index c500c8cb95ace90bdcceb03835b2a2fc47751148..b8ef69fd3f6673fcc157bec8015bf1855bea7107 100644
--- a/src/test/java/ntnu/idatt2016/v233/SmartMat/controller/group/WasteControllerTest.java
+++ b/src/test/java/ntnu/idatt2016/v233/SmartMat/controller/group/WasteControllerTest.java
@@ -3,8 +3,6 @@ package ntnu.idatt2016.v233.SmartMat.controller.group;
 import static org.hamcrest.Matchers.hasSize;
 import static org.junit.jupiter.api.Assertions.*;
 import static org.mockito.Mockito.*;
-import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.*;
-import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.*;
 
 import java.sql.Timestamp;
 import java.util.*;
@@ -20,17 +18,15 @@ import org.junit.jupiter.api.Test;
 import org.mockito.Mock;
 import org.mockito.MockitoAnnotations;
 import org.springframework.http.HttpStatus;
-import org.springframework.http.MediaType;
 import org.springframework.http.ResponseEntity;
 import org.springframework.security.core.Authentication;
 import org.springframework.security.core.GrantedAuthority;
 import org.springframework.security.core.authority.SimpleGrantedAuthority;
-import org.springframework.test.web.servlet.MockMvc;
 
 import com.fasterxml.jackson.databind.ObjectMapper;
 
-import ntnu.idatt2016.v233.SmartMat.dto.request.WasteRequest;
-import ntnu.idatt2016.v233.SmartMat.entity.Waste;
+import ntnu.idatt2016.v233.SmartMat.dto.request.group.WasteRequest;
+import ntnu.idatt2016.v233.SmartMat.entity.group.Waste;
 import ntnu.idatt2016.v233.SmartMat.entity.group.Group;
 import ntnu.idatt2016.v233.SmartMat.entity.product.Product;
 import ntnu.idatt2016.v233.SmartMat.service.group.WasteService;
diff --git a/src/test/java/ntnu/idatt2016/v233/SmartMat/controller/WeeklyMenuControllerTest.java b/src/test/java/ntnu/idatt2016/v233/SmartMat/controller/group/WeeklyMenuControllerTest.java
similarity index 82%
rename from src/test/java/ntnu/idatt2016/v233/SmartMat/controller/WeeklyMenuControllerTest.java
rename to src/test/java/ntnu/idatt2016/v233/SmartMat/controller/group/WeeklyMenuControllerTest.java
index 0d58818c8137e7b6d0e1d33b1aaaaf8dffae75aa..8957c6ef6c5c94541415c92b533f7254e9b90f2d 100644
--- a/src/test/java/ntnu/idatt2016/v233/SmartMat/controller/WeeklyMenuControllerTest.java
+++ b/src/test/java/ntnu/idatt2016/v233/SmartMat/controller/group/WeeklyMenuControllerTest.java
@@ -1,10 +1,11 @@
-package ntnu.idatt2016.v233.SmartMat.controller;
-
-import ntnu.idatt2016.v233.SmartMat.dto.response.RecipeDetails;
-import ntnu.idatt2016.v233.SmartMat.dto.response.RecipeWithMatchCount;
-import ntnu.idatt2016.v233.SmartMat.dto.response.WeeklyMenuResponse;
-import ntnu.idatt2016.v233.SmartMat.service.RecipeService;
-import ntnu.idatt2016.v233.SmartMat.service.WeeklyMenuService;
+package ntnu.idatt2016.v233.SmartMat.controller.group;
+
+import ntnu.idatt2016.v233.SmartMat.controller.group.WeeklyMenuController;
+import ntnu.idatt2016.v233.SmartMat.dto.response.product.RecipeDetails;
+import ntnu.idatt2016.v233.SmartMat.dto.response.product.RecipeWithMatchCount;
+import ntnu.idatt2016.v233.SmartMat.dto.response.group.WeeklyMenuResponse;
+import ntnu.idatt2016.v233.SmartMat.service.product.RecipeService;
+import ntnu.idatt2016.v233.SmartMat.service.group.WeeklyMenuService;
 import org.junit.jupiter.api.BeforeEach;
 import org.junit.jupiter.api.Test;
 import org.junit.jupiter.api.extension.ExtendWith;
diff --git a/src/test/java/ntnu/idatt2016/v233/SmartMat/controller/AllergyControllerTest.java b/src/test/java/ntnu/idatt2016/v233/SmartMat/controller/product/AllergyControllerTest.java
similarity index 90%
rename from src/test/java/ntnu/idatt2016/v233/SmartMat/controller/AllergyControllerTest.java
rename to src/test/java/ntnu/idatt2016/v233/SmartMat/controller/product/AllergyControllerTest.java
index 4d021b8141e93c35197cd1139b4b947240691240..58a4f9cc4b5373131b49988bc54f0f256f764b74 100644
--- a/src/test/java/ntnu/idatt2016/v233/SmartMat/controller/AllergyControllerTest.java
+++ b/src/test/java/ntnu/idatt2016/v233/SmartMat/controller/product/AllergyControllerTest.java
@@ -1,8 +1,9 @@
-package ntnu.idatt2016.v233.SmartMat.controller;
+package ntnu.idatt2016.v233.SmartMat.controller.product;
 
-import ntnu.idatt2016.v233.SmartMat.dto.response.AllergyResponse;
+import ntnu.idatt2016.v233.SmartMat.controller.product.AllergyController;
+import ntnu.idatt2016.v233.SmartMat.dto.response.product.AllergyResponse;
 import ntnu.idatt2016.v233.SmartMat.entity.product.Allergy;
-import ntnu.idatt2016.v233.SmartMat.service.AllergyService;
+import ntnu.idatt2016.v233.SmartMat.service.product.AllergyService;
 import org.junit.jupiter.api.BeforeEach;
 import org.junit.jupiter.api.Test;
 import org.junit.jupiter.api.extension.ExtendWith;
diff --git a/src/test/java/ntnu/idatt2016/v233/SmartMat/controller/product/ProductControllerTest.java b/src/test/java/ntnu/idatt2016/v233/SmartMat/controller/product/ProductControllerTest.java
index 4c6bce4dbf8ecd7d238c54ed7ce6c577d2f9b03f..819426190a04ee45f703aaec254095290fcc2539 100644
--- a/src/test/java/ntnu/idatt2016/v233/SmartMat/controller/product/ProductControllerTest.java
+++ b/src/test/java/ntnu/idatt2016/v233/SmartMat/controller/product/ProductControllerTest.java
@@ -1,10 +1,10 @@
 package ntnu.idatt2016.v233.SmartMat.controller.product;
 
-import ntnu.idatt2016.v233.SmartMat.dto.request.ProductRequest;
+import ntnu.idatt2016.v233.SmartMat.dto.request.product.ProductRequest;
 import ntnu.idatt2016.v233.SmartMat.entity.product.Allergy;
 import ntnu.idatt2016.v233.SmartMat.entity.product.Category;
 import ntnu.idatt2016.v233.SmartMat.entity.product.Product;
-import ntnu.idatt2016.v233.SmartMat.service.AllergyService;
+import ntnu.idatt2016.v233.SmartMat.service.product.AllergyService;
 import ntnu.idatt2016.v233.SmartMat.service.product.CategoryService;
 import ntnu.idatt2016.v233.SmartMat.service.product.ProductService;
 import org.junit.jupiter.api.BeforeEach;
diff --git a/src/test/java/ntnu/idatt2016/v233/SmartMat/controller/RecipeControllerTest.java b/src/test/java/ntnu/idatt2016/v233/SmartMat/controller/product/RecipeControllerTest.java
similarity index 93%
rename from src/test/java/ntnu/idatt2016/v233/SmartMat/controller/RecipeControllerTest.java
rename to src/test/java/ntnu/idatt2016/v233/SmartMat/controller/product/RecipeControllerTest.java
index ed41407f5427b2eeb51fe1d0e14f15c891b5f064..78f8380abe671d8f0f7cf3aa2162829bc37c70ee 100644
--- a/src/test/java/ntnu/idatt2016/v233/SmartMat/controller/RecipeControllerTest.java
+++ b/src/test/java/ntnu/idatt2016/v233/SmartMat/controller/product/RecipeControllerTest.java
@@ -1,9 +1,10 @@
-package ntnu.idatt2016.v233.SmartMat.controller;
+package ntnu.idatt2016.v233.SmartMat.controller.product;
 
 import com.fasterxml.jackson.databind.ObjectMapper;
+import ntnu.idatt2016.v233.SmartMat.controller.product.RecipeController;
 import ntnu.idatt2016.v233.SmartMat.dto.enums.Authority;
-import ntnu.idatt2016.v233.SmartMat.entity.Recipe;
-import ntnu.idatt2016.v233.SmartMat.service.RecipeService;
+import ntnu.idatt2016.v233.SmartMat.entity.product.Recipe;
+import ntnu.idatt2016.v233.SmartMat.service.product.RecipeService;
 import org.junit.jupiter.api.BeforeEach;
 import org.junit.jupiter.api.Test;
 import org.junit.jupiter.api.extension.ExtendWith;
@@ -11,12 +12,10 @@ import org.mockito.InjectMocks;
 import org.mockito.Mock;
 import org.mockito.junit.jupiter.MockitoExtension;
 import org.springframework.http.HttpStatus;
-import org.springframework.http.MediaType;
 import org.springframework.http.ResponseEntity;
 import org.springframework.security.core.Authentication;
 import org.springframework.security.core.GrantedAuthority;
 import org.springframework.security.core.authority.SimpleGrantedAuthority;
-import org.springframework.security.core.context.SecurityContextHolder;
 import org.springframework.test.web.servlet.MockMvc;
 import org.springframework.test.web.servlet.setup.MockMvcBuilders;
 
@@ -28,7 +27,6 @@ import java.util.Optional;
 import static org.junit.jupiter.api.Assertions.assertEquals;
 import static org.mockito.Mockito.mock;
 import static org.mockito.Mockito.when;
-import static org.springframework.security.test.web.servlet.request.SecurityMockMvcRequestPostProcessors.authentication;
 import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.get;
 import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.post;
 import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.content;
diff --git a/src/test/java/ntnu/idatt2016/v233/SmartMat/controller/AuthenticationControllerTest.java b/src/test/java/ntnu/idatt2016/v233/SmartMat/controller/user/AuthenticationControllerTest.java
similarity index 93%
rename from src/test/java/ntnu/idatt2016/v233/SmartMat/controller/AuthenticationControllerTest.java
rename to src/test/java/ntnu/idatt2016/v233/SmartMat/controller/user/AuthenticationControllerTest.java
index bb30a2a4077f7b4c1cab472b371f18d4ff402154..19b25fe3a9aa2b051cbc2fcc6e34d696e52e3384 100644
--- a/src/test/java/ntnu/idatt2016/v233/SmartMat/controller/AuthenticationControllerTest.java
+++ b/src/test/java/ntnu/idatt2016/v233/SmartMat/controller/user/AuthenticationControllerTest.java
@@ -1,7 +1,8 @@
-package ntnu.idatt2016.v233.SmartMat.controller;
+package ntnu.idatt2016.v233.SmartMat.controller.user;
 
-import ntnu.idatt2016.v233.SmartMat.dto.request.LoginRequest;
-import ntnu.idatt2016.v233.SmartMat.service.TokenService;
+import ntnu.idatt2016.v233.SmartMat.controller.user.AuthenticationController;
+import ntnu.idatt2016.v233.SmartMat.dto.request.user.LoginRequest;
+import ntnu.idatt2016.v233.SmartMat.service.user.TokenService;
 import org.junit.jupiter.api.BeforeEach;
 import org.junit.jupiter.api.Test;
 import org.springframework.http.HttpStatus;
@@ -10,7 +11,6 @@ import org.springframework.security.authentication.AuthenticationManager;
 import org.springframework.security.authentication.BadCredentialsException;
 import org.springframework.security.authentication.UsernamePasswordAuthenticationToken;
 import org.springframework.security.core.Authentication;
-import org.springframework.security.core.AuthenticationException;
 
 import static org.junit.jupiter.api.Assertions.assertEquals;
 import static org.mockito.Mockito.*;
diff --git a/src/test/java/ntnu/idatt2016/v233/SmartMat/controller/user/UserControllerTest.java b/src/test/java/ntnu/idatt2016/v233/SmartMat/controller/user/UserControllerTest.java
index 6a0dc9a03acc367004b2cbe28e699263de0a684c..b39cf5d6ecdccc630701bcc9505dc3164e311d9e 100644
--- a/src/test/java/ntnu/idatt2016/v233/SmartMat/controller/user/UserControllerTest.java
+++ b/src/test/java/ntnu/idatt2016/v233/SmartMat/controller/user/UserControllerTest.java
@@ -1,9 +1,9 @@
 package ntnu.idatt2016.v233.SmartMat.controller.user;
 
 import ntnu.idatt2016.v233.SmartMat.dto.enums.Authority;
-import ntnu.idatt2016.v233.SmartMat.dto.request.AllergyRequest;
-import ntnu.idatt2016.v233.SmartMat.dto.request.RegisterUserRequest;
-import ntnu.idatt2016.v233.SmartMat.dto.request.UpdateUserRequest;
+import ntnu.idatt2016.v233.SmartMat.dto.request.product.AllergyRequest;
+import ntnu.idatt2016.v233.SmartMat.dto.request.user.RegisterUserRequest;
+import ntnu.idatt2016.v233.SmartMat.dto.request.user.UpdateUserRequest;
 import ntnu.idatt2016.v233.SmartMat.entity.user.User;
 import ntnu.idatt2016.v233.SmartMat.repository.user.UserRepository;
 import ntnu.idatt2016.v233.SmartMat.service.user.UserService;
diff --git a/src/test/java/ntnu/idatt2016/v233/SmartMat/dto/request/ShoppingListRequestTest.java b/src/test/java/ntnu/idatt2016/v233/SmartMat/dto/request/group/ShoppingListRequestTest.java
similarity index 90%
rename from src/test/java/ntnu/idatt2016/v233/SmartMat/dto/request/ShoppingListRequestTest.java
rename to src/test/java/ntnu/idatt2016/v233/SmartMat/dto/request/group/ShoppingListRequestTest.java
index 89927c2eb4a976f2447ca8fcb6a621fc64000d33..23f84784a4a7416155419fd37fc7914f61fde851 100644
--- a/src/test/java/ntnu/idatt2016/v233/SmartMat/dto/request/ShoppingListRequestTest.java
+++ b/src/test/java/ntnu/idatt2016/v233/SmartMat/dto/request/group/ShoppingListRequestTest.java
@@ -1,5 +1,6 @@
-package ntnu.idatt2016.v233.SmartMat.dto.request;
+package ntnu.idatt2016.v233.SmartMat.dto.request.group;
 
+import ntnu.idatt2016.v233.SmartMat.dto.request.group.ShoppingListRequest;
 import org.junit.jupiter.api.Test;
 
 import static org.junit.jupiter.api.Assertions.*;
diff --git a/src/test/java/ntnu/idatt2016/v233/SmartMat/dto/request/AllergyRequestTest.java b/src/test/java/ntnu/idatt2016/v233/SmartMat/dto/request/product/AllergyRequestTest.java
similarity index 91%
rename from src/test/java/ntnu/idatt2016/v233/SmartMat/dto/request/AllergyRequestTest.java
rename to src/test/java/ntnu/idatt2016/v233/SmartMat/dto/request/product/AllergyRequestTest.java
index dcc5247439a298732cf14ab5942c9401334e2ce7..ff625ffc5c2aabf4990673d558349f260d0b5089 100644
--- a/src/test/java/ntnu/idatt2016/v233/SmartMat/dto/request/AllergyRequestTest.java
+++ b/src/test/java/ntnu/idatt2016/v233/SmartMat/dto/request/product/AllergyRequestTest.java
@@ -1,5 +1,6 @@
-package ntnu.idatt2016.v233.SmartMat.dto.request;
+package ntnu.idatt2016.v233.SmartMat.dto.request.product;
 
+import ntnu.idatt2016.v233.SmartMat.dto.request.product.AllergyRequest;
 import org.junit.jupiter.api.Test;
 
 import static org.junit.jupiter.api.Assertions.*;
diff --git a/src/test/java/ntnu/idatt2016/v233/SmartMat/dto/request/FavoriteRequestTest.java b/src/test/java/ntnu/idatt2016/v233/SmartMat/dto/request/product/FavoriteRequestTest.java
similarity index 91%
rename from src/test/java/ntnu/idatt2016/v233/SmartMat/dto/request/FavoriteRequestTest.java
rename to src/test/java/ntnu/idatt2016/v233/SmartMat/dto/request/product/FavoriteRequestTest.java
index 57d29996ec5cd15a0cfe20221007c049a1adddf5..1c0e1644041f32ea6ed6391e6189bd37af064d21 100644
--- a/src/test/java/ntnu/idatt2016/v233/SmartMat/dto/request/FavoriteRequestTest.java
+++ b/src/test/java/ntnu/idatt2016/v233/SmartMat/dto/request/product/FavoriteRequestTest.java
@@ -1,5 +1,6 @@
-package ntnu.idatt2016.v233.SmartMat.dto.request;
+package ntnu.idatt2016.v233.SmartMat.dto.request.product;
 
+import ntnu.idatt2016.v233.SmartMat.dto.request.product.FavoriteRequest;
 import org.junit.jupiter.api.Test;
 
 import static org.junit.jupiter.api.Assertions.*;
diff --git a/src/test/java/ntnu/idatt2016/v233/SmartMat/dto/request/RecipeRequestTest.java b/src/test/java/ntnu/idatt2016/v233/SmartMat/dto/request/product/RecipeRequestTest.java
similarity index 91%
rename from src/test/java/ntnu/idatt2016/v233/SmartMat/dto/request/RecipeRequestTest.java
rename to src/test/java/ntnu/idatt2016/v233/SmartMat/dto/request/product/RecipeRequestTest.java
index 31c7ae30ea21a5dd51477a5cda60114ff065cea0..9e437371761b559666c7c0dfdb2057c4248591be 100644
--- a/src/test/java/ntnu/idatt2016/v233/SmartMat/dto/request/RecipeRequestTest.java
+++ b/src/test/java/ntnu/idatt2016/v233/SmartMat/dto/request/product/RecipeRequestTest.java
@@ -1,5 +1,6 @@
-package ntnu.idatt2016.v233.SmartMat.dto.request;
+package ntnu.idatt2016.v233.SmartMat.dto.request.product;
 
+import ntnu.idatt2016.v233.SmartMat.dto.request.product.RecipeRequest;
 import org.junit.jupiter.api.Test;
 
 import static org.junit.jupiter.api.Assertions.*;
diff --git a/src/test/java/ntnu/idatt2016/v233/SmartMat/dto/response/AllergyResponseTest.java b/src/test/java/ntnu/idatt2016/v233/SmartMat/dto/response/group/AllergyResponseTest.java
similarity index 91%
rename from src/test/java/ntnu/idatt2016/v233/SmartMat/dto/response/AllergyResponseTest.java
rename to src/test/java/ntnu/idatt2016/v233/SmartMat/dto/response/group/AllergyResponseTest.java
index 5b2736765a7a40499ea3e70805352af5d8051998..75742093bf1ee5592f1624aa1ea9501780e5e133 100644
--- a/src/test/java/ntnu/idatt2016/v233/SmartMat/dto/response/AllergyResponseTest.java
+++ b/src/test/java/ntnu/idatt2016/v233/SmartMat/dto/response/group/AllergyResponseTest.java
@@ -1,5 +1,6 @@
-package ntnu.idatt2016.v233.SmartMat.dto.response;
+package ntnu.idatt2016.v233.SmartMat.dto.response.group;
 
+import ntnu.idatt2016.v233.SmartMat.dto.response.product.AllergyResponse;
 import org.junit.jupiter.api.Test;
 
 import static org.junit.jupiter.api.Assertions.*;
diff --git a/src/test/java/ntnu/idatt2016/v233/SmartMat/dto/response/WeeklyMenuResponseTest.java b/src/test/java/ntnu/idatt2016/v233/SmartMat/dto/response/group/WeeklyMenuResponseTest.java
similarity index 94%
rename from src/test/java/ntnu/idatt2016/v233/SmartMat/dto/response/WeeklyMenuResponseTest.java
rename to src/test/java/ntnu/idatt2016/v233/SmartMat/dto/response/group/WeeklyMenuResponseTest.java
index e474c6ae5dc844359b0cce49a170992790c48152..4dd1b4cdaf2b9793056b0736dda3a1d7e07f71c3 100644
--- a/src/test/java/ntnu/idatt2016/v233/SmartMat/dto/response/WeeklyMenuResponseTest.java
+++ b/src/test/java/ntnu/idatt2016/v233/SmartMat/dto/response/group/WeeklyMenuResponseTest.java
@@ -1,5 +1,6 @@
-package ntnu.idatt2016.v233.SmartMat.dto.response;
+package ntnu.idatt2016.v233.SmartMat.dto.response.group;
 
+import ntnu.idatt2016.v233.SmartMat.dto.response.group.WeeklyMenuResponse;
 import org.junit.jupiter.api.Test;
 
 import static org.junit.jupiter.api.Assertions.*;
diff --git a/src/test/java/ntnu/idatt2016/v233/SmartMat/dto/response/RecipeDetailsTest.java b/src/test/java/ntnu/idatt2016/v233/SmartMat/dto/response/product/RecipeDetailsTest.java
similarity index 91%
rename from src/test/java/ntnu/idatt2016/v233/SmartMat/dto/response/RecipeDetailsTest.java
rename to src/test/java/ntnu/idatt2016/v233/SmartMat/dto/response/product/RecipeDetailsTest.java
index 0859efb8464015d8b7609a902f50c3a1d50305ad..71013dfa3fb70c5367ff3283a4f006651eee78f2 100644
--- a/src/test/java/ntnu/idatt2016/v233/SmartMat/dto/response/RecipeDetailsTest.java
+++ b/src/test/java/ntnu/idatt2016/v233/SmartMat/dto/response/product/RecipeDetailsTest.java
@@ -1,5 +1,6 @@
-package ntnu.idatt2016.v233.SmartMat.dto.response;
+package ntnu.idatt2016.v233.SmartMat.dto.response.product;
 
+import ntnu.idatt2016.v233.SmartMat.dto.response.product.RecipeDetails;
 import org.junit.jupiter.api.Test;
 
 import static org.junit.jupiter.api.Assertions.*;
diff --git a/src/test/java/ntnu/idatt2016/v233/SmartMat/dto/response/RecipeWithMatchCountTest.java b/src/test/java/ntnu/idatt2016/v233/SmartMat/dto/response/product/RecipeWithMatchCountTest.java
similarity index 90%
rename from src/test/java/ntnu/idatt2016/v233/SmartMat/dto/response/RecipeWithMatchCountTest.java
rename to src/test/java/ntnu/idatt2016/v233/SmartMat/dto/response/product/RecipeWithMatchCountTest.java
index 8a67d631ced67d55c8bd9905e3fc41693414b640..068627edeacf5ba699be80752c63680f5df049b7 100644
--- a/src/test/java/ntnu/idatt2016/v233/SmartMat/dto/response/RecipeWithMatchCountTest.java
+++ b/src/test/java/ntnu/idatt2016/v233/SmartMat/dto/response/product/RecipeWithMatchCountTest.java
@@ -1,5 +1,7 @@
-package ntnu.idatt2016.v233.SmartMat.dto.response;
+package ntnu.idatt2016.v233.SmartMat.dto.response.product;
 
+import ntnu.idatt2016.v233.SmartMat.dto.response.product.RecipeDetails;
+import ntnu.idatt2016.v233.SmartMat.dto.response.product.RecipeWithMatchCount;
 import org.junit.jupiter.api.Test;
 
 import static org.junit.jupiter.api.Assertions.*;
diff --git a/src/test/java/ntnu/idatt2016/v233/SmartMat/entity/WasteTest.java b/src/test/java/ntnu/idatt2016/v233/SmartMat/entity/group/WasteTest.java
similarity index 93%
rename from src/test/java/ntnu/idatt2016/v233/SmartMat/entity/WasteTest.java
rename to src/test/java/ntnu/idatt2016/v233/SmartMat/entity/group/WasteTest.java
index 7f8a08621cf6b3b0f77818103a017bf8d6477d61..06372e35408213152514e49f2beb29639845acfb 100644
--- a/src/test/java/ntnu/idatt2016/v233/SmartMat/entity/WasteTest.java
+++ b/src/test/java/ntnu/idatt2016/v233/SmartMat/entity/group/WasteTest.java
@@ -1,5 +1,6 @@
-package ntnu.idatt2016.v233.SmartMat.entity;
+package ntnu.idatt2016.v233.SmartMat.entity.group;
 
+import ntnu.idatt2016.v233.SmartMat.entity.group.Waste;
 import org.junit.jupiter.api.Test;
 
 import static org.junit.jupiter.api.Assertions.*;
diff --git a/src/test/java/ntnu/idatt2016/v233/SmartMat/entity/RecipeTest.java b/src/test/java/ntnu/idatt2016/v233/SmartMat/entity/product/RecipeTest.java
similarity index 91%
rename from src/test/java/ntnu/idatt2016/v233/SmartMat/entity/RecipeTest.java
rename to src/test/java/ntnu/idatt2016/v233/SmartMat/entity/product/RecipeTest.java
index 01f8b12bd58277e9467b296ea7b9d7f402d00395..52d50d3b21dc52f211f0e57322c3648cb241dfcd 100644
--- a/src/test/java/ntnu/idatt2016/v233/SmartMat/entity/RecipeTest.java
+++ b/src/test/java/ntnu/idatt2016/v233/SmartMat/entity/product/RecipeTest.java
@@ -1,5 +1,6 @@
-package ntnu.idatt2016.v233.SmartMat.entity;
+package ntnu.idatt2016.v233.SmartMat.entity.product;
 
+import ntnu.idatt2016.v233.SmartMat.entity.product.Recipe;
 import org.junit.jupiter.api.Test;
 
 import static org.junit.jupiter.api.Assertions.*;
diff --git a/src/test/java/ntnu/idatt2016/v233/SmartMat/repository/group/GroupRepositoryTest.java b/src/test/java/ntnu/idatt2016/v233/SmartMat/repository/group/GroupRepositoryTest.java
index 52d6a2934e28d1f12f1083f67fc1dbdcc7218f1d..cbff7444a5c5af55ea65e39d2de79448eb6ccf5e 100644
--- a/src/test/java/ntnu/idatt2016/v233/SmartMat/repository/group/GroupRepositoryTest.java
+++ b/src/test/java/ntnu/idatt2016/v233/SmartMat/repository/group/GroupRepositoryTest.java
@@ -5,10 +5,8 @@ import static org.junit.jupiter.api.Assertions.*;
 
 import java.util.ArrayList;
 import java.util.Collections;
-import java.util.List;
 import java.util.Optional;
 
-import ntnu.idatt2016.v233.SmartMat.repository.user.AchievementRepository;
 import ntnu.idatt2016.v233.SmartMat.repository.user.UserRepository;
 import org.junit.jupiter.api.BeforeEach;
 import org.junit.jupiter.api.Test;
diff --git a/src/test/java/ntnu/idatt2016/v233/SmartMat/repository/ShoppingListRepositoryTest.java b/src/test/java/ntnu/idatt2016/v233/SmartMat/repository/group/ShoppingListRepositoryTest.java
similarity index 95%
rename from src/test/java/ntnu/idatt2016/v233/SmartMat/repository/ShoppingListRepositoryTest.java
rename to src/test/java/ntnu/idatt2016/v233/SmartMat/repository/group/ShoppingListRepositoryTest.java
index a379523dff34f9c5189f923f6b0b70b601babf19..117bf900c1670a440f959f41e3079f0969ca063b 100644
--- a/src/test/java/ntnu/idatt2016/v233/SmartMat/repository/ShoppingListRepositoryTest.java
+++ b/src/test/java/ntnu/idatt2016/v233/SmartMat/repository/group/ShoppingListRepositoryTest.java
@@ -1,4 +1,4 @@
-package ntnu.idatt2016.v233.SmartMat.repository;
+package ntnu.idatt2016.v233.SmartMat.repository.group;
 
 import static org.junit.jupiter.api.Assertions.*;
 
@@ -9,11 +9,12 @@ import ntnu.idatt2016.v233.SmartMat.entity.group.Group;
 import ntnu.idatt2016.v233.SmartMat.entity.group.UserGroupAsso;
 import ntnu.idatt2016.v233.SmartMat.entity.group.UserGroupId;
 import ntnu.idatt2016.v233.SmartMat.entity.user.User;
+import ntnu.idatt2016.v233.SmartMat.repository.group.ShoppingListRepository;
 import org.junit.jupiter.api.Test;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.boot.test.autoconfigure.orm.jpa.DataJpaTest;
 
-import ntnu.idatt2016.v233.SmartMat.entity.ShoppingList;
+import ntnu.idatt2016.v233.SmartMat.entity.group.ShoppingList;
 import org.springframework.boot.test.autoconfigure.orm.jpa.TestEntityManager;
 
 @DataJpaTest
diff --git a/src/test/java/ntnu/idatt2016/v233/SmartMat/repository/group/WasteRepositoryTest.java b/src/test/java/ntnu/idatt2016/v233/SmartMat/repository/group/WasteRepositoryTest.java
index 9c044f143524aef726d05dc28b507e017393d298..d428ef5b79c3da1e4de95739d5aa4e71872ab1d5 100644
--- a/src/test/java/ntnu/idatt2016/v233/SmartMat/repository/group/WasteRepositoryTest.java
+++ b/src/test/java/ntnu/idatt2016/v233/SmartMat/repository/group/WasteRepositoryTest.java
@@ -1,21 +1,11 @@
 package ntnu.idatt2016.v233.SmartMat.repository.group;
 
-import org.junit.jupiter.api.BeforeEach;
-import org.junit.jupiter.api.Test;
 import org.junit.jupiter.api.extension.ExtendWith;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.boot.test.autoconfigure.orm.jpa.DataJpaTest;
 import org.springframework.test.context.junit.jupiter.SpringExtension;
 
-import java.sql.Timestamp;
-import java.time.LocalDateTime;
-import java.util.List;
-import java.util.Optional;
-
-import ntnu.idatt2016.v233.SmartMat.entity.Waste;
-import ntnu.idatt2016.v233.SmartMat.repository.group.WasteRepository;
-
-import static org.junit.jupiter.api.Assertions.*;
+import ntnu.idatt2016.v233.SmartMat.entity.group.Waste;
 
 @ExtendWith(SpringExtension.class)
 @DataJpaTest
diff --git a/src/test/java/ntnu/idatt2016/v233/SmartMat/repository/AllergyRepositoryTest.java b/src/test/java/ntnu/idatt2016/v233/SmartMat/repository/product/AllergyRepositoryTest.java
similarity index 96%
rename from src/test/java/ntnu/idatt2016/v233/SmartMat/repository/AllergyRepositoryTest.java
rename to src/test/java/ntnu/idatt2016/v233/SmartMat/repository/product/AllergyRepositoryTest.java
index ea353c7d772e02fb69630bbe859dbd6b986f0003..93d24464ec03e5a6b987d16d2c9de6bd0cea954f 100644
--- a/src/test/java/ntnu/idatt2016/v233/SmartMat/repository/AllergyRepositoryTest.java
+++ b/src/test/java/ntnu/idatt2016/v233/SmartMat/repository/product/AllergyRepositoryTest.java
@@ -1,7 +1,8 @@
-package ntnu.idatt2016.v233.SmartMat.repository;
+package ntnu.idatt2016.v233.SmartMat.repository.product;
 
 import ntnu.idatt2016.v233.SmartMat.entity.product.Allergy;
 import ntnu.idatt2016.v233.SmartMat.entity.product.Product;
+import ntnu.idatt2016.v233.SmartMat.repository.product.AllergyRepository;
 import ntnu.idatt2016.v233.SmartMat.repository.product.ProductRepository;
 import org.junit.jupiter.api.Assertions;
 import org.junit.jupiter.api.DisplayName;
diff --git a/src/test/java/ntnu/idatt2016/v233/SmartMat/repository/ProductRepositoryTest.java b/src/test/java/ntnu/idatt2016/v233/SmartMat/repository/product/ProductRepositoryTest.java
similarity index 98%
rename from src/test/java/ntnu/idatt2016/v233/SmartMat/repository/ProductRepositoryTest.java
rename to src/test/java/ntnu/idatt2016/v233/SmartMat/repository/product/ProductRepositoryTest.java
index fcac75dee2c4154e7c123325f7e5a79984a0648b..8e50b9e4b642b0afcac26d01f91ee4f64d476a9d 100644
--- a/src/test/java/ntnu/idatt2016/v233/SmartMat/repository/ProductRepositoryTest.java
+++ b/src/test/java/ntnu/idatt2016/v233/SmartMat/repository/product/ProductRepositoryTest.java
@@ -1,4 +1,4 @@
-package ntnu.idatt2016.v233.SmartMat.repository;
+package ntnu.idatt2016.v233.SmartMat.repository.product;
 
 import java.util.List;
 import java.util.Optional;
diff --git a/src/test/java/ntnu/idatt2016/v233/SmartMat/repository/RecipeRepositoryTest.java b/src/test/java/ntnu/idatt2016/v233/SmartMat/repository/product/RecipeRepositoryTest.java
similarity index 95%
rename from src/test/java/ntnu/idatt2016/v233/SmartMat/repository/RecipeRepositoryTest.java
rename to src/test/java/ntnu/idatt2016/v233/SmartMat/repository/product/RecipeRepositoryTest.java
index 6674f3310e794624c4dd5bd34ea560ae2ea958a7..d28b0518570ad050b0d35482176722cd21ca1754 100644
--- a/src/test/java/ntnu/idatt2016/v233/SmartMat/repository/RecipeRepositoryTest.java
+++ b/src/test/java/ntnu/idatt2016/v233/SmartMat/repository/product/RecipeRepositoryTest.java
@@ -1,4 +1,4 @@
-package ntnu.idatt2016.v233.SmartMat.repository;
+package ntnu.idatt2016.v233.SmartMat.repository.product;
 
 import static org.junit.jupiter.api.Assertions.*;
 
@@ -6,11 +6,12 @@ import java.util.List;
 import java.util.Optional;
 
 import ntnu.idatt2016.v233.SmartMat.entity.user.User;
+import ntnu.idatt2016.v233.SmartMat.repository.product.RecipeRepository;
 import org.junit.jupiter.api.Test;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.boot.test.autoconfigure.orm.jpa.DataJpaTest;
 
-import ntnu.idatt2016.v233.SmartMat.entity.Recipe;
+import ntnu.idatt2016.v233.SmartMat.entity.product.Recipe;
 import org.springframework.boot.test.autoconfigure.orm.jpa.TestEntityManager;
 
 @DataJpaTest
diff --git a/src/test/java/ntnu/idatt2016/v233/SmartMat/repository/user/AchievementRepositoryTest.java b/src/test/java/ntnu/idatt2016/v233/SmartMat/repository/user/AchievementRepositoryTest.java
index b89a2872fb10601511de392bc9a26206f9e12f8e..1f098c463cc56fc964de59a2d9533e63eb2f9bd1 100644
--- a/src/test/java/ntnu/idatt2016/v233/SmartMat/repository/user/AchievementRepositoryTest.java
+++ b/src/test/java/ntnu/idatt2016/v233/SmartMat/repository/user/AchievementRepositoryTest.java
@@ -10,7 +10,7 @@ import org.springframework.test.context.junit.jupiter.SpringExtension;
 import java.util.Optional;
 
 import ntnu.idatt2016.v233.SmartMat.entity.group.Achievement;
-import ntnu.idatt2016.v233.SmartMat.repository.user.AchievementRepository;
+import ntnu.idatt2016.v233.SmartMat.repository.group.AchievementRepository;
 
 import static org.junit.jupiter.api.Assertions.*;
 
diff --git a/src/test/java/ntnu/idatt2016/v233/SmartMat/repository/UserRepositoryTest.java b/src/test/java/ntnu/idatt2016/v233/SmartMat/repository/user/UserRepositoryTest.java
similarity index 97%
rename from src/test/java/ntnu/idatt2016/v233/SmartMat/repository/UserRepositoryTest.java
rename to src/test/java/ntnu/idatt2016/v233/SmartMat/repository/user/UserRepositoryTest.java
index 5df6c84e015db2761bb7f4c4c3486ed634e179bf..c8d67e7ad5692ab359ec3cb5ad8b83fbc2edf50f 100644
--- a/src/test/java/ntnu/idatt2016/v233/SmartMat/repository/UserRepositoryTest.java
+++ b/src/test/java/ntnu/idatt2016/v233/SmartMat/repository/user/UserRepositoryTest.java
@@ -1,9 +1,9 @@
-package ntnu.idatt2016.v233.SmartMat.repository;
+package ntnu.idatt2016.v233.SmartMat.repository.user;
 
 import ntnu.idatt2016.v233.SmartMat.dto.enums.Authority;
-import ntnu.idatt2016.v233.SmartMat.entity.group.Group;
 import ntnu.idatt2016.v233.SmartMat.entity.product.Allergy;
 import ntnu.idatt2016.v233.SmartMat.entity.user.User;
+import ntnu.idatt2016.v233.SmartMat.repository.product.AllergyRepository;
 import ntnu.idatt2016.v233.SmartMat.repository.user.UserRepository;
 import org.junit.jupiter.api.BeforeEach;
 import org.junit.jupiter.api.Test;
@@ -12,8 +12,6 @@ import org.springframework.boot.test.autoconfigure.orm.jpa.DataJpaTest;
 import org.springframework.boot.test.autoconfigure.orm.jpa.TestEntityManager;
 
 import java.sql.Date;
-import java.util.ArrayList;
-import java.util.HashSet;
 import java.util.List;
 import java.util.Optional;
 
diff --git a/src/test/java/ntnu/idatt2016/v233/SmartMat/service/group/FridgeServiceTest.java b/src/test/java/ntnu/idatt2016/v233/SmartMat/service/group/FridgeServiceTest.java
index 5db6d64914fe288c30a415f204603ee8a694a7ee..0517dbd17195efb4d848419656fa130141e93705 100644
--- a/src/test/java/ntnu/idatt2016/v233/SmartMat/service/group/FridgeServiceTest.java
+++ b/src/test/java/ntnu/idatt2016/v233/SmartMat/service/group/FridgeServiceTest.java
@@ -5,8 +5,8 @@ import static org.mockito.ArgumentMatchers.any;
 import static org.mockito.Mockito.verify;
 import static org.mockito.Mockito.when;
 
-import ntnu.idatt2016.v233.SmartMat.dto.request.FridgeProductRequest;
-import ntnu.idatt2016.v233.SmartMat.entity.Waste;
+import ntnu.idatt2016.v233.SmartMat.dto.request.product.FridgeProductRequest;
+import ntnu.idatt2016.v233.SmartMat.entity.group.Waste;
 import ntnu.idatt2016.v233.SmartMat.entity.fridgeProduct.FridgeProductAsso;
 import ntnu.idatt2016.v233.SmartMat.entity.group.Fridge;
 import ntnu.idatt2016.v233.SmartMat.entity.group.Group;
diff --git a/src/test/java/ntnu/idatt2016/v233/SmartMat/service/group/GroupServiceTest.java b/src/test/java/ntnu/idatt2016/v233/SmartMat/service/group/GroupServiceTest.java
index 3136a7253e101843d8b0d3722a9ba2998fefc820..0a7890fe6bfae8ef88ffd61304204bb60df7d29b 100644
--- a/src/test/java/ntnu/idatt2016/v233/SmartMat/service/group/GroupServiceTest.java
+++ b/src/test/java/ntnu/idatt2016/v233/SmartMat/service/group/GroupServiceTest.java
@@ -5,7 +5,7 @@ import ntnu.idatt2016.v233.SmartMat.entity.group.Group;
 import ntnu.idatt2016.v233.SmartMat.entity.group.UserGroupAsso;
 import ntnu.idatt2016.v233.SmartMat.entity.group.UserGroupId;
 import ntnu.idatt2016.v233.SmartMat.entity.user.User;
-import ntnu.idatt2016.v233.SmartMat.repository.ShoppingListRepository;
+import ntnu.idatt2016.v233.SmartMat.repository.group.ShoppingListRepository;
 import ntnu.idatt2016.v233.SmartMat.repository.group.FridgeRepository;
 import ntnu.idatt2016.v233.SmartMat.repository.group.GroupRepository;
 import ntnu.idatt2016.v233.SmartMat.repository.group.UserGroupAssoRepository;
diff --git a/src/test/java/ntnu/idatt2016/v233/SmartMat/service/ShoppingListServiceTest.java b/src/test/java/ntnu/idatt2016/v233/SmartMat/service/group/ShoppingListServiceTest.java
similarity index 92%
rename from src/test/java/ntnu/idatt2016/v233/SmartMat/service/ShoppingListServiceTest.java
rename to src/test/java/ntnu/idatt2016/v233/SmartMat/service/group/ShoppingListServiceTest.java
index 954761ab742f9c055b1540fa3a154d2b5e3f33cb..0c165a72863e39cfdaf0ddec5d2c394050e9f1f7 100644
--- a/src/test/java/ntnu/idatt2016/v233/SmartMat/service/ShoppingListServiceTest.java
+++ b/src/test/java/ntnu/idatt2016/v233/SmartMat/service/group/ShoppingListServiceTest.java
@@ -1,8 +1,9 @@
-package ntnu.idatt2016.v233.SmartMat.service;
+package ntnu.idatt2016.v233.SmartMat.service.group;
 
 import ntnu.idatt2016.v233.SmartMat.entity.group.Group;
 import ntnu.idatt2016.v233.SmartMat.entity.group.UserGroupAsso;
 import ntnu.idatt2016.v233.SmartMat.entity.user.User;
+import ntnu.idatt2016.v233.SmartMat.service.group.ShoppingListService;
 import org.junit.jupiter.api.BeforeEach;
 import org.junit.jupiter.api.Test;
 import org.mockito.InjectMocks;
@@ -13,8 +14,8 @@ import java.util.Arrays;
 import java.util.List;
 import java.util.Optional;
 
-import ntnu.idatt2016.v233.SmartMat.entity.ShoppingList;
-import ntnu.idatt2016.v233.SmartMat.repository.ShoppingListRepository;
+import ntnu.idatt2016.v233.SmartMat.entity.group.ShoppingList;
+import ntnu.idatt2016.v233.SmartMat.repository.group.ShoppingListRepository;
 
 import static org.mockito.Mockito.*;
 import static org.junit.jupiter.api.Assertions.*;
diff --git a/src/test/java/ntnu/idatt2016/v233/SmartMat/service/group/WasteServiceTest.java b/src/test/java/ntnu/idatt2016/v233/SmartMat/service/group/WasteServiceTest.java
index 1517a1cb1facca1f21a73193428dd2fae12cdb5b..10a228a42025f3fb686e0fbf13f0ce198db2aa34 100644
--- a/src/test/java/ntnu/idatt2016/v233/SmartMat/service/group/WasteServiceTest.java
+++ b/src/test/java/ntnu/idatt2016/v233/SmartMat/service/group/WasteServiceTest.java
@@ -1,26 +1,21 @@
 package ntnu.idatt2016.v233.SmartMat.service.group;
 
-import ntnu.idatt2016.v233.SmartMat.dto.request.WasteRequest;
-import ntnu.idatt2016.v233.SmartMat.entity.Waste;
+import ntnu.idatt2016.v233.SmartMat.dto.request.group.WasteRequest;
+import ntnu.idatt2016.v233.SmartMat.entity.group.Waste;
 import ntnu.idatt2016.v233.SmartMat.entity.group.Group;
-import ntnu.idatt2016.v233.SmartMat.entity.group.UserGroupAsso;
 import ntnu.idatt2016.v233.SmartMat.entity.product.Category;
 import ntnu.idatt2016.v233.SmartMat.entity.product.Product;
-import ntnu.idatt2016.v233.SmartMat.entity.user.User;
 import ntnu.idatt2016.v233.SmartMat.repository.group.GroupRepository;
 import ntnu.idatt2016.v233.SmartMat.repository.group.WasteRepository;
 import ntnu.idatt2016.v233.SmartMat.repository.product.ProductRepository;
-import ntnu.idatt2016.v233.SmartMat.service.group.WasteService;
 import org.junit.jupiter.api.BeforeEach;
 import org.junit.jupiter.api.Test;
 import org.junit.jupiter.api.extension.ExtendWith;
 import org.mockito.InjectMocks;
 import org.mockito.Mock;
-import org.mockito.MockitoAnnotations;
 import org.mockito.junit.jupiter.MockitoExtension;
 
 import java.sql.Timestamp;
-import java.util.ArrayList;
 import java.util.Collections;
 import java.util.List;
 import java.util.Optional;
diff --git a/src/test/java/ntnu/idatt2016/v233/SmartMat/service/AllergyServiceTest.java b/src/test/java/ntnu/idatt2016/v233/SmartMat/service/product/AllergyServiceTest.java
similarity index 89%
rename from src/test/java/ntnu/idatt2016/v233/SmartMat/service/AllergyServiceTest.java
rename to src/test/java/ntnu/idatt2016/v233/SmartMat/service/product/AllergyServiceTest.java
index 5d4d23da308a6200c4a1f3e33da2f6ac06c8060a..bfeda058d9d65de2446bdafbcaff4f11e7b53106 100644
--- a/src/test/java/ntnu/idatt2016/v233/SmartMat/service/AllergyServiceTest.java
+++ b/src/test/java/ntnu/idatt2016/v233/SmartMat/service/product/AllergyServiceTest.java
@@ -1,5 +1,6 @@
-package ntnu.idatt2016.v233.SmartMat.service;
+package ntnu.idatt2016.v233.SmartMat.service.product;
 
+import ntnu.idatt2016.v233.SmartMat.service.product.AllergyService;
 import org.junit.jupiter.api.BeforeEach;
 import org.junit.jupiter.api.Test;
 import org.mockito.InjectMocks;
@@ -10,9 +11,9 @@ import java.util.Arrays;
 import java.util.List;
 import java.util.Optional;
 
-import ntnu.idatt2016.v233.SmartMat.dto.response.AllergyResponse;
+import ntnu.idatt2016.v233.SmartMat.dto.response.product.AllergyResponse;
 import ntnu.idatt2016.v233.SmartMat.entity.product.Allergy;
-import ntnu.idatt2016.v233.SmartMat.repository.AllergyRepository;
+import ntnu.idatt2016.v233.SmartMat.repository.product.AllergyRepository;
 
 import static org.mockito.Mockito.*;
 import static org.junit.jupiter.api.Assertions.*;
diff --git a/src/test/java/ntnu/idatt2016/v233/SmartMat/service/RecipeServiceTest.java b/src/test/java/ntnu/idatt2016/v233/SmartMat/service/product/RecipeServiceTest.java
similarity index 93%
rename from src/test/java/ntnu/idatt2016/v233/SmartMat/service/RecipeServiceTest.java
rename to src/test/java/ntnu/idatt2016/v233/SmartMat/service/product/RecipeServiceTest.java
index 64543e9dba2ddb2665b82143c55784b9224fe201..b2f30e766bad1168889ff73274dffe871f04dc83 100644
--- a/src/test/java/ntnu/idatt2016/v233/SmartMat/service/RecipeServiceTest.java
+++ b/src/test/java/ntnu/idatt2016/v233/SmartMat/service/product/RecipeServiceTest.java
@@ -1,19 +1,17 @@
-package ntnu.idatt2016.v233.SmartMat.service;
+package ntnu.idatt2016.v233.SmartMat.service.product;
 
-import ntnu.idatt2016.v233.SmartMat.dto.response.RecipeWithMatchCount;
-import ntnu.idatt2016.v233.SmartMat.entity.Recipe;
+import ntnu.idatt2016.v233.SmartMat.dto.response.product.RecipeWithMatchCount;
+import ntnu.idatt2016.v233.SmartMat.entity.product.Recipe;
 import ntnu.idatt2016.v233.SmartMat.entity.user.User;
-import ntnu.idatt2016.v233.SmartMat.repository.RecipeRepository;
+import ntnu.idatt2016.v233.SmartMat.repository.product.RecipeRepository;
 import ntnu.idatt2016.v233.SmartMat.repository.user.UserRepository;
-import org.junit.jupiter.api.Assertions;
+import ntnu.idatt2016.v233.SmartMat.service.product.RecipeService;
 import org.junit.jupiter.api.BeforeEach;
 import org.junit.jupiter.api.Test;
 import org.junit.jupiter.api.extension.ExtendWith;
 import org.mockito.InjectMocks;
 import org.mockito.Mock;
 import org.mockito.junit.jupiter.MockitoExtension;
-import org.springframework.http.HttpStatus;
-import org.springframework.http.ResponseEntity;
 
 import java.util.ArrayList;
 import java.util.Arrays;
diff --git a/src/test/java/ntnu/idatt2016/v233/SmartMat/service/user/AchievementServiceTest.java b/src/test/java/ntnu/idatt2016/v233/SmartMat/service/user/AchievementServiceTest.java
index 869d43ec74c65e97909b8deeb0219f052134896b..a098bb1201cd2c06182a54b0c381333fec825858 100644
--- a/src/test/java/ntnu/idatt2016/v233/SmartMat/service/user/AchievementServiceTest.java
+++ b/src/test/java/ntnu/idatt2016/v233/SmartMat/service/user/AchievementServiceTest.java
@@ -1,7 +1,7 @@
 package ntnu.idatt2016.v233.SmartMat.service.user;
 
 import ntnu.idatt2016.v233.SmartMat.entity.group.Achievement;
-import ntnu.idatt2016.v233.SmartMat.repository.user.AchievementRepository;
+import ntnu.idatt2016.v233.SmartMat.repository.group.AchievementRepository;
 import org.junit.jupiter.api.BeforeEach;
 import org.junit.jupiter.api.Test;
 import org.junit.jupiter.api.extension.ExtendWith;
diff --git a/src/test/java/ntnu/idatt2016/v233/SmartMat/service/TokenServiceTest.java b/src/test/java/ntnu/idatt2016/v233/SmartMat/service/user/TokenServiceTest.java
similarity index 94%
rename from src/test/java/ntnu/idatt2016/v233/SmartMat/service/TokenServiceTest.java
rename to src/test/java/ntnu/idatt2016/v233/SmartMat/service/user/TokenServiceTest.java
index 9401989e4d49381a3c1877fe7590a80aa7d45313..a66291c15e5f82c2cbf73b1a2104814a90a7f698 100644
--- a/src/test/java/ntnu/idatt2016/v233/SmartMat/service/TokenServiceTest.java
+++ b/src/test/java/ntnu/idatt2016/v233/SmartMat/service/user/TokenServiceTest.java
@@ -1,5 +1,6 @@
-package ntnu.idatt2016.v233.SmartMat.service;
+package ntnu.idatt2016.v233.SmartMat.service.user;
 
+import ntnu.idatt2016.v233.SmartMat.service.user.TokenService;
 import org.junit.jupiter.api.BeforeEach;
 import org.junit.jupiter.api.Test;
 import org.springframework.security.authentication.UsernamePasswordAuthenticationToken;
diff --git a/src/test/java/ntnu/idatt2016/v233/SmartMat/service/user/WeeklyMenuServiceTest.java b/src/test/java/ntnu/idatt2016/v233/SmartMat/service/user/WeeklyMenuServiceTest.java
index 4ae0811fcb4b281b55abe7ce9969b6ad5b33470d..52921e99e3026cafaa31a014a1c8ccc9eb8e6341 100644
--- a/src/test/java/ntnu/idatt2016/v233/SmartMat/service/user/WeeklyMenuServiceTest.java
+++ b/src/test/java/ntnu/idatt2016/v233/SmartMat/service/user/WeeklyMenuServiceTest.java
@@ -1,6 +1,6 @@
 package ntnu.idatt2016.v233.SmartMat.service.user;
 
-import ntnu.idatt2016.v233.SmartMat.service.WeeklyMenuService;
+import ntnu.idatt2016.v233.SmartMat.service.group.WeeklyMenuService;
 import org.junit.jupiter.api.BeforeEach;
 import org.junit.jupiter.api.Test;
 import org.mockito.InjectMocks;
@@ -10,8 +10,8 @@ import org.mockito.MockitoAnnotations;
 import java.util.Arrays;
 import java.util.List;
 
-import ntnu.idatt2016.v233.SmartMat.dto.response.WeeklyMenuResponse;
-import ntnu.idatt2016.v233.SmartMat.repository.RecipeRepository;
+import ntnu.idatt2016.v233.SmartMat.dto.response.group.WeeklyMenuResponse;
+import ntnu.idatt2016.v233.SmartMat.repository.product.RecipeRepository;
 
 import static org.mockito.Mockito.*;
 import static org.junit.jupiter.api.Assertions.*;