diff --git a/pom.xml b/pom.xml
index 4a5aec5a6868b0edcc268530ca77dbfc4e65452b..e7cabd65d60aaaf204dbea338ecb244c04a3f1fc 100644
--- a/pom.xml
+++ b/pom.xml
@@ -8,7 +8,7 @@
         <github.account>emmanuelbruno</github.account>
         <!-- utln login for nexus (maven and docker ) repository on lsis -->
         <lsisnexus.login>emmanuel.bruno@univ-tln.fr</lsisnexus.login>
-        <app.main.class>fr.univtln.bruno.d14.simpleihm.App</app.main.class>
+        <app.main.class>fr.univtln.bruno.coursjava.librarymanager.simplegui.App</app.main.class>
     </properties>
 
     <repositories>
@@ -46,7 +46,7 @@
         <dependency>
             <groupId>fr.univtln.bruno.coursjava.librarymanager</groupId>
             <artifactId>librarymanager-observablelibrary</artifactId>
-            <version>1.0.0-dev-2</version>
+            <version>1.0.0-dev-3</version>
         </dependency>
 
         <dependency>
diff --git a/src/main/java/fr/univtln/bruno/coursjava/librarymanager/simplegui/AdherentListModel.java b/src/main/java/fr/univtln/bruno/coursjava/librarymanager/simplegui/AdherentListModel.java
new file mode 100644
index 0000000000000000000000000000000000000000..c08004ac95f8784102b6e6b4ee31eedd2abcb8d6
--- /dev/null
+++ b/src/main/java/fr/univtln/bruno/coursjava/librarymanager/simplegui/AdherentListModel.java
@@ -0,0 +1,39 @@
+package fr.univtln.bruno.coursjava.librarymanager.simplegui;
+
+
+import fr.univtln.bruno.coursjava.librarymanager.IBibliotheque;
+
+import javax.swing.*;
+import java.util.List;
+import java.util.Observable;
+import java.util.Observer;
+
+/**
+ * Created by bruno on 03/10/14.
+ */
+public class AdherentListModel extends DefaultComboBoxModel<IBibliotheque.Adhérent> implements Observer {
+    private final List<IBibliotheque.Adhérent> adhérents;
+
+    public AdherentListModel(List<IBibliotheque.Adhérent> adhérents) {
+        this.adhérents = adhérents;
+    }
+
+    @Override
+    public void update(Observable o, Object arg) {
+        //si l'adhérent selectionné n'est plus dans la liste on déselectionne.
+        if (!adhérents.contains(getSelectedItem()))
+            setSelectedItem(null);
+        else System.out.println(getSelectedItem() + " in " + adhérents);
+        fireContentsChanged(this, 0, adhérents.size() - 1);
+    }
+
+    @Override
+    public int getSize() {
+        return adhérents.size();
+    }
+
+    @Override
+    public IBibliotheque.Adhérent getElementAt(int index) {
+        return adhérents.get(index);
+    }
+}
diff --git a/src/main/java/fr/univtln/bruno/coursjava/librarymanager/simplegui/App.java b/src/main/java/fr/univtln/bruno/coursjava/librarymanager/simplegui/App.java
new file mode 100644
index 0000000000000000000000000000000000000000..3cfc51c125d1cef0adf83c6714e36e7fa8d15235
--- /dev/null
+++ b/src/main/java/fr/univtln/bruno/coursjava/librarymanager/simplegui/App.java
@@ -0,0 +1,25 @@
+package fr.univtln.bruno.coursjava.librarymanager.simplegui;
+
+import fr.univtln.bruno.coursjava.librarymanager.Bibliotheque;
+import fr.univtln.bruno.coursjava.librarymanager.BibliothequeModele;
+import fr.univtln.bruno.coursjava.librarymanager.IBibliotheque;
+
+import java.util.logging.Level;
+import java.util.logging.Logger;
+
+/**
+ * Hello world!
+ */
+public class App {
+
+    public static void main(String[] args) {
+        Logger logger = Logger.getAnonymousLogger();
+        logger.setLevel(Level.FINEST);
+
+        BibliothequeModele bibliotheque = null;
+        bibliotheque = new BibliothequeModele<Bibliotheque>("Ma Bibliothèque");
+        new VueBibliotheque(bibliotheque);
+        bibliotheque.addAdhérent("jean.martin@test.fr", "Jean", "Martin", IBibliotheque.Adhérent.Statut.ENSEIGNANT);
+        bibliotheque.addAdhérent("mdurand@labas.com", "Marie", "Durand", IBibliotheque.Adhérent.Statut.ETUDIANT);
+    }
+}
diff --git a/src/main/java/fr/univtln/bruno/coursjava/librarymanager/simplegui/ControleurBibliotheque.java b/src/main/java/fr/univtln/bruno/coursjava/librarymanager/simplegui/ControleurBibliotheque.java
new file mode 100644
index 0000000000000000000000000000000000000000..36c986b802c26dc1c81d896c260aeabe2b8d37ff
--- /dev/null
+++ b/src/main/java/fr/univtln/bruno/coursjava/librarymanager/simplegui/ControleurBibliotheque.java
@@ -0,0 +1,102 @@
+package fr.univtln.bruno.coursjava.librarymanager.simplegui;
+
+import fr.univtln.bruno.coursjava.librarymanager.BibliothequeModele;
+import fr.univtln.bruno.coursjava.librarymanager.IBibliotheque;
+
+import javax.swing.event.DocumentEvent;
+import javax.swing.event.DocumentListener;
+import javax.swing.text.BadLocationException;
+import javax.swing.text.Document;
+import javax.swing.text.PlainDocument;
+import java.util.Collection;
+import java.util.regex.Pattern;
+
+/**
+ * Created by bruno on 03/10/14.
+ */
+public class ControleurBibliotheque {
+    public static final Pattern VALID_EMAIL_ADDRESS_REGEX =
+            Pattern.compile("^[A-Z0-9._%+-]+@[A-Z0-9.-]+\\.[A-Z]{2,6}$", Pattern.CASE_INSENSITIVE);
+    private VueBibliotheque vueBibliotheque;
+    private BibliothequeModele modeleBibliotheque;
+    private Document emailNouvelAdherentModel = new PlainDocument();
+    private Document nomNouvelAdherentModel = new PlainDocument();
+    private Document prenomNouvelAdherentModel = new PlainDocument();
+
+
+    public ControleurBibliotheque(final VueBibliotheque vueBibliotheque, BibliothequeModele modeleBibliotheque) {
+        this.vueBibliotheque = vueBibliotheque;
+        this.modeleBibliotheque = modeleBibliotheque;
+
+        DocumentListener ecouteurChangementTexte = new DocumentListener() {
+            @Override
+            public void insertUpdate(DocumentEvent e) {
+                changedUpdate(e);
+            }
+
+            @Override
+            public void removeUpdate(DocumentEvent e) {
+                changedUpdate(e);
+            }
+
+            @Override
+            public void changedUpdate(DocumentEvent e) {
+                try {
+                    if ((emailNouvelAdherentModel.getLength() == 0
+                            || !(VALID_EMAIL_ADDRESS_REGEX.matcher(emailNouvelAdherentModel.getText(0, emailNouvelAdherentModel.getLength())).find())
+                            || nomNouvelAdherentModel.getLength() == 0 || prenomNouvelAdherentModel.getLength() == 0))
+                        vueBibliotheque.setCreationAdherentOk(false);
+                    else
+                        vueBibliotheque.setCreationAdherentOk(true);
+                } catch (BadLocationException e1) {
+                    e1.printStackTrace();
+                }
+            }
+        };
+        emailNouvelAdherentModel.addDocumentListener(ecouteurChangementTexte);
+        nomNouvelAdherentModel.addDocumentListener(ecouteurChangementTexte);
+        prenomNouvelAdherentModel.addDocumentListener(ecouteurChangementTexte);
+
+    }
+
+    public Document getEmailNouvelAdherentModel() {
+        return emailNouvelAdherentModel;
+    }
+
+    public Document getNomNouvelAdherentModel() {
+        return nomNouvelAdherentModel;
+    }
+
+    public Document getPrenomNouvelAdherentModel() {
+        return prenomNouvelAdherentModel;
+    }
+
+    public void ajouterAdherent() {
+        try {
+            modeleBibliotheque.addAdhérent(
+                    emailNouvelAdherentModel.getText(0, emailNouvelAdherentModel.getLength()), prenomNouvelAdherentModel.getText(0, prenomNouvelAdherentModel.getLength()),
+                    nomNouvelAdherentModel.getText(0, nomNouvelAdherentModel.getLength()), IBibliotheque.Adhérent.Statut.ENSEIGNANT);
+        } catch (BadLocationException e) {
+            e.printStackTrace();
+        }
+        clearAdherent();
+    }
+
+    public void clearAdherent() {
+        try {
+            emailNouvelAdherentModel.remove(0, emailNouvelAdherentModel.getLength());
+            nomNouvelAdherentModel.remove(0, nomNouvelAdherentModel.getLength());
+            prenomNouvelAdherentModel.remove(0, prenomNouvelAdherentModel.getLength());
+        } catch (BadLocationException e) {
+            e.printStackTrace();
+        }
+    }
+
+    public void removeAdherent(IBibliotheque.Adhérent adhérent) {
+        modeleBibliotheque.remove(adhérent);
+    }
+
+    public Collection<IBibliotheque.Adhérent> getAdherents() {
+        return modeleBibliotheque.getAdhérents();
+    }
+}
diff --git a/src/main/java/fr/univtln/bruno/coursjava/librarymanager/simplegui/VueBibliotheque.java b/src/main/java/fr/univtln/bruno/coursjava/librarymanager/simplegui/VueBibliotheque.java
new file mode 100644
index 0000000000000000000000000000000000000000..4bab999f76f488fc7cf3c6b561bb7a9bbea8daeb
--- /dev/null
+++ b/src/main/java/fr/univtln/bruno/coursjava/librarymanager/simplegui/VueBibliotheque.java
@@ -0,0 +1,277 @@
+package fr.univtln.bruno.coursjava.librarymanager.simplegui;
+
+import fr.univtln.bruno.coursjava.librarymanager.Bibliotheque;
+import fr.univtln.bruno.coursjava.librarymanager.BibliothequeModele;
+import fr.univtln.bruno.coursjava.librarymanager.IBibliotheque;
+
+import javax.swing.*;
+import javax.swing.event.ListSelectionEvent;
+import javax.swing.event.ListSelectionListener;
+import java.awt.*;
+import java.awt.event.ActionEvent;
+import java.awt.event.ActionListener;
+import java.awt.event.ItemEvent;
+import java.awt.event.ItemListener;
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Observable;
+import java.util.Observer;
+
+/**
+ * Created by bruno on 03/10/14.
+ */
+public class VueBibliotheque extends JFrame {
+    private final BibliothequeModele<Bibliotheque> modeleBibliotheque;
+    private final ControleurBibliotheque controleurBibliotheque;
+
+    private final AdherentListModel adherentListModel;
+
+    private final JPanel adherentsSuppressionPanel = new JPanel(new GridBagLayout());
+    private final JPanel adherentDetailPanel = new JPanel(new GridBagLayout());
+    private final JPanel adherentAjoutPanel = new JPanel(new GridBagLayout());
+
+    private final JList<IBibliotheque.Adhérent> adhérentJList;
+    private final JButton supprimerAdherentJButton = new JButton("Supprimer Adhérent");
+
+    private final JComboBox<IBibliotheque.Adhérent> adhérentJComboBox;
+    private final JTextField emailAdherentAjoutjTextField;
+    private final JTextField nomAdherentAjoutjTextField;
+    private final JTextField prenomAdherentAjoutjTextField;
+    private final JLabel emailAdherentJLabel = new JLabel("Email");
+    private final JLabel nomAdherentJLabel = new JLabel("Nom");
+    private final JLabel prenomAdherentJLabel = new JLabel("Prénom");
+    private final JButton annulerAdherentJButton = new JButton("Annuler");
+    private final JButton ajouterAdherentJButton = new JButton("Ajouter Adhérent");
+
+    private final JTextField idAdherentDetailjTextField = new JTextField();
+    private final JTextField prenomAherentDetailjTextField = new JTextField();
+    private final JTextField nomAherentDetailjTextField = new JTextField();
+
+    public VueBibliotheque(BibliothequeModele modeleBibliotheque) {
+
+        super("Bibliotheque");
+        setSize(800, 600);
+
+        this.modeleBibliotheque = modeleBibliotheque;
+        this.controleurBibliotheque = new ControleurBibliotheque(this, modeleBibliotheque);
+        this.adherentListModel = new AdherentListModel(new ArrayList(this.modeleBibliotheque.getAdhérents()));
+
+        modeleBibliotheque.addObserver(adherentListModel);
+
+        adhérentJList = new JList<>(adherentListModel);
+        adhérentJList.setCellRenderer(new AdherentRenderer());
+        adhérentJList.addListSelectionListener(new ListSelectionListener() {
+            @Override
+            public void valueChanged(ListSelectionEvent e) {
+                setSuppressionAdherentOk(adhérentJList.getSelectedValue() != null);
+            }
+        });
+
+        adhérentJComboBox = new JComboBox<IBibliotheque.Adhérent>(adherentListModel);
+        adhérentJComboBox.setRenderer(new AdherentRenderer());
+        adhérentJComboBox.addItemListener(new ItemListener() {
+            public void itemStateChanged(ItemEvent e) {
+                switch (e.getStateChange()) {
+                    case ItemEvent.DESELECTED:
+                        montrerDetail(null);
+                        break;
+                    case ItemEvent.SELECTED:
+                        montrerDetail(adhérentJComboBox.getItemAt(adhérentJComboBox.getSelectedIndex()));
+                        break;
+                }
+
+            }
+        });
+
+        supprimerAdherentJButton.addActionListener(new ActionListener() {
+            @Override
+            public void actionPerformed(ActionEvent e) {
+                for (IBibliotheque.Adhérent adhérent : adhérentJList.getSelectedValuesList())
+                    controleurBibliotheque.removeAdherent(adhérent);
+            }
+        });
+
+        ajouterAdherentJButton.setEnabled(false);
+        ajouterAdherentJButton.addActionListener(new ActionListener() {
+            @Override
+            public void actionPerformed(ActionEvent e) {
+                controleurBibliotheque.ajouterAdherent();
+            }
+        });
+
+        supprimerAdherentJButton.setEnabled(false);
+
+        annulerAdherentJButton.setEnabled(false);
+        annulerAdherentJButton.addActionListener(new ActionListener() {
+            @Override
+            public void actionPerformed(ActionEvent e) {
+                controleurBibliotheque.clearAdherent();
+            }
+        });
+
+        emailAdherentAjoutjTextField = new JTextField(controleurBibliotheque.getEmailNouvelAdherentModel(), "", 10);
+        nomAdherentAjoutjTextField = new JTextField(controleurBibliotheque.getNomNouvelAdherentModel(), "", 10);
+        prenomAdherentAjoutjTextField = new JTextField(controleurBibliotheque.getPrenomNouvelAdherentModel(), "", 10);
+
+        idAdherentDetailjTextField.setEditable(false);
+        prenomAherentDetailjTextField.setEditable(false);
+        nomAherentDetailjTextField.setEditable(false);
+
+        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
+
+        GridBagConstraints c = new GridBagConstraints();
+
+        // Suppression d'un adherent
+        adherentsSuppressionPanel.setBorder(BorderFactory.createTitledBorder("Suppression"));
+        c.fill = GridBagConstraints.BOTH;
+        c.anchor = GridBagConstraints.NORTHEAST;
+        c.insets = new Insets(2, 2, 2, 2);
+        c.weighty = 0.8;
+        c.gridx = 0;
+        c.gridy = 0;
+        adherentsSuppressionPanel.add(adhérentJList, c);
+
+        c.fill = GridBagConstraints.HORIZONTAL;
+        c.gridheight = 1;
+        c.weighty = 0.2;
+        c.gridx = 0;
+        c.gridy = 1;
+        adherentsSuppressionPanel.add(supprimerAdherentJButton, c);
+
+        //Le détail d'un adherent
+        adherentDetailPanel.setBorder(BorderFactory.createTitledBorder("Détails"));
+        c.gridx = 0;
+        c.gridy = 0;
+        c.gridwidth = 1;
+        adherentDetailPanel.add(adhérentJComboBox, c);
+        c.gridx = 0;
+        c.gridy = 1;
+        adherentDetailPanel.add(idAdherentDetailjTextField, c);
+        c.gridx = 0;
+        c.gridy = 2;
+        adherentDetailPanel.add(nomAherentDetailjTextField, c);
+        c.gridx = 0;
+        c.gridy = 3;
+        adherentDetailPanel.add(prenomAherentDetailjTextField, c);
+
+
+        //L'ajout d'un adherent
+        adherentAjoutPanel.setBorder(BorderFactory.createTitledBorder("Ajout"));
+        c.gridx = 0;
+        c.gridy = 0;
+        c.gridwidth = 1;
+        adherentAjoutPanel.add(emailAdherentJLabel, c);
+        c.gridx = 1;
+        c.gridy = 0;
+        adherentAjoutPanel.add(emailAdherentAjoutjTextField, c);
+
+        c.gridx = 0;
+        c.gridy = 1;
+        c.gridwidth = 1;
+        adherentAjoutPanel.add(nomAdherentJLabel, c);
+        c.gridx = 1;
+        c.gridy = 1;
+        adherentAjoutPanel.add(nomAdherentAjoutjTextField, c);
+
+        c.gridx = 0;
+        c.gridy = 2;
+        adherentAjoutPanel.add(prenomAdherentJLabel, c);
+        c.gridx = 1;
+        c.gridy = 2;
+        adherentAjoutPanel.add(prenomAdherentAjoutjTextField, c);
+
+        c.gridx = 0;
+        c.gridy = 3;
+        adherentAjoutPanel.add(annulerAdherentJButton, c);
+
+        c.gridx = 1;
+        c.gridy = 3;
+        adherentAjoutPanel.add(ajouterAdherentJButton, c);
+
+        //Ajout des panel de suppression, d'ajout et de detail
+        getContentPane().setLayout(new GridBagLayout());
+        c.fill = GridBagConstraints.HORIZONTAL;
+        c.gridx = 0;
+        c.gridy = 0;
+        getContentPane().add(adherentDetailPanel, c);
+
+        c.fill = GridBagConstraints.BOTH;
+        c.gridx = 1;
+        c.gridy = 0;
+        getContentPane().add(adherentsSuppressionPanel, c);
+
+        c.fill = GridBagConstraints.HORIZONTAL;
+        c.gridx = 2;
+        c.gridy = 0;
+        getContentPane().add(adherentAjoutPanel, c);
+        //pack();
+
+        setVisible(true);
+    }
+
+    private void setSuppressionAdherentOk(boolean b) {
+        supprimerAdherentJButton.setEnabled(b);
+    }
+
+    public void setCreationAdherentOk(boolean creationAdherentOk) {
+        ajouterAdherentJButton.setEnabled(creationAdherentOk);
+        annulerAdherentJButton.setEnabled(creationAdherentOk);
+    }
+
+    public void montrerDetail(IBibliotheque.Adhérent adhérent) {
+        if (adhérent == null) {
+            idAdherentDetailjTextField.setText("");
+            prenomAherentDetailjTextField.setText("");
+            nomAherentDetailjTextField.setText("");
+        } else {
+            idAdherentDetailjTextField.setText(String.valueOf(adhérent.getId()));
+            prenomAherentDetailjTextField.setText(adhérent.getPrenom());
+            nomAherentDetailjTextField.setText(adhérent.getNom());
+        }
+    }
+
+    private class AdherentListModel extends DefaultComboBoxModel<IBibliotheque.Adhérent> implements Observer {
+        private final java.util.List<IBibliotheque.Adhérent> adhérents;
+
+        public AdherentListModel(List<IBibliotheque.Adhérent> adhérents) {
+            this.adhérents = adhérents;
+        }
+
+        @Override
+        public void update(Observable o, Object arg) {
+            //On raffraichit la liste
+            this.adhérents.clear();
+            this.adhérents.addAll(controleurBibliotheque.getAdherents());
+
+            //si l'adhérent selectionné n'est plus dans la liste on déselectionne.
+            if (!adhérents.contains(getSelectedItem()))
+                setSelectedItem(null);
+            fireContentsChanged(this, 0, adhérents.size() - 1);
+        }
+
+        @Override
+        public int getSize() {
+            return adhérents.size();
+        }
+
+        @Override
+        public IBibliotheque.Adhérent getElementAt(int index) {
+            return adhérents.get(index);
+        }
+    }
+
+    class AdherentRenderer implements ListCellRenderer {
+        protected DefaultListCellRenderer defaultRenderer = new DefaultListCellRenderer();
+
+        public Component getListCellRendererComponent(JList list, Object value, int index,
+                                                      boolean isSelected, boolean cellHasFocus) {
+            JLabel renderer = (JLabel) defaultRenderer.getListCellRendererComponent(list, value, index,
+                    isSelected, cellHasFocus);
+            if (value instanceof IBibliotheque.Adhérent) {
+                IBibliotheque.Adhérent adherent = (IBibliotheque.Adhérent) value;
+                renderer.setText(adherent.getNom() + ", " + adherent.getPrenom());
+            }
+            return renderer;
+        }
+    }
+}
diff --git a/src/main/java/fr/univtln/bruno/d14/simpleihm/App.java b/src/main/java/fr/univtln/bruno/d14/simpleihm/App.java
deleted file mode 100644
index 953a665e13f4ccb30124590263e7edd668e0f8f1..0000000000000000000000000000000000000000
--- a/src/main/java/fr/univtln/bruno/d14/simpleihm/App.java
+++ /dev/null
@@ -1,14 +0,0 @@
-package fr.univtln.bruno.d14.simpleihm;
-
-/**
- * Hello world!
- */
-public class App {
-    public static void main(String[] args) {
-        ModeleBibliotheque bibliotheque = new ModeleBibliotheque();
-        new VueBibliotheque(bibliotheque);
-
-        bibliotheque.ajouterAuteur(new Auteur.AuteurBuilder().setPrenom("Jean").setNom("Martin").createAuteur());
-        bibliotheque.ajouterAuteur(new Auteur.AuteurBuilder().setPrenom("Marie").setNom("Durand").createAuteur());
-    }
-}
diff --git a/src/main/java/fr/univtln/bruno/d14/simpleihm/Auteur.java b/src/main/java/fr/univtln/bruno/d14/simpleihm/Auteur.java
deleted file mode 100644
index 30c57bfff5723ecfb6fa5b38f6ea1dd9a619674a..0000000000000000000000000000000000000000
--- a/src/main/java/fr/univtln/bruno/d14/simpleihm/Auteur.java
+++ /dev/null
@@ -1,91 +0,0 @@
-package fr.univtln.bruno.d14.simpleihm;
-
-import javax.xml.bind.annotation.XmlElement;
-import javax.xml.bind.annotation.XmlRootElement;
-import java.io.Serializable;
-
-/**
- * Created by bruno on 03/10/14.
- */
-//Cette annotation sert à la serialisation en XML et en JSON
-@XmlRootElement
-public class Auteur implements Serializable {
-    public static int nbAuteur = 0;
-    public int ID;
-    @XmlElement
-    private String nom;
-    @XmlElement
-    private String prenom;
-    @XmlElement
-    private String biographie;
-
-    //Le constructeur sans paramètre est obligatoire pour la sérialisation en JSON/XML
-    public Auteur() {
-    }
-
-    public static class AuteurBuilder {
-        private String nom;
-        private String prenom;
-        private String biographie = null;
-
-        public AuteurBuilder setNom(String nom) {
-            this.nom = nom;
-            return this;
-        }
-
-        public AuteurBuilder setPrenom(String prenom) {
-            this.prenom = prenom;
-            return this;
-        }
-
-        public AuteurBuilder setBiographie(String biographie) {
-            this.biographie = biographie;
-            return this;
-        }
-
-        public Auteur createAuteur() {
-            return new Auteur(nbAuteur++, nom, prenom, biographie);
-        }
-    }
-
-    public String getBiographie() {
-        return biographie;
-    }
-
-    private Auteur(int id, String nom, String prenom, String biographie) {
-        this.ID = id;
-        this.nom = nom;
-        this.prenom = prenom;
-        this.biographie = biographie;
-    }
-
-    public String getNom() {
-        return nom;
-    }
-
-    public String getPrenom() {
-        return prenom;
-    }
-
-    @Override
-    public String toString() {
-        return nom + ", " + prenom;
-    }
-
-    @Override
-    public boolean equals(Object o) {
-        if (this == o) return true;
-        if (o == null || getClass() != o.getClass()) return false;
-
-        Auteur auteur = (Auteur) o;
-
-        if (ID != auteur.ID) return false;
-
-        return true;
-    }
-
-    @Override
-    public int hashCode() {
-        return ID;
-    }
-}
diff --git a/src/main/java/fr/univtln/bruno/d14/simpleihm/AuteurListModel.java b/src/main/java/fr/univtln/bruno/d14/simpleihm/AuteurListModel.java
deleted file mode 100644
index 40f7a6aa36e84e63723c4f5d66b6e2fde9daba2d..0000000000000000000000000000000000000000
--- a/src/main/java/fr/univtln/bruno/d14/simpleihm/AuteurListModel.java
+++ /dev/null
@@ -1,36 +0,0 @@
-package fr.univtln.bruno.d14.simpleihm;
-
-import javax.swing.*;
-import java.util.List;
-import java.util.Observable;
-import java.util.Observer;
-
-/**
- * Created by bruno on 03/10/14.
- */
-public class AuteurListModel extends DefaultComboBoxModel<Auteur> implements Observer {
-    private final List<Auteur> auteurs;
-
-    public AuteurListModel(List<Auteur> auteurs) {
-        this.auteurs = auteurs;
-    }
-
-    @Override
-    public void update(Observable o, Object arg) {
-        //si l'auteur selectionné n'est plus dans la liste on déselectionne.
-        if (!auteurs.contains(getSelectedItem()))
-            setSelectedItem(null);
-        else System.out.println(getSelectedItem()+" in "+auteurs);
-        fireContentsChanged(this, 0, auteurs.size() - 1);
-    }
-
-    @Override
-    public int getSize() {
-        return auteurs.size();
-    }
-
-    @Override
-    public Auteur getElementAt(int index) {
-        return auteurs.get(index);
-    }
-}
diff --git a/src/main/java/fr/univtln/bruno/d14/simpleihm/ControleurBibliotheque.java b/src/main/java/fr/univtln/bruno/d14/simpleihm/ControleurBibliotheque.java
deleted file mode 100644
index 43dd6efbeab0a02560f2c073b48da3adbd7cf412..0000000000000000000000000000000000000000
--- a/src/main/java/fr/univtln/bruno/d14/simpleihm/ControleurBibliotheque.java
+++ /dev/null
@@ -1,82 +0,0 @@
-package fr.univtln.bruno.d14.simpleihm;
-
-import javax.swing.event.DocumentEvent;
-import javax.swing.event.DocumentListener;
-import javax.swing.text.BadLocationException;
-import javax.swing.text.Document;
-import javax.swing.text.PlainDocument;
-
-/**
- * Created by bruno on 03/10/14.
- */
-public class ControleurBibliotheque {
-    private VueBibliotheque vueBibliotheque;
-    private ModeleBibliotheque modeleBibliotheque;
-
-    private Document nomNouvelAuteurModel = new PlainDocument();
-    private Document prenomNouvelAuteurModel = new PlainDocument();
-
-    public Document getNomNouvelAuteurModel() {
-        return nomNouvelAuteurModel;
-    }
-
-    public Document getPrenomNouvelAuteurModel() {
-        return prenomNouvelAuteurModel;
-    }
-
-    public ControleurBibliotheque(final VueBibliotheque vueBibliotheque, ModeleBibliotheque modeleBibliotheque) {
-        this.vueBibliotheque = vueBibliotheque;
-        this.modeleBibliotheque = modeleBibliotheque;
-
-        DocumentListener ecouteurChangementTexte = new DocumentListener() {
-            @Override
-            public void insertUpdate(DocumentEvent e) {
-                changedUpdate(e);
-            }
-
-            @Override
-            public void removeUpdate(DocumentEvent e) {
-                changedUpdate(e);
-            }
-
-            @Override
-            public void changedUpdate(DocumentEvent e) {
-                if ((nomNouvelAuteurModel.getLength() == 0 || prenomNouvelAuteurModel.getLength() == 0))
-                    vueBibliotheque.setCreationAuteurOk(false);
-                else
-                    vueBibliotheque.setCreationAuteurOk(true);
-            }
-        };
-        nomNouvelAuteurModel.addDocumentListener(ecouteurChangementTexte);
-        prenomNouvelAuteurModel.addDocumentListener(ecouteurChangementTexte);
-
-    }
-
-    public void ajouterAuteur() {
-        try {
-            modeleBibliotheque.ajouterAuteur(
-                    prenomNouvelAuteurModel.getText(0, prenomNouvelAuteurModel.getLength()),
-                    nomNouvelAuteurModel.getText(0, nomNouvelAuteurModel.getLength()));
-        } catch (BadLocationException e) {
-            e.printStackTrace();
-        }
-        clearAuteur();
-    }
-
-    public void supprimerAuteur(final int ID) {
-        modeleBibliotheque.supprimerAuteur(ID);
-    }
-
-    public void supprimerAuteur(Auteur auteur) {
-        modeleBibliotheque.supprimerAuteur(auteur);
-    }
-
-    public void clearAuteur() {
-        try {
-            nomNouvelAuteurModel.remove(0, nomNouvelAuteurModel.getLength());
-            prenomNouvelAuteurModel.remove(0, prenomNouvelAuteurModel.getLength());
-        } catch (BadLocationException e) {
-            e.printStackTrace();
-        }
-    }
-}
diff --git a/src/main/java/fr/univtln/bruno/d14/simpleihm/ModeleBibliotheque.java b/src/main/java/fr/univtln/bruno/d14/simpleihm/ModeleBibliotheque.java
deleted file mode 100644
index 55d391ba488317e8e9a21905e1920f66fd3c4b55..0000000000000000000000000000000000000000
--- a/src/main/java/fr/univtln/bruno/d14/simpleihm/ModeleBibliotheque.java
+++ /dev/null
@@ -1,46 +0,0 @@
-package fr.univtln.bruno.d14.simpleihm;
-
-import java.util.ArrayList;
-import java.util.List;
-import java.util.Observable;
-
-/**
- * Created by bruno on 03/10/14.
- */
-public class ModeleBibliotheque extends Observable {
-    final List<Auteur> auteurs = new ArrayList();
-
-    public enum ModeleBibliothequeEvent {AUTEUR, DOCUMENT, MATERIEL}
-
-    public Auteur getAuteur(final int ID) {
-        for (Auteur auteur : auteurs)
-            if (auteur.ID == ID) return auteur;
-        return null;
-    }
-
-    public void ajouterAuteur(String prenom, String nom) {
-        ajouterAuteur(new Auteur.AuteurBuilder().setPrenom(prenom).setNom(nom).createAuteur());
-    }
-
-    public void ajouterAuteur(Auteur auteur) {
-        auteurs.add(auteur);
-        //On previent les observateurs du changement
-        setChanged();
-        notifyObservers(ModeleBibliothequeEvent.AUTEUR);
-    }
-
-    public void supprimerAuteur(final int ID) {
-        supprimerAuteur(getAuteur(ID));
-    }
-
-    public void supprimerAuteur(Auteur auteur) {
-        auteurs.remove(auteur);
-        //On previent les observateurs du changement
-        setChanged();
-        notifyObservers(ModeleBibliothequeEvent.AUTEUR);
-    }
-
-    public List<Auteur> getAuteurs() {
-        return auteurs;
-    }
-}
diff --git a/src/main/java/fr/univtln/bruno/d14/simpleihm/VueBibliotheque.java b/src/main/java/fr/univtln/bruno/d14/simpleihm/VueBibliotheque.java
deleted file mode 100644
index d2fd81ace4c6d079394efaec9564d1254fa1a3ad..0000000000000000000000000000000000000000
--- a/src/main/java/fr/univtln/bruno/d14/simpleihm/VueBibliotheque.java
+++ /dev/null
@@ -1,215 +0,0 @@
-package fr.univtln.bruno.d14.simpleihm;
-
-import javax.swing.*;
-import javax.swing.event.ListSelectionEvent;
-import javax.swing.event.ListSelectionListener;
-import java.awt.*;
-import java.awt.event.ActionEvent;
-import java.awt.event.ActionListener;
-import java.awt.event.ItemEvent;
-import java.awt.event.ItemListener;
-
-/**
- * Created by bruno on 03/10/14.
- */
-public class VueBibliotheque extends JFrame {
-    private final ModeleBibliotheque modeleBibliotheque;
-    private final ControleurBibliotheque controleurBibliotheque;
-
-    private final AuteurListModel auteurListModel;
-
-    private final JPanel auteursSuppressionPanel = new JPanel(new GridBagLayout());
-    private final JPanel auteurDetailPanel = new JPanel(new GridBagLayout());
-    private final JPanel auteurAjoutPanel = new JPanel(new GridBagLayout());
-
-    private final JList<Auteur> auteurSuppressionJList;
-    private final JButton supprimerAuteurJButton = new JButton("Supprimer Auteur");
-
-    private final JComboBox<Auteur> auteurDetailJComboBox;
-    private final JTextField nomAuteurAjoutjTextField;
-    private final JTextField prenomAuteurAjoutjTextField;
-    private final JLabel nomAuteurJLabel = new JLabel("Nom");
-    private final JLabel prenomAuteurJLabel = new JLabel("Prénom");
-    private final JButton annulerAuteurJButton = new JButton("Annuler");
-    private final JButton ajouterAuteurJButton = new JButton("Ajouter Auteur");
-
-    private final JTextField idAuteurDetailjTextField = new JTextField();
-    private final JTextField prenomAuteurDetailjTextField = new JTextField();
-    private final JTextField nomAuteurDetailjTextField = new JTextField();
-
-    public VueBibliotheque(ModeleBibliotheque modeleBibliotheque) {
-        super("Bibliotheque");
-        setSize(800, 600);
-
-        this.modeleBibliotheque = modeleBibliotheque;
-        this.controleurBibliotheque = new ControleurBibliotheque(this, modeleBibliotheque);
-        this.auteurListModel = new AuteurListModel(this.modeleBibliotheque.getAuteurs());
-
-        modeleBibliotheque.addObserver(auteurListModel);
-
-        auteurSuppressionJList = new JList<>(auteurListModel);
-        auteurSuppressionJList.addListSelectionListener(new ListSelectionListener() {
-            @Override
-            public void valueChanged(ListSelectionEvent e) {
-                setSuppressionAuteurOk(auteurSuppressionJList.getSelectedValue() != null);
-            }
-        });
-
-        auteurDetailJComboBox = new JComboBox<Auteur>(auteurListModel);
-        auteurDetailJComboBox.addItemListener(new ItemListener() {
-            @Override
-            public void itemStateChanged(ItemEvent e) {
-                switch (e.getStateChange()) {
-                    case ItemEvent.DESELECTED:
-                        montrerDetail(null);
-                        break;
-                    case ItemEvent.SELECTED:
-                        montrerDetail(auteurDetailJComboBox.getItemAt(auteurDetailJComboBox.getSelectedIndex()));
-                        break;
-                }
-
-            }
-        });
-
-        supprimerAuteurJButton.addActionListener(new ActionListener() {
-            @Override
-            public void actionPerformed(ActionEvent e) {
-                for (Auteur auteur : auteurSuppressionJList.getSelectedValuesList())
-                    controleurBibliotheque.supprimerAuteur(auteur);
-            }
-        });
-
-        ajouterAuteurJButton.setEnabled(false);
-        ajouterAuteurJButton.addActionListener(new ActionListener() {
-            @Override
-            public void actionPerformed(ActionEvent e) {
-                controleurBibliotheque.ajouterAuteur();
-            }
-        });
-
-        supprimerAuteurJButton.setEnabled(false);
-
-        annulerAuteurJButton.setEnabled(false);
-        annulerAuteurJButton.addActionListener(new ActionListener() {
-            @Override
-            public void actionPerformed(ActionEvent e) {
-                controleurBibliotheque.clearAuteur();
-            }
-        });
-
-        nomAuteurAjoutjTextField = new JTextField(controleurBibliotheque.getNomNouvelAuteurModel(), "", 10);
-        prenomAuteurAjoutjTextField = new JTextField(controleurBibliotheque.getPrenomNouvelAuteurModel(), "", 10);
-
-        idAuteurDetailjTextField.setEditable(false);
-        prenomAuteurDetailjTextField.setEditable(false);
-        nomAuteurDetailjTextField.setEditable(false);
-
-        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
-
-        GridBagConstraints c = new GridBagConstraints();
-
-        // Suppression d'un auteur
-        auteursSuppressionPanel.setBorder(BorderFactory.createTitledBorder("Suppression"));
-        c.fill = GridBagConstraints.BOTH;
-        c.anchor = GridBagConstraints.NORTHEAST;
-        c.insets = new Insets(2, 2, 2, 2);
-        c.weighty = 0.8;
-        c.gridx = 0;
-        c.gridy = 0;
-        auteursSuppressionPanel.add(auteurSuppressionJList, c);
-
-        c.fill = GridBagConstraints.HORIZONTAL;
-        c.gridheight = 1;
-        c.weighty = 0.2;
-        c.gridx = 0;
-        c.gridy = 1;
-        auteursSuppressionPanel.add(supprimerAuteurJButton, c);
-
-        //Le détail d'un auteur
-        auteurDetailPanel.setBorder(BorderFactory.createTitledBorder("Détails"));
-        c.gridx = 0;
-        c.gridy = 0;
-        c.gridwidth = 1;
-        auteurDetailPanel.add(auteurDetailJComboBox, c);
-        c.gridx = 0;
-        c.gridy = 1;
-        auteurDetailPanel.add(idAuteurDetailjTextField, c);
-        c.gridx = 0;
-        c.gridy = 2;
-        auteurDetailPanel.add(nomAuteurDetailjTextField, c);
-        c.gridx = 0;
-        c.gridy = 3;
-        auteurDetailPanel.add(prenomAuteurDetailjTextField, c);
-
-
-        //L'ajout d'un auteur
-        auteurAjoutPanel.setBorder(BorderFactory.createTitledBorder("Ajout"));
-        c.gridx = 0;
-        c.gridy = 0;
-        c.gridwidth = 1;
-        auteurAjoutPanel.add(nomAuteurJLabel, c);
-
-        c.gridx = 1;
-        c.gridy = 0;
-        auteurAjoutPanel.add(nomAuteurAjoutjTextField, c);
-
-        c.gridx = 0;
-        c.gridy = 1;
-        auteurAjoutPanel.add(prenomAuteurJLabel, c);
-
-        c.gridx = 1;
-        c.gridy = 1;
-        auteurAjoutPanel.add(prenomAuteurAjoutjTextField, c);
-
-        c.gridx = 0;
-        c.gridy = 2;
-        auteurAjoutPanel.add(annulerAuteurJButton, c);
-
-        c.gridx = 1;
-        c.gridy = 2;
-        auteurAjoutPanel.add(ajouterAuteurJButton, c);
-
-        //Ajout des panel de suppression, d'ajout et de detail
-        getContentPane().setLayout(new GridBagLayout());
-        c.fill = GridBagConstraints.HORIZONTAL;
-        c.gridx = 0;
-        c.gridy = 0;
-        getContentPane().add(auteurDetailPanel, c);
-
-        c.fill = GridBagConstraints.BOTH;
-        c.gridx = 1;
-        c.gridy = 0;
-        getContentPane().add(auteursSuppressionPanel, c);
-
-        c.fill = GridBagConstraints.HORIZONTAL;
-        c.gridx = 2;
-        c.gridy = 0;
-        getContentPane().add(auteurAjoutPanel, c);
-        //pack();
-
-        setVisible(true);
-    }
-
-    private void setSuppressionAuteurOk(boolean b) {
-        supprimerAuteurJButton.setEnabled(b);
-    }
-
-    public void setCreationAuteurOk(boolean creationAuteurOk) {
-        ajouterAuteurJButton.setEnabled(creationAuteurOk);
-        annulerAuteurJButton.setEnabled(creationAuteurOk);
-    }
-
-    public void montrerDetail(Auteur auteur) {
-        if (auteur==null) {
-            idAuteurDetailjTextField.setText("");
-            prenomAuteurDetailjTextField.setText("");
-            nomAuteurDetailjTextField.setText("");
-        }
-            else{
-            idAuteurDetailjTextField.setText(String.valueOf(auteur.ID));
-            prenomAuteurDetailjTextField.setText(auteur.getPrenom());
-            nomAuteurDetailjTextField.setText(auteur.getNom());
-        }
-    }
-
-}
diff --git a/src/test/java/fr/univtln/bruno/d14/AppTest.java b/src/test/java/fr/univtln/bruno/coursjava/librarymanager/simplegui/AppTest.java
similarity index 91%
rename from src/test/java/fr/univtln/bruno/d14/AppTest.java
rename to src/test/java/fr/univtln/bruno/coursjava/librarymanager/simplegui/AppTest.java
index 49feb4cbcd4dd0043d770263c7657906e6e4cf17..816e75e5412dc41d27539439e3cf7c96bbc19f06 100644
--- a/src/test/java/fr/univtln/bruno/d14/AppTest.java
+++ b/src/test/java/fr/univtln/bruno/coursjava/librarymanager/simplegui/AppTest.java
@@ -1,4 +1,4 @@
-package fr.univtln.bruno.d14;
+package fr.univtln.bruno.coursjava.librarymanager.simplegui;
 
 import junit.framework.Test;
 import junit.framework.TestCase;