diff --git a/.gitignore b/.gitignore
new file mode 100644
index 0000000000000000000000000000000000000000..234aced12a100c17a9db54eb0f55e3a0a13047a5
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1,4 @@
+tp/.idea
+tp/target
+tp/src/test
+tp/src/main/resouces
diff --git a/tp/pom.xml b/tp/pom.xml
index f56050452a998ba2b858bd8eaf0e9f60b44fb176..7f3c7bedd0c42d722e06de85e00953a235ee9174 100644
--- a/tp/pom.xml
+++ b/tp/pom.xml
@@ -8,10 +8,58 @@
     <artifactId>tp</artifactId>
     <version>1.0-SNAPSHOT</version>
 
+<!--    <dependencies>-->
+<!--        <dependency>-->
+<!--            <groupId>org.jetbrains</groupId>-->
+<!--            <artifactId>annotations</artifactId>-->
+<!--            <version>RELEASE</version>-->
+<!--            <scope>compile</scope>-->
+<!--        </dependency>-->
+<!--        <dependency>-->
+<!--            <groupId>org.junit.jupiter</groupId>-->
+<!--            <artifactId>junit-jupiter</artifactId>-->
+<!--            <version>5.9.0</version>-->
+<!--            <scope>test</scope>-->
+<!--        </dependency>-->
+<!--        <dependency>-->
+<!--            <groupId>org.apache.commons</groupId>-->
+<!--            <artifactId>commons-lang3</artifactId>-->
+<!--            <version>3.1</version>-->
+<!--        </dependency>-->
+<!--    </dependencies>-->
+
+    <build>
+        <pluginManagement>
+            <plugins>
+<!--                <plugin>-->
+<!--                    <groupId>org.apache.maven.plugins</groupId>-->
+<!--                    <artifactId>maven-surefire-plugin</artifactId>-->
+<!--                    <version>2.22.0</version>-->
+<!--                </plugin>-->
+                <plugin>
+                    <groupId>org.codehaus.mojo</groupId>
+                    <artifactId>exec-maven-plugin</artifactId>
+                    <version>3.1.0</version>
+                    <executions>
+                        <execution>
+                            <goals>
+                                <goal>java</goal>
+                            </goals>
+                        </execution>
+                    </executions>
+                    <configuration>
+                        <mainClass>org.example.Main</mainClass>
+                    </configuration>
+                </plugin>
+            </plugins>
+        </pluginManagement>
+    </build>
+
     <properties>
         <maven.compiler.source>18</maven.compiler.source>
         <maven.compiler.target>18</maven.compiler.target>
         <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
     </properties>
 
+
 </project>
\ No newline at end of file
diff --git a/tp/src/main/java/org/example/Contact.java b/tp/src/main/java/org/example/Contact.java
index 41229ec4a1749647d243b75ce6e95b5ce6957004..dedc3530f0a645f810c79784e555656bd78a2392 100644
--- a/tp/src/main/java/org/example/Contact.java
+++ b/tp/src/main/java/org/example/Contact.java
@@ -1,18 +1,23 @@
 package org.example;
