diff --git a/src/Cards/BasicFidelityCard.java b/src/Cards/BasicFidelityCard.java
new file mode 100644
index 0000000000000000000000000000000000000000..7ab7bb98990d564613f98ba1392446c0d3f1f71e
--- /dev/null
+++ b/src/Cards/BasicFidelityCard.java
@@ -0,0 +1,15 @@
+package Cards;
+
+public class BasicFidelityCard extends FidelityCard {
+
+	public BasicFidelityCard(long id) {
+		super(id);
+		// TODO Auto-generated constructor stub
+	}
+
+	@Override
+	public String returnType() {
+		return "Basic";
+	}
+
+}
diff --git a/src/Cards/FidelityCard.java b/src/Cards/FidelityCard.java
new file mode 100644
index 0000000000000000000000000000000000000000..4a8fee5d4ae57a4e9c743246ef1f4f6ade65392a
--- /dev/null
+++ b/src/Cards/FidelityCard.java
@@ -0,0 +1,29 @@
+package Cards;
+
+public abstract class FidelityCard {
+	
+	private long id;
+
+	public FidelityCard (long id){
+		this.id = id;
+	}
+	
+
+	public long getId() {
+		return id;
+	}
+
+	public void setId(long id) {
+		this.id = id;
+	}
+
+	@Override
+	public String toString() {
+		return "FidelityCard [id=" + id + "]";
+	}
+	
+	public abstract String returnType();
+
+	
+
+}
diff --git a/src/Cards/LotteryFidelityCard.java b/src/Cards/LotteryFidelityCard.java
new file mode 100644
index 0000000000000000000000000000000000000000..dfd1594c539eb73f691d6ff9412f52f4483822ca
--- /dev/null
+++ b/src/Cards/LotteryFidelityCard.java
@@ -0,0 +1,21 @@
+package Cards;
+
+public class LotteryFidelityCard extends FidelityCard {
+	
+	private double percentage;
+	
+	
+	public LotteryFidelityCard(long id,double percentage) {
+		super(id);
+		this.percentage = percentage;
+		
+	}
+
+
+	@Override
+	public String returnType() {
+		// TODO Auto-generated method stub
+		return "Lottery";
+	}
+
+}
diff --git a/src/Cards/PointFidelityCard.java b/src/Cards/PointFidelityCard.java
new file mode 100644
index 0000000000000000000000000000000000000000..d455631009206d3549dda28fac78e8376ba2921f
--- /dev/null
+++ b/src/Cards/PointFidelityCard.java
@@ -0,0 +1,19 @@
+package Cards;
+
+public class PointFidelityCard extends FidelityCard {
+	
+	
+	private long nbOfPoint;
+	
+	public PointFidelityCard(long id,long nbOfPoint) {
+		super(id);
+		this.nbOfPoint =nbOfPoint;
+	}
+
+	@Override
+	public String returnType() {
+		// TODO Auto-generated method stub
+		return "Point";
+	}
+
+}
diff --git a/src/my/foodora/code/core/MyFoodora.java b/src/Core/MyFoodora.java
similarity index 98%
rename from src/my/foodora/code/core/MyFoodora.java
rename to src/Core/MyFoodora.java
index 9c10bbccce91347a1a963ce3c5dd90227bfd27ae..f56012b485a65041b4c794323bf0c28466e55f29 100644
--- a/src/my/foodora/code/core/MyFoodora.java
+++ b/src/Core/MyFoodora.java
@@ -1,7 +1,8 @@
-package my.foodora.code.core;
+package Core;
 
 import java.util.ArrayList;
 
+/* to be deleted */
 import provisoire.entities.ContextDeliveryPolicy;
 import provisoire.entities.ContextTargetProfit;
 import provisoire.entities.Courier;
