diff --git a/src/Cli/Confirm.java b/src/Cli/Confirm.java
index abd707b7a1023e4c16f3141cc15bd068da9597c1..4a3448ccce6042574337b7fe87543dc90c0ffc50 100644
--- a/src/Cli/Confirm.java
+++ b/src/Cli/Confirm.java
@@ -3,11 +3,13 @@ package Cli;
 import java.util.Scanner;
 
 public class Confirm {
-	static Scanner reader = new Scanner(System.in);
+	
 	public static boolean text(String str){
+		Scanner reader = new Scanner(System.in);
 		System.out.println(str);
 		System.out.println("(Y)es/(N)o : ");
 		String answer = reader.nextLine();
+		reader.close();
 		if(answer=="y" || answer == "Y" || answer == "o" || answer == "O")
 			return true;
 		return false;
diff --git a/src/DeliveryStrategy/FairOccupationDelivery.java b/src/DeliveryStrategy/FairOccupationDelivery.java
new file mode 100644
index 0000000000000000000000000000000000000000..12618e08f7595cebab051b6fa135f0ef82840057
--- /dev/null
+++ b/src/DeliveryStrategy/FairOccupationDelivery.java
@@ -0,0 +1,17 @@
+package DeliveryStrategy;
+
+import java.util.ArrayList;
+
+import User.Courier;
+
+public class FairOccupationDelivery implements StrategyDeliveryPolicy {
+
+	@Override
+	public void chooseCourier(ArrayList<Courier> listOfCourier) {
+		// TODO Auto-generated method stub
+		
+	}
+
+
+
+}
diff --git a/src/DeliveryStrategy/FastestDelivery.java b/src/DeliveryStrategy/FastestDelivery.java
new file mode 100644
index 0000000000000000000000000000000000000000..b6f576ff63749cb3cc26599bd830256eff1934b6
--- /dev/null
+++ b/src/DeliveryStrategy/FastestDelivery.java
@@ -0,0 +1,18 @@
+package DeliveryStrategy;
+
+import java.util.ArrayList;
+
+import User.Courier;
+
+public class FastestDelivery implements StrategyDeliveryPolicy{
+
+
+	@Override
+	public void chooseCourier(ArrayList<Courier> listOfCourier) {
+		
+		
+	}
+	
+	
+
+}
diff --git a/src/DeliveryStrategy/StrategyDeliveryPolicy.java b/src/DeliveryStrategy/StrategyDeliveryPolicy.java
new file mode 100644
index 0000000000000000000000000000000000000000..6ff79f3a4101861f1950ca1f58e0496502eca756
--- /dev/null
+++ b/src/DeliveryStrategy/StrategyDeliveryPolicy.java
@@ -0,0 +1,12 @@
+package DeliveryStrategy;
+
+import java.util.ArrayList;
+
+import User.Courier;
+
+public interface StrategyDeliveryPolicy {
+	
+	
+	public abstract void chooseCourier(ArrayList<Courier> listOfCourier);
+
+}
diff --git a/src/Offers/MealOfTheWeek.java b/src/Offers/MealOfTheWeek.java
new file mode 100644
index 0000000000000000000000000000000000000000..e99b64e55276e883c5194515ecd7b5da3447da7d
--- /dev/null
+++ b/src/Offers/MealOfTheWeek.java
@@ -0,0 +1,64 @@
+package Offers;
+
+import Item.Meal;
+
+public class MealOfTheWeek implements ObservableOffer {
+	
+	
+	private boolean state;
+	private Meal meal;
+	
+	
+	
+	
+	public MealOfTheWeek(boolean state, Meal meal) {
+		super();
+		this.state = state;
+		this.meal = meal;
+	}
+	
+	
+
+	public boolean isState() {
+		return state;
+	}
+
+
+
+	public void setState(boolean state) {
+		this.state = state;
+	}
+
+
+
+	public Meal getMeal() {
+		return meal;
+	}
+
+
+
+	public void setMeal(Meal meal) {
+		this.meal = meal;
+	}
+
+
+
+	@Override
+	public void attachObserver() {
+		// TODO Auto-generated method stub
+
+	}
+
+	@Override
+	public void detachObserver() {
+		// TODO Auto-generated method stub
+
+	}
+
+	@Override
+	public void notifyall() {
+		// TODO Auto-generated method stub
+
+	}
+
+}
diff --git a/src/Offers/ObservableOffer.java b/src/Offers/ObservableOffer.java
new file mode 100644
index 0000000000000000000000000000000000000000..6426312b9b5864bb1614acac3e140d516bf73d42
--- /dev/null
+++ b/src/Offers/ObservableOffer.java
@@ -0,0 +1,10 @@
+package Offers;
+
+public interface ObservableOffer {
+	
+	public abstract void attachObserver();
+	public abstract void detachObserver();
+	public abstract void notifyall();
+
+
+}
diff --git a/src/Offers/Observer.java b/src/Offers/Observer.java
new file mode 100644
index 0000000000000000000000000000000000000000..b98f024f589becd66394cf8bdd9ff167bd43740c
--- /dev/null
+++ b/src/Offers/Observer.java
@@ -0,0 +1,7 @@
+package Offers;
+
+public interface Observer {
+	
+	public abstract void update();
+
+}
diff --git a/src/User/Customer.java b/src/User/Customer.java
index 4ed3b45b885604dc3d635e6156203a151291ea81..e65cb85cce62fd807ce88609c342ca47d4b4968d 100644
--- a/src/User/Customer.java
+++ b/src/User/Customer.java
@@ -1,5 +1,8 @@
 package User;
 
+import java.util.Scanner;
+import Cli.Confirm;
+
 import Cards.BasicFidelityCard;
 import Cards.FidelityCard;
 import Cards.LotteryFidelityCard;
@@ -10,8 +13,13 @@ import Others.Adress;
 import Others.Historique;
 import Others.IDCard;
 import Order.Order;
+import Cli.Input;
+import Item.FactoryDish;
+import Item.Meal;
+import Item.MealFactory;
+import Offers.Observer;
 
-public class Customer extends HumanUser implements VisiterCard {
+public class Customer extends HumanUser implements VisiterCard,Observer {
 
 	
 	private boolean spamAgree;
@@ -38,7 +46,72 @@ public class Customer extends HumanUser implements VisiterCard {
 		return "Customer [spamAgree=" + spamAgree + ", historique=" + historique + ", card=" + card + "]";
 	}
 	
-	public void placeOrder(Order order, Restaurant restaurant){
+	public void placeOrder(Restaurant restaurant){
+		Order order = new Order();
+		System.out.println(restaurant.toString());
+		do {
+			if (Confirm.text("Do you want a Meal?")){
+				System.out.println("listdesMeal"); // � faire
+				String choice = Cli.Input.string("Which meal do you want?");
+				boolean isIn = false;
+				for(Meal meal : restaurant.listOfMeal){
+					if(meal.toString() == choice){
+						isIn = true;
+					}
+				}
+				if (isIn == false){
+					System.out.println("This meal isn't propose by this restaurant");
+				}
+				else {
+					if(choice == "FullMeal"){
+						System.out.println("listedesDish"); //� faire
+						String entry1 = Cli.Input.string("Which entry do you want in your meal?");
+						String main1 = Cli.Input.string("Which main do you want in your meal?");
+						String dessert1 = Cli.Input.string("Which dessert do you want in your meal?");
+						MealFactory factory1 = new MealFactory();
+						//Meal newmeal = factory1.createMeal("fullmeal", _name, _typeOfFood)
+					}
+					if (choice == "HalfMeal"){
+						System.out.println("listedesDish"); //� faire
+						String typeOfFormule = Cli.Input.string("Which formula do you want? Entry/Main(EM) or Main/Dessert(MD)");
+						if(typeOfFormule == "EM"){
+							String entry2 = Cli.Input.string("Which entry do you want in your meal?");
+							String main2 = Cli.Input.string("Which main do you want in your meal?");
+							MealFactory factory2 = new MealFactory();
+							//Meal newmeal = factory2.createMeal("halfmeal"
+						}
+						else if(typeOfFormule == "MD"){
+							String main3 = Cli.Input.string("Which main do you want in your meal?");
+							String dessert3 = Cli.Input.string("Which dessert do you want in your meal?");
+							MealFactory factory3 = new MealFactory();
+							//Meal newmeal = factory3.createMeal("halfmeal"
+						}
+						else{
+							System.out.println("This type of Meal is not available");
+						}
+					}
+
+					}
+				
+				
+			}
+			else if (Confirm.text("Do you want a dish?")){
+				System.out.println("listOfDish");
+				String dish = Cli.Input.string("Which dish do you want ?");
+				FactoryDish factory4 = new FactoryDish();
+				
+		
+				
+			}
+			
+			
+		} while (Confirm.text("Do you want something else ?"));
+		System.out.println("Do you want a Meal? (y)es or (n)o");
+		Scanner sc = new Scanner(System.in);
+		String choice = sc.nextLine();
+		if (Confirm.text("Do you want a Meal?")){
+			
+		}
 		
 	}
 	
@@ -111,6 +184,13 @@ public class Customer extends HumanUser implements VisiterCard {
 			this.spamAgree = false;
 		}
 	}
+
+
+	@Override
+	public void update() {
+		
+		
+	}
 	
 	
 	
diff --git a/src/User/Restaurant.java b/src/User/Restaurant.java
index 971ba54ceed0342043cd8f7cfc1054c0c77e2da6..2e6815200d304f7ca3d6db6a5133ea490677d2e8 100644
--- a/src/User/Restaurant.java
+++ b/src/User/Restaurant.java
@@ -1,24 +1,87 @@
 package User;
 
+import java.util.ArrayList;
+
+import Item.Dish;
+import Item.Meal;
 import Others.Adress;
 
 public class Restaurant extends MoralUser {
 	
-	//ArrayList<Meal> listOfMeal;
+	
+	
+	ArrayList<Meal> listOfMeal;
+	ArrayList<Dish> listOfDish;
+	
+	/** CONSTRUCTOR **/
 	
 	public Restaurant(long phoneNumber, String name, String username, String mail, String password,
 			Adress adress, boolean activated) {
 		super(phoneNumber, name, username, mail, password, adress, activated);
-		//this.listOfMeal = listOfMeal
+		this.listOfMeal = new ArrayList<Meal>();
+		this.listOfDish = new ArrayList<Dish>();
 	}
 	
 	
-	public void addMeal(){
+	/** SETTERS**/
+	
+	
+	
+	
+	public void addMeal(Meal m){
+		boolean isalready = false;
+		for (Meal meal : this.listOfMeal) {
+			if(meal.equals(m)){
+				System.out.println("You already have this meal in our menu");
+				isalready = true;
+			}
+			}
+		if(isalready == false){
+			this.listOfMeal.add(m);
+		}
+		}
 		
+	
+	
+	
+	@Override
+	public String toString() {
+		return "Restaurant [listOfMeal=" + listOfMeal + ", listOfDish=" + listOfDish + "]";
+	}
+
+
+	public ArrayList<Meal> getListOfMeal() {
+		return listOfMeal;
+	}
+
+
+	public ArrayList<Dish> getListOfDish() {
+		return listOfDish;
+	}
+
+
+	public void addDish(Dish d){
+		boolean isalready = false;
+		for (Dish dish : this.listOfDish) {
+			if(dish.equals(d)){
+				System.out.println("You already have this dish in our menu");
+				isalready = true;
+			}
+		}
+		if(isalready == false){
+			this.listOfDish.add(d);
+
+		}
 	}
 	
-	public void removeItem(){
+	
+	public void removeMeal(Meal m){
+		this.listOfMeal.remove(m);
 		
 	}
+	
+	public void removeDish(Dish d){
+		this.listOfDish.remove(d);
+	}
 
 }