diff --git a/src/Item/Dish.java b/src/Item/Dish.java
index b6669d4103ea8a94a454eaa029dba3c6066e6821..ac68bfef911fd19356ba822c9553ad15edc054dd 100644
--- a/src/Item/Dish.java
+++ b/src/Item/Dish.java
@@ -29,7 +29,14 @@ public class Dish extends Item implements VisitablePrice{
 	
 	/** VISIT LOGIC **/
 	
-	public double acceptPrice(VisitorPrice v) {
-		return v.visitPrice(this);
+	public void acceptPrice(VisitorPrice v) {
+		if(v instanceof Meal){
+			Meal vMeal = (Meal) v;
+			vMeal.setPrice(vMeal.getPrice()+price);
+		}
+		if(v instanceof Dish){
+			Dish vDish = (Dish) v;
+			vDish.setPrice(vDish.getPrice()+price);
+		}
 	}
 }
diff --git a/src/Item/Meal.java b/src/Item/Meal.java
index e1ae4ef66193177bdbd518e8f7fd122121cea541..c6741ad86ef6a35251de06cb04f1b86c413c5570 100644
--- a/src/Item/Meal.java
+++ b/src/Item/Meal.java
@@ -2,6 +2,8 @@ package Item;
 
 import java.util.ArrayList;
 
+import Order.Order;
+
 
 /**
  * 
@@ -88,6 +90,9 @@ public abstract class Meal extends Item implements VisitorPrice{
 	public double getPrice(){
 		return price;
 	}
+	public void setPrice(double _price){
+		price = _price;
+	}
 	public ArrayList<Dish> getListDish() {
 		return listDish;
 	}
@@ -102,16 +107,19 @@ public abstract class Meal extends Item implements VisitorPrice{
 	/** VISIT LOGIC **/
 
 	@Override	
-	public double acceptPrice(VisitorPrice v){
-		price=0;
-		for(Dish item: listDish){
-			item.acceptPrice(this);
+	public void acceptPrice(VisitorPrice v){
+		price=0; // reseting price
+		if(v instanceof Order){
+			Order vOrder = (Order) v;
+			for(Dish item: listDish){
+				item.acceptPrice(this);
+			}
+			vOrder.setPrice(vOrder.getPrice()+this.getPrice()*0.95);
 		}
-		return this.getPrice();
 	}
 
 	@Override
-	public double visitPrice(VisitablePrice v) {
-		return v.acceptPrice(this);
+	public void visitPrice(VisitablePrice v) {
+		v.acceptPrice(this);
 	}
 }
diff --git a/src/Item/VisitablePrice.java b/src/Item/VisitablePrice.java
index 06286592c14a7aba0e95b3328c683585b05dba2c..9c219926303a35396b672eb5c43246d3fafa84b7 100644
--- a/src/Item/VisitablePrice.java
+++ b/src/Item/VisitablePrice.java
@@ -1,5 +1,5 @@
 package Item;
 
 public interface VisitablePrice {
-	public double acceptPrice(VisitorPrice v);
+	public void acceptPrice(VisitorPrice v);
 }
diff --git a/src/Item/VisitorPrice.java b/src/Item/VisitorPrice.java
index fd8f4f1b78cd7cc1fdbfda236591488ee9f692ff..f60047f12359d0625ba4a36aea81434d6e17a764 100644
--- a/src/Item/VisitorPrice.java
+++ b/src/Item/VisitorPrice.java
@@ -1,5 +1,5 @@
 package Item;
 
 public interface VisitorPrice {
-	public double visitPrice(VisitablePrice v);
+	public void visitPrice(VisitablePrice v);
 }
diff --git a/src/Order/Order.java b/src/Order/Order.java
new file mode 100644
index 0000000000000000000000000000000000000000..f35b236ed9b925abbb4187929bf4b7615f45ec97
--- /dev/null
+++ b/src/Order/Order.java
@@ -0,0 +1,41 @@
+package Order;
+
+import java.util.ArrayList;
+
+import Item.Dish;
+import Item.Meal;
+import Item.VisitablePrice;
+import Item.VisitorPrice;
+
+public class Order implements VisitorPrice{
+	
+	private double price;
+
+	ArrayList<Dish> listDish;
+	ArrayList<Meal> listMeal;
+	
+	public Order() {
+		// TODO Auto-generated constructor stub
+	}
+	
+	/** GETTER AND SETTER **/
+	
+	public double getPrice() {
+		return price;
+	}
+
+	public void setPrice(double price) {
+		this.price = price;
+	}
+
+	@Override
+	public void visitPrice(VisitablePrice v) {
+		for(Dish dish:listDish){
+			dish.acceptPrice(this);
+		}
+		for(Meal meal:listMeal){
+			meal.acceptPrice(this);
+		}
+	}
+	
+}