+import java.util.*;
 
 public abstract class Contact implements Comparable<Contact>{
+    protected String type;
     //Fields
-    protected Person pers;
+    protected List<String> first_name;
+    protected String last_name;
     protected String addr;
-    protected String[] phone;
-    protected String[] email;
-    protected String[] social;
+    protected List<String> phone;
+    protected List<String> email;
+    protected List<String> social;
     protected String job;
 
     //Ctor
-    public Contact(Person pers, String addr, String[] phone, String[] email,
-                   String[] social, String job){
-        this.pers = pers;
+    public Contact(String type, List<String> first_name, String last_name, String addr, List<String> phone, List<String> email,
+                   List<String> social, String job){
+        this.type = type;
+        this.first_name = first_name;
+        this.last_name  = last_name;
         this.addr = addr;
         this.phone = phone;
         this.email = email;
@@ -21,22 +26,23 @@ public abstract class Contact implements Comparable<Contact>{
     }
 
     //Getter
-    public Person getPers(){
-        return pers;
-    }
+    public String get_type() { return type;}
+    public String getLast_name() { return last_name;}
+
+    public List<String> getFirst_name() { return first_name; }
     public String getAddr() {
         return addr;
     }
 
-    public String[] getPhone() {
+    public List<String> getPhone() {
         return phone;
     }
 
-    public String[] getEmail() {
+    public List<String> getEmail() {
         return email;
     }
 
-    public String[] getSocial() {
+    public List<String> getSocial() {
         return social;
     }
 
@@ -46,22 +52,22 @@ public abstract class Contact implements Comparable<Contact>{
     //Test
 
     //Setter
-    public void setPers(Person pers){
-        this.pers = pers;
-    }
+    public void set_type(String type){this.type = type;}
+    public void setFirst_name(List<String> first_name){this.first_name = first_name;}
+    public void setLast_name(String last_name){this.last_name = last_name;}
     public void setAddr(String addr) {
         this.addr = addr;
     }
 
-    public void setPhone(String[] phone) {
+    public void setPhone(List<String> phone) {
         this.phone = phone;
     }
 
-    public void setEmail(String[] email) {
+    public void setEmail(List<String> email) {
         this.email = email;
     }
 
-    public void setSocial(String[] social) {
+    public void setSocial(List<String> social) {
         this.social = social;
     }
 
@@ -70,33 +76,38 @@ public abstract class Contact implements Comparable<Contact>{
     }
 
     //Methodes
+    //Type cannot be edited
+    public void EditFirstName(List<String> newFirstName){
+        this.first_name = newFirstName;
+    }
+    public void EditLastName(String newLastName){
+        this.last_name = newLastName;
+    }
     public void EditAddress(String newAddrr){
         this.addr = newAddrr;
     }
-    public void EditPhone(String[] newPhone){
+    public void EditPhone(List<String> newPhone){
         this.phone = newPhone;
     }
-    public void EditEmail(String[] newEmail){
+    public void EditEmail(List<String> newEmail){
         this.email = newEmail;
     }
-    public void EditSocial(String[] newSocial){
+    public void EditSocial(List<String> newSocial){
         this.social = newSocial;
     }
     public void  EditJob(String newJob){
         this.job = newJob;
     }
-    public void EditFirstName(String newFirst){
-        this.pers.EditFirstName(newFirst);
-    }
-    public void EditLastName(String newLast){
-        this.pers.EditLastName(newLast);
-    }
     @Override
     public String toString(){
+        String w_names = "";
         String w_phone = "";
         String w_email = "";
         String w_social = "";
 
+        for(String elem: this.first_name){
+            w_names += elem + " ";
+        }
         for(String elem: this.phone){
             w_phone += elem + " ";
         }
@@ -107,11 +118,11 @@ public abstract class Contact implements Comparable<Contact>{
             w_social += elem + " ";
         }
 
-        return pers.toString() + "\n" + this.addr + "\n" + w_phone + "\n" + w_email + "\n"
+        return w_names + this.last_name + "\n" + this.addr + "\n" + w_phone + "\n" + w_email + "\n"
                 + w_social + "\n" + this.job;
     }
     @Override
     public int compareTo(Contact c){
-        return this.pers.getFirst_name().compareTo(c.getPers().getFirst_name());
+        return this.first_name.get(0).compareTo(c.first_name.get(0));
     }
 }
diff --git a/tp/src/main/java/org/example/Family.java b/tp/src/main/java/org/example/Family.java
index b5266bc4e56a2f52b0ce2e422a2eabf07186c6c6..1aae917d7efdfdcca02ec8d3ff93f83d507babea 100644
--- a/tp/src/main/java/org/example/Family.java
+++ b/tp/src/main/java/org/example/Family.java
@@ -1,19 +1,26 @@
 package org.example;
 
+import java.util.ArrayList;
+import java.util.List;
+
 public class Family extends Contact{
     private String relation;
-    public Family(Person pers, String addr, String[] phone, String[] email,
-                  String[] social, String job, String relation){
-        super(pers, addr, phone, email, social, job);
+    public Family(List<String> first_name, String last_name, String addr, List<String> phone, List<String> email,
+                  List<String> social, String job, String relation){
+        super("Family", first_name, last_name, addr, phone, email, social, job);
         this.relation = relation;
     }
 
     @Override
     public String toString(){
+        String w_names = "";
         String w_phone = "";
         String w_email = "";
         String w_social = "";
 
+        for(String elem: this.first_name){
+            w_names += elem + " ";
+        }
         for(String elem: this.phone){
             w_phone += elem + " ";
         }
@@ -24,7 +31,7 @@ public class Family extends Contact{
             w_social += elem + " ";
         }
 
-        return pers.toString() + "\n" + this.addr + "\n" + w_phone + "\n" + w_email + "\n"
+        return w_names + this.last_name + "\n" + this.addr + "\n" + w_phone + "\n" + w_email + "\n"
                 + w_social + "\n" + this.job + "\n" + this.relation;
     }
 }
diff --git a/tp/src/main/java/org/example/Friend.java b/tp/src/main/java/org/example/Friend.java
index 16e8c74067b4f18447310337e8126feecc154f22..ae75ea235ccac2bbe7b8057f48f6bcee08e27c7f 100644
--- a/tp/src/main/java/org/example/Friend.java
+++ b/tp/src/main/java/org/example/Friend.java
@@ -1,9 +1,12 @@
 package org.example;
 
+import java.util.ArrayList;
+import java.util.List;
+
 public class Friend extends Contact{
 
-    public Friend(Person pers, String addr, String[] phone, String[] email,
-                  String[] social, String job){
-        super(pers, addr, phone, email, social, job);
+    public Friend(List<String> first_name, String last_name, String addr, List<String> phone, List<String> email,
+                  List<String> social, String job){
+        super("Friend", first_name, last_name, addr, phone, email, social, job);
     }
 }
diff --git a/tp/src/main/java/org/example/Main.java b/tp/src/main/java/org/example/Main.java
index b56cdca075561522bdc137fbdfd86be403306323..4b9ac2b5c7d4ebb81abd01e3cdeb2509d01294b9 100644
--- a/tp/src/main/java/org/example/Main.java
+++ b/tp/src/main/java/org/example/Main.java
@@ -1,6 +1,6 @@
 package org.example;
+import java.io.*;
 import java.util.*;
-
 public class Main {
     static ArrayList<Contact> contactArray = new ArrayList<Contact>();
     public static void main(String[] args) {
@@ -11,6 +11,8 @@ public class Main {
             System.out.println("[2] Delete Contact");
             System.out.println("[3] Show Contact");
             System.out.println("[4] Search Contact");
+            System.out.println("[5] Export Contact");
+            System.out.println("[6] Import Contact");
 
             Scanner myObj = new Scanner(System.in);
             String usrInput = myObj.nextLine();
@@ -31,6 +33,12 @@ public class Main {
                 case "4":
                     Search();
                     break;
+                case "5":
+                    Export(contactArray);
+                    break;
+                case "6":
+                    //Import(contactArray);
+                    break;
                 default:
                     System.out.println("Please enter valid input");
                     break;
@@ -75,7 +83,6 @@ public class Main {
         String firstName = myObj.nextLine();
         System.out.println("Enter last names");
         String lastName = myObj.nextLine();
-        Person p = new Person(lastName, firstName);
 
         System.out.println("Enter Address");
         String address = myObj.nextLine();
@@ -88,11 +95,12 @@ public class Main {
         System.out.println("Enter Job");
         String job = myObj.nextLine();
 
-        String[] phoneList = phone.split(" ");
-        String[] emailList = phone.split(" ");
-        String[] socialList = phone.split(" ");
+        List<String> first_name_list = Arrays.asList(firstName.split(" "));
+        List<String> phoneList = Arrays.asList(phone.split(" "));
+        List<String> emailList = Arrays.asList(emails.split(" "));
+        List<String> socialList = Arrays.asList(social.split(" "));
 
-        Friend pal = new Friend(p, address, phoneList, emailList, socialList, job);
+        Friend pal = new Friend(first_name_list, lastName, address, phoneList, emailList, socialList, job);
         Add(pal);
     }
     /*
@@ -104,7 +112,6 @@ public class Main {
         String firstName = myObj.nextLine();
         System.out.println("Enter last names");
         String lastName = myObj.nextLine();
-        Person p = new Person(lastName, firstName);
 
         System.out.println("Enter Address");
         String address = myObj.nextLine();
@@ -119,42 +126,43 @@ public class Main {
         System.out.println("Enter relation");
         String relation = myObj.nextLine();
 
-        String[] phoneList = phone.split(" ");
-        String[] emailList = phone.split(" ");
-        String[] socialList = phone.split(" ");
+        List<String> first_name_list = Arrays.asList(firstName.split(" "));
+        List<String> phoneList = Arrays.asList(phone.split(" "));
+        List<String> emailList = Arrays.asList(emails.split(" "));
+        List<String> socialList = Arrays.asList(social.split(" "));
 
-        Family fam = new Family(p, address, phoneList, emailList, socialList, job, relation);
+        Family fam = new Family(first_name_list, lastName, address, phoneList, emailList, socialList, job, relation);
         Add(fam);
     }
     /*
     * Adds a professional contact (obviously)
      */
     public static void AddPro(){
-        System.out.println("Enter first names");
+        System.out.println("Enter first name(s)");
         Scanner myObj = new Scanner(System.in);
         String firstName = myObj.nextLine();
-        System.out.println("Enter last names");
+        System.out.println("Enter last name");
         String lastName = myObj.nextLine();
-        Person p = new Person(lastName, firstName);
 
         System.out.println("Enter Address");
         String address = myObj.nextLine();
-        System.out.println("Enter Phone");
+        System.out.println("Enter Phone (use / as separator)");
         String phone = myObj.nextLine();
-        System.out.println("Enter Emails");
+        System.out.println("Enter Emails (use / as separator)");
         String emails = myObj.nextLine();
-        System.out.println("Enter Socials");
+        System.out.println("Enter Socials (use / as separator)");
         String social = myObj.nextLine();
         System.out.println("Enter Job");
         String job = myObj.nextLine();
         System.out.println("Enter Work Place");
         String wp = myObj.nextLine();
 
-        String[] phoneList = phone.split(" ");
-        String[] emailList = phone.split(" ");
-        String[] socialList = phone.split(" ");
+        List<String> first_name_list = Arrays.asList(firstName.split(" "));
+        List<String> phoneList = Arrays.asList(phone.split("/"));
+        List<String> emailList = Arrays.asList(emails.split("/"));
+        List<String> socialList = Arrays.asList(social.split("/"));
 
-        Professional pro = new Professional(p, address, phoneList, emailList, socialList, job, wp);
+        Professional pro = new Professional(first_name_list, lastName, address, phoneList, emailList, socialList, job, wp);
         Add(pro);
     }
     public static void Add(Contact c){
@@ -165,8 +173,7 @@ public class Main {
         int size_array = contactArray.size();
         if(size_array == 0){
             System.out.println("List is empty");
-        }
-        else{
+        } else{
             System.out.println("Which contact?");
             Scanner myObj = new Scanner(System.in);
             String contactNb = myObj.nextLine();
@@ -184,7 +191,8 @@ public class Main {
                     case "0":
                         System.out.println("Enter new first names");
                         String editFirst = myObj.nextLine();
-                        contactArray.get(Integer.parseInt(contactNb)).EditFirstName(editFirst);
+                        List<String> new_first = Arrays.asList(editFirst.split(" "));
+                        contactArray.get(Integer.parseInt(contactNb)).EditFirstName(new_first);
                         break;
                     case "1":
                         System.out.println("Enter new last names");
@@ -194,24 +202,24 @@ public class Main {
                     case "2":
                         System.out.println("Enter new first address");
                         String editAddr = myObj.nextLine();
-                        contactArray.get(Integer.parseInt(contactNb)).EditFirstName(editAddr);
+                        contactArray.get(Integer.parseInt(contactNb)).EditAddress(editAddr);
                         break;
                     case "3":
                         System.out.println("Enter new phone numbers (use / as separator)");
                         String editPhone = myObj.nextLine();
-                        String[] editPhoneList = editPhone.split("/");
+                        List<String> editPhoneList = Arrays.asList(editPhone.split("/"));
                         contactArray.get(Integer.parseInt(contactNb)).EditPhone(editPhoneList);
                         break;
                     case "4":
                         System.out.println("Enter new Emails (use / as separator)");
                         String editEmail = myObj.nextLine();
-                        String[] editEmailList = editEmail.split("/");
+                        List<String> editEmailList = Arrays.asList(editEmail.split("/"));
                         contactArray.get(Integer.parseInt(contactNb)).EditEmail(editEmailList);
                         break;
                     case "5":
                         System.out.println("Enter new Socials (use / as separator)");
                         String editSocial = myObj.nextLine();
-                        String[] editSocialList = editSocial.split("/");
+                        List<String> editSocialList = Arrays.asList(editSocial.split("/"));
                         contactArray.get(Integer.parseInt(contactNb)).EditEmail(editSocialList);
                         break;
                     case "6":
@@ -223,8 +231,7 @@ public class Main {
                         System.out.println("Please enter correct value");
                         break;
                 }
-            }
-            else {
+            } else {
                 System.out.println("Please enter valid input");
                 System.out.println("It must be a number between 0 and " + (size_array -1));
             }
@@ -234,15 +241,13 @@ public class Main {
         int size_array = contactArray.size();
         if(size_array == 0){
             System.out.println("List is empty");
-        }
-        else{
+        } else{
             System.out.println("Which Contact?");
             Scanner myObj = new Scanner(System.in);
             String usrInput = myObj.nextLine();
             if(TryNumber(usrInput)){
                 contactArray.remove(usrInput);
-            }
-            else{
+            } else{
                 System.out.println("Please enter valid input");
                 System.out.println("It must be a number between 0 and " + (size_array -1));
             }
@@ -259,11 +264,48 @@ public class Main {
         Scanner myObj = new Scanner(System.in);
         String ctName = myObj.nextLine();
         for(Contact c: contactArray){
-            if(c.getPers().getFirst_name().equals(ctName)){
+            if(c.getFirst_name().equals(ctName)){
                 System.out.println(c.toString());
             }
         }
     }
+    /*
+     * Export list of contact
+     */
+    public static void Export(ArrayList<Contact> ca){
+        System.out.println("Enter save file name");
+        Scanner myObj = new Scanner(System.in);
+        String fileName = myObj.nextLine();
+
+        try{
+            BufferedWriter writer = new BufferedWriter(new FileWriter(fileName));
+            for (Contact c: ca){
+                writer.write(c.get_type() + "\n");
+                writer.write(c.getFirst_name() + "\n");
+            }
+            writer.close();
+        } catch (IOException e){
+            e.printStackTrace();
+        }
+    }
+    //TODO find good way to save
+    //Warning list
+    //Type of contact
+//    public static void Import(ArrayList<Contact> ca){
+//        System.out.println("Enter save file name");
+//        Scanner myObj = new Scanner(System.in);
+//        String fileName = myObj.nextLine();
+//        try{
+//            BufferedReader reader = new BufferedReader(new FileReader(fileName));
+//            String line;
+//            while((line = reader.readLine()) != null){
+//                AddContactToList(line);
+//            }
+//            reader.close();
+//        } catch (IOException e){
+//            e.printStackTrace();
+//        }
+//    }
     //Test if the value is a number or not and if it's withing the range of the list
     public static boolean TryNumber(String nb){
         int size_array = contactArray.size();
@@ -276,4 +318,17 @@ public class Main {
         }
         return (nbInt < size_array);
     }
+
+//    public static void AddContactToList(Contact c,String str){
+//        int cpt = 1;
+//        switch (cpt){
+//            case 1:
+//                c.setFirst_name
+//                cpt++;
+//                break;
+//            case 2:
+//                cpt++;
+//                break;
+//        }
+//    }
 }
\ No newline at end of file
diff --git a/tp/src/main/java/org/example/Professional.java b/tp/src/main/java/org/example/Professional.java
index bdb6496fc2f3647a43c0e41db510f52f71404647..fca435d755062f969b1344d3c293b69611c9f966 100644
--- a/tp/src/main/java/org/example/Professional.java
+++ b/tp/src/main/java/org/example/Professional.java
@@ -1,19 +1,26 @@
 package org.example;
 
+import java.util.ArrayList;
+import java.util.List;
+
 public class Professional extends Contact{
     private String work_place;
-    public Professional(Person pers, String addr, String[] phone, String[] email,
-                  String[] social, String job, String work_place){
-        super(pers, addr, phone, email, social, job);
+    public Professional(List<String> first_name, String last_name, String addr, List<String> phone, List<String> email,
+                        List<String> social, String job, String work_place){
+        super("Professional", first_name, last_name, addr, phone, email, social, job);
         this.work_place = work_place;
     }
 
     @Override
     public String toString(){
+        String w_names = "";
         String w_phone = "";
         String w_email = "";
         String w_social = "";
 
+        for(String elem: this.first_name){
+            w_names += elem + " ";
+        }
         for(String elem: this.phone){
             w_phone += elem + " ";
         }
@@ -24,7 +31,7 @@ public class Professional extends Contact{
             w_social += elem + " ";
         }
 
-        return pers.toString() + "\n" + this.addr + "\n" + w_phone + "\n" + w_email + "\n"
+        return w_names + last_name + "\n" + this.addr + "\n" + w_phone + "\n" + w_email + "\n"
                 + w_social + "\n" + this.job + "\n" + this.work_place;
     }
 }