diff --git a/src/Others/Adress.java b/src/Others/Adress.java
new file mode 100644
index 0000000000000000000000000000000000000000..e91df734d70a57992308dbd13d29a5fc44c28bd8
--- /dev/null
+++ b/src/Others/Adress.java
@@ -0,0 +1,44 @@
+package Others;
+
+public class Adress {
+	
+	private double x;
+	private double y;
+	
+	
+	public Adress(double x, double y) {
+		super();
+		this.x = x;
+		this.y = y;
+	}
+
+
+	public double getX() {
+		return x;
+	}
+
+
+	public void setX(double x) {
+		this.x = x;
+	}
+
+
+	public double getY() {
+		return y;
+	}
+
+
+	public void setY(double y) {
+		this.y = y;
+	}
+
+
+	@Override
+	public String toString() {
+		return "Adress = [" + x + "," + y + "]";
+	}
+	
+	
+	
+
+}
diff --git a/src/Others/Date.java b/src/Others/Date.java
new file mode 100644
index 0000000000000000000000000000000000000000..ee90a9c4f12e73f0be9640c200af242d59e66320
--- /dev/null
+++ b/src/Others/Date.java
@@ -0,0 +1,43 @@
+package Others;
+
+public class Date {
+	
+	private String year,month,day;
+
+	@Override
+	public String toString() {
+		return "Date dd/mm/yyyy : " + day + "-" + month + "-" + year ;
+	}
+
+	public String getYear() {
+		return year;
+	}
+
+	public void setYear(String year) {
+		this.year = year;
+	}
+
+	public String getMonth() {
+		return month;
+	}
+
+	public void setMonth(String month) {
+		this.month = month;
+	}
+
+	public String getDay() {
+		return day;
+	}
+
+	public void setDay(String day) {
+		this.day = day;
+	}
+
+	public Date(String year, String month, String day) {
+		super();
+		this.year = year;
+		this.month = month;
+		this.day = day;
+	}
+
+}
diff --git a/src/Others/Historique.java b/src/Others/Historique.java
new file mode 100644
index 0000000000000000000000000000000000000000..3ff35b5f45251c5b8d0b7518bdf7f325864a8e9e
--- /dev/null
+++ b/src/Others/Historique.java
@@ -0,0 +1,33 @@
+package Others;
+
+import java.util.ArrayList;
+
+import provisoire.Order;
+
+public class Historique {
+	
+	ArrayList<Order> listOfOrder;
+
+	public Historique(ArrayList<Order> listOfOrder) {
+		super();
+		this.listOfOrder = listOfOrder;
+	}
+
+	public ArrayList<Order> getListOfOrder() {
+		return listOfOrder;
+	}
+
+	public void setListOfOrder(ArrayList<Order> listOfOrder) {
+		this.listOfOrder = listOfOrder;
+	}
+
+	@Override
+	public String toString() {
+		return "Historique [listOfOrder=" + listOfOrder + "]";
+	} 
+	
+	
+	}
+	
+	
+
diff --git a/src/Others/IDCard.java b/src/Others/IDCard.java
new file mode 100644
index 0000000000000000000000000000000000000000..fde40ba2382f50f01fa103b79aa34e73b84b87cc
--- /dev/null
+++ b/src/Others/IDCard.java
@@ -0,0 +1,22 @@
+package Others;
+
+public class IDCard {
+	
+
+		/** Constructeur priv� */
+		private IDCard()
+		{}
+	 
+		/** Instance unique non pr�initialis�e */
+		private static IDCard INSTANCE = null;
+	 
+		/** Point d'acc�s pour l'instance unique du singleton */
+		public static IDCard getInstance()
+		{			
+			if (INSTANCE == null)
+			{ 	INSTANCE = new IDCard();	
+			}
+			return INSTANCE;
+		}
+	}
+	
diff --git a/src/Trash/UserFactory.java b/src/Trash/UserFactory.java
new file mode 100644
index 0000000000000000000000000000000000000000..4d1600a5a6328b11658cc2e21ef08e364b80218f
--- /dev/null
+++ b/src/Trash/UserFactory.java
@@ -0,0 +1,48 @@
+package Trash;
+
+
+import java.io.*;
+import java.lang.*;
+import java.util.*;
+
+import javax.management.RuntimeErrorException;
+
+import Others.Adress;
+
+public class UserFactory {
+	
+	private ArrayList<User> listOfUser;
+
+	public UserFactory(ArrayList<User> listOfUser) {
+		super();
+		this.listOfUser = listOfUser;
+	}
+
+	public ArrayList<User> getListOfUser() {
+		return listOfUser;
+	}
+
+	public void setListOfUser(ArrayList<User> listOfUser) {
+		this.listOfUser = listOfUser;
+	}
+
+	@Override
+	public String toString() {
+		return "UserFactory [listOfUser=" + listOfUser + "]";
+	}
+	
+	public void createRestaurant(long id, long phoneNumber, String name, String username, String mail, String password, Adress adress,
+			boolean activated, String typeOfHumanUser){
+		if(typeOfUser == "Restaurant"){
+		try{
+		User newUser = new Restaurant(id,phoneNumber,name,username,mail,password,adress,activated);
+		listOfUser.add(newUser);
+		}
+		catch (Exception e) {
+			
+			} // faire le try/catch � l'ajout d'un User pour �viter les doublons.
+		}
+		}
+	}
+
+
diff --git a/src/User/Customer.java b/src/User/Customer.java
new file mode 100644
index 0000000000000000000000000000000000000000..ea66fbde09b155902b737942a4ba076c8502a33a
--- /dev/null
+++ b/src/User/Customer.java
@@ -0,0 +1,74 @@
+package User;
+
+import Cards.BasicFidelityCard;
+import Cards.FidelityCard;
+import Others.Adress;
+import Others.Historique;
+import Others.IDCard;
+import provisoire.Order;
+
+public class Customer extends HumanUser {
+
+	
+	boolean spamAgree;
+	Historique historique;
+	FidelityCard card;
+	
+	public Customer(long id, long phoneNumber, String name, String username, String mail, String password,
+			Adress adress, boolean activated, String birthdayDate, String surname,boolean spamAgree,Historique historique,FidelityCard card ) {
+		super(id, phoneNumber, name, username, mail, password, adress, activated, birthdayDate, surname);
+		this.spamAgree = spamAgree;
+		this.historique = historique;
+		this.card = card;
+	}
+
+	public boolean isSpamAgree() {
+		return spamAgree;
+	}
+
+	public void setSpamAgree(boolean spamAgree) {
+		this.spamAgree = spamAgree;
+	}
+
+	public Historique getHistorique() {
+		return historique;
+	}
+
+	public void setHistorique(Historique historique) {
+		this.historique = historique;
+	}
+
+	public FidelityCard getCard() {
+		return card;
+	}
+
+	public void setCard(FidelityCard card) {
+		this.card = card;
+	}
+
+	@Override
+	public String toString() {
+		return "Customer [spamAgree=" + spamAgree + ", historique=" + historique + ", card=" + card + "]";
+	}
+	
+	public void placeOrder(Order order, Restaurant restaurant){
+		
+	}
+	
+	public void registerFidelityPlan(String newTypeOfFidelityCard){
+		if(newTypeOfFidelityCard == this.card.returnType()){
+			System.out.println("You have already this card");
+		if ((newTypeOfFidelityCard != "Basic") &(newTypeOfFidelityCard != "Lottery")&(newTypeOfFidelityCard != "Point")){
+			System.out.println("You have to choose between Point, Lottery or Basic card");
+		}
+		else {
+			if (newTypeOfFidelityCard == "Basic"){
+				this.card = new BasicFidelityCard(new IDCard().getId);
+			}
+		}
+		}
+	}
+	
+	
+
+}
diff --git a/src/User/FactoryUserFactory.java b/src/User/FactoryUserFactory.java
new file mode 100644
index 0000000000000000000000000000000000000000..160000456d6c1bae4404ae730ac2cc6f78b9dbbd
--- /dev/null
+++ b/src/User/FactoryUserFactory.java
@@ -0,0 +1,21 @@
+package User;
+
+public class FactoryUserFactory {
+	
+	public UserFactory createUserFactory(String typeOfUserFactory){
+		if(typeOfUserFactory == "Human"){
+			HumanUserFactory humanUF = new HumanUserFactory();
+			return humanUF ;
+		}
+		else if (typeOfUserFactory == "Moral"){
+			MoralUserFactory moralUF = new MoralUserFactory();
+			return moralUF ;
+		}
+		else {
+			System.out.println("Please choose your type of User to create between Human and Moral");
+			return null;
+		}
+		
+	}
+
+}
diff --git a/src/User/HumanUser.java b/src/User/HumanUser.java
new file mode 100644
index 0000000000000000000000000000000000000000..76182c0fdd3ff14607a366bb0c31133dc52475ff
--- /dev/null
+++ b/src/User/HumanUser.java
@@ -0,0 +1,16 @@
+package User;
+
+import Others.Adress;
+
+public class HumanUser extends User {
+	
+	String birthdayDate, surname;
+
+	public HumanUser(long id, long phoneNumber, String name, String username, String mail, String password,
+			Adress adress, boolean activated , String birthdayDate, String surname) {
+		super(id, phoneNumber, name, username, mail, password, adress, activated);
+		this.birthdayDate = birthdayDate;
+		this.surname = surname;
+	}
+
+}
diff --git a/src/User/HumanUserFactory.java b/src/User/HumanUserFactory.java
new file mode 100644
index 0000000000000000000000000000000000000000..348b0501a4b2694c40135be187e95d0d496b1683
--- /dev/null
+++ b/src/User/HumanUserFactory.java
@@ -0,0 +1,17 @@
+package User;
+
+import Others.Adress;
+
+public class HumanUserFactory extends UserFactory {
+	
+	@Override
+	public void createUser(long id, long phoneNumber, String name, String username, String mail, String password,
+			Adress adress, boolean activated) {
+		try{
+		User newUser = new Restaurant(id,phoneNumber,name,username,mail,password,adress,activated);
+		}
+		catch (Exception e) {} // faire le try/catch � l'ajout d'un User pour �viter les doublons.
+		
+	}
+
+}
diff --git a/src/User/Manager.java b/src/User/Manager.java
new file mode 100644
index 0000000000000000000000000000000000000000..96ee82aec00b059b6ef538a808fc8578b9500ffa
--- /dev/null
+++ b/src/User/Manager.java
@@ -0,0 +1,85 @@
+package User;
+
+import java.util.ArrayList;
+
+import Others.Adress;
+import provisoire.MyFoodora;
+
+public class Manager extends HumanUser {
+
+	public Manager(long id, long phoneNumber, String name, String username, String mail, String password, Adress adress,
+			boolean activated, String birthdayDate, String surname) {
+		super(id, phoneNumber, name, username, mail, password, adress, activated, birthdayDate, surname);
+
+	}
+	
+	public void addUser(User u,MyFoodora foodora, String typeOfUser){
+		
+	}
+	
+	public void removeUser(User u, MyFoodora foodora){
+		
+	}
+	
+	public void changeServiceFee(double newServiceFee, MyFoodora foodora){
+		
+	}
+	
+	public void changeMarkupPercentage (double newMarkupPercentage, MyFoodora foodora){
+		
+	}
+	
+	public void changeDeliveryCost(double newDeliveryCost, MyFoodora foodora){
+		
+	}
+	
+	public double getTotalIncome(){
+		return 1;
+	}
+	
+	public double getProfit(){
+		return 1;
+	}
+	
+	public double getAverageIncome(){
+		return 1;
+	}
+	
+	public double getAverageProfit(){
+		return 1;
+	}
+	
+	public double getAverageIncomePerCustomer(){
+		return 1;
+	}
+	
+	public void setTargetProfitPolicy(){
+		
+	}
+	
+	public void setDeliveryPolicy(){
+			
+	}
+	
+	public String getMostSellingRestaurant(){
+		return null;
+	}
+	
+	public String getLeastSellingRestaurant(){
+		return null ;
+	}
+	
+	public void activateUser(){
+		
+	}
+	
+	public void desactivateUser(){
+		
+	}
+	
+	
+	
+	
+	
+	
+}
diff --git a/src/User/MoralUser.java b/src/User/MoralUser.java
new file mode 100644
index 0000000000000000000000000000000000000000..7ce03c7658a2fc56a736bae740279884a58185e1
--- /dev/null
+++ b/src/User/MoralUser.java
@@ -0,0 +1,13 @@
+package User;
+
+import Others.Adress;
+
+public class MoralUser extends User {
+
+	public MoralUser(long id, long phoneNumber, String name, String username, String mail, String password,
+			Adress adress, boolean activated) {
+		super(id, phoneNumber, name, username, mail, password, adress, activated);
+		// TODO Auto-generated constructor stub
+	}
+
+}
diff --git a/src/User/MoralUserFactory.java b/src/User/MoralUserFactory.java
new file mode 100644
index 0000000000000000000000000000000000000000..f73a8b6972edfe62ab2a4fed0e60112e80ba0dfa
--- /dev/null
+++ b/src/User/MoralUserFactory.java
@@ -0,0 +1,14 @@
+package User;
+
+import Others.Adress;
+
+public class MoralUserFactory extends UserFactory {
+
+	@Override
+	public void createUser(long id, long phoneNumber, String name, String username, String mail, String password,
+			Adress adress, boolean activated) {
+		// TODO Auto-generated method stub
+
+	}
+
+}
diff --git a/src/User/Restaurant.java b/src/User/Restaurant.java
new file mode 100644
index 0000000000000000000000000000000000000000..fe7cdc5b8584b81bfa278b0603055e4630086e5c
--- /dev/null
+++ b/src/User/Restaurant.java
@@ -0,0 +1,24 @@
+package User;
+
+import Others.Adress;
+
+public class Restaurant extends MoralUser {
+	
+	//ArrayList<Meal> listOfMeal;
+	
+	public Restaurant(long id, long phoneNumber, String name, String username, String mail, String password,
+			Adress adress, boolean activated) {
+		super(id, phoneNumber, name, username, mail, password, adress, activated);
+		//this.listOfMeal = listOfMeal
+	}
+	
+	
+	public void addMeal(){
+		
+	}
+	
+	public void removeItem(){
+		
+	}
+
+}
diff --git a/src/User/User.java b/src/User/User.java
new file mode 100644
index 0000000000000000000000000000000000000000..1fa1fb6d6a32fe4aec83bdd1e06f84c7df9c2031
--- /dev/null
+++ b/src/User/User.java
@@ -0,0 +1,129 @@
+package User;
+
+import Others.Adress;
+import java.io.*;
+import java.lang.*;
+import java.util.*;
+
+public abstract class User {
+
+	private long id,phoneNumber;
+	private String name,username,mail,password;
+	private Adress adress;
+	private boolean activated;
+	
+	
+	public User(long id, long phoneNumber, String name, String username, String mail, String password, Adress adress,
+			boolean activated) {
+		super();
+		this.id = id;
+		this.phoneNumber = phoneNumber;
+		this.name = name;
+		this.username = username;
+		this.mail = mail;
+		this.password = password;
+		this.adress = adress;
+		this.activated = activated;
+	}
+
+
+	public long getId() {
+		return id;
+	}
+
+
+	public void setId(long id) {
+		this.id = id;
+	}
+
+
+	public long getPhoneNumber() {
+		return phoneNumber;
+	}
+
+
+	public void setPhoneNumber(long phoneNumber) {
+		this.phoneNumber = phoneNumber;
+	}
+
+
+	public String getName() {
+		return name;
+	}
+
+
+	public void setName(String name) {
+		this.name = name;
+	}
+
+
+	public String getUsername() {
+		return username;
+	}
+
+
+	public void setUsername(String username) {
+		this.username = username;
+	}
+
+
+	public String getMail() {
+		return mail;
+	}
+
+
+	public void setMail(String mail) {
+		this.mail = mail;
+	}
+
+
+	public String getPassword() {
+		return password;
+	}
+
+
+	public void setpassword(String password) {
+		this.password = password;
+	}
+
+
+	public Adress getAdress() {
+		return adress;
+	}
+
+
+	public void setAdress(Adress adress) {
+		this.adress = adress;
+	}
+
+
+	public boolean isActivated() {
+		return activated;
+	}
+
+
+	public void setActivated(boolean activated) {
+		this.activated = activated;
+	}
+
+
+	@Override
+	public String toString() {
+		return "User [id=" + id + ", phoneNumber=" + phoneNumber + ", name=" + name + ", username=" + username
+				+ ", mail=" + mail + ", password=" + password + ", adress=" + adress + ", activated=" + activated + "]";
+	}
+	
+	public void register(){
+		System.out.println("Please writte your username");
+		Scanner sc = new Scanner(System.in);
+		String usernametest = sc.nextLine();
+		System.out.println("Please enter your password");
+		String passwordtest = sc.nextLine();
+		// faire un if sur la condition d'appartenance � MyFoodora core + try/catch
+		
+		
+	}
+	
+
+	
+}
diff --git a/src/User/UserFactory.java b/src/User/UserFactory.java
new file mode 100644
index 0000000000000000000000000000000000000000..2e620b35c0adcb6aa94afa3de5937c7121334502
--- /dev/null
+++ b/src/User/UserFactory.java
@@ -0,0 +1,23 @@
+package User;
+
+
+import java.io.*;
+import java.lang.*;
+import java.util.*;
+
+import javax.management.RuntimeErrorException;
+
+import Others.Adress;
+
+public abstract class UserFactory {
+	
+	
+	public abstract void createUser(long id, long phoneNumber, String name, String username, String mail, String password,
+			Adress adress, boolean activated);
+
+
+	
+
+	}
+
+