diff --git a/store/models.py b/store/models.py
index a5d31d2abb3f47455ce87dd71546d3b1c800055e..d84ac9d95150c9e744dda6b44d4136443525f74f 100644
--- a/store/models.py
+++ b/store/models.py
@@ -74,7 +74,7 @@ class ItemSet(db.Model):
         return len(self.items)
 
     def __repr__(self):
-        return f"id: {self.id}, description: {self.description}, items: {self.items}, quantity: {self.price}, price: { self.calculate_price() }"  # TODO: Rename price to quantity
+        return f"id: {self.id}, description: {self.description}, items: {self.items}, quantity: {self.price}, price: { self.price() }"  # TODO: Rename price to quantity
 
 
 class User(db.Model, UserMixin):
diff --git a/store/routes.py b/store/routes.py
index fa669fbf69d8d874509315797063ecd4c1084057..fd157b035b9d4faeab29c967189690397f61e830 100644
--- a/store/routes.py
+++ b/store/routes.py
@@ -575,11 +575,10 @@ def order_summary():
     if "basket" in session:
         address = session.get("address", "")
         for item_id, item in session["basket"].items():
-            
             items.append(item)
             total_price = total_price + item["price"]
         session.clear()
-        
+
         return render_template(
             "order_summary.html", items=items, address=address, total_price=total_price
         )
@@ -643,14 +642,21 @@ def add_to_basket():
         "id": item_obj.id,
         "description": item_obj.description,
         "price": item_obj.price,
-        "is_item_set" : False
+        "is_item_set": False,
     }
+
     if "basket" not in session:
         session["basket"] = {}
+    item_sets = get_itemsets_by_item_id(item_id)
+    is_in_basket = False
+    for item_set in item_sets:
+        if item_set.id in session["basket"]:
+            is_in_basket = True
+            flash("Item already in basket in set")
 
     if item_id in session["basket"]:
         flash("Item already in basket")
-    else:
+    elif not is_in_basket:
         session["basket"][item_id] = item_dict
         flash("Item added to basket: " + item_obj.description)
 
@@ -660,22 +666,24 @@ def add_to_basket():
 @app.route("/add_to_basket_set", methods=["POST"])
 def add_to_basket_set():
     item_id = request.form["item_id"]
-
     item_obj = get_item_set_by_id(item_id)
 
     item_dict = {
         "id": item_obj.id,
         "description": item_obj.description,
-        "price": item_obj.price, 
-        "is_item_set" : True
+        "price": item_obj.price,
+        "is_item_set": True,
     }
     if "basket" not in session:
         session["basket"] = {}
-
+    is_in_basket = False
+    for item in item_obj.items:
+        if item.id in session["basket"]:
+            is_in_basket = True
+            flash("Item already in basket in item set.")
     if item_id in session["basket"]:
         flash("Item already in basket")
-
-    else:
+    elif not is_in_basket:
         session["basket"][item_id] = item_dict
         flash("Item added to basket: " + item_obj.description)
         print(session["basket"])
diff --git a/store/utility.py b/store/utility.py
index 8029ff9f8a9c6c99dbad6313104db14acb3d95e6..8100bee533c651ca87165a5157e2f21c1e990efa 100644
--- a/store/utility.py
+++ b/store/utility.py
@@ -102,6 +102,12 @@ def get_item_by_id(id):
     return Item.query.get(id)
 
 
+def get_items_by_itemset_id(item_set_id):
+    item_set = get_item_set_by_id(item_set_id)
+    items = item_set.items
+    return items
+
+
 def add_item(description, price, date_sold=None):
     item = Item(description=description, price=price, date_sold=date_sold)
     db.session.add(item)