diff --git a/src/main/java/ch/hepia/Hangman/Hangman.java b/src/main/java/ch/hepia/Hangman/Hangman.java
index c8727e9564fc460ca595602c9de6981460257d27..ba7b73e491a5644b9194291ee3ddecbbdcf16d11 100644
--- a/src/main/java/ch/hepia/Hangman/Hangman.java
+++ b/src/main/java/ch/hepia/Hangman/Hangman.java
@@ -1,16 +1,87 @@
 public class Hangman {
-    /*private String currentWord;
-    private String guessWord;*/
-    private static String check(String currentWord, String guessWord, char letter){
-        StringBuilder newStr = new StringBuilder(currentWord);
-        for ( int i = 0; i < guessWord.length(); i++){
-            if (guessWord.charAt(i) == letter){
+    private String secretWord;
+    private String currWord;
+    private int attemp;
+    private int failedAttempt;
+    private boolean lastTry;
+
+    private Hangman(String word){
+        this.secretWord = word;
+        this.currWord = "_".repeat(word.length());
+        this.attemp = 0;
+        this.failedAttempt = 0;
+        this.lastTry = true;
+        
+    }
+    public static Hangman withSecretWord(String word){
+        return new Hangman(word);
+    } 
+    private String currentWord(){
+        return this.currWord;
+    }
+
+    public void printCurrentWord(){
+        System.out.println("Current Word:" + this.currentWord());
+    }
+    private int attemps(){
+        return this.attemp;
+    }
+    private String secretWord(){
+        return this.secretWord;
+    }
+    private boolean lastTry(){
+        return this.lastTry;
+    }
+    public int failedAttempts(){
+        return this.failedAttempt;
+    }
+    public void printGallow(){
+        printHang(this.failedAttempts());
+    }
+    public void printGallowIfError(){
+        if (!this.lastTry()){
+            printHang(this.failedAttempts());
+        }
+    } 
+    private String check(char letter){
+        StringBuilder newStr = new StringBuilder(this.currentWord());
+        for ( int i = 0; i < this.secretWord().length(); i++){
+            if (this.secretWord().charAt(i) == letter){
                 newStr.setCharAt(i, letter);
             }
         }
         return newStr.toString();
     }
 
+    public Hangman tryWith(char letter){
+        Hangman newH = this;
+        newH.attemp++;
+        String checked = check(letter);
+        if (newH.currentWord().equals(checked)){
+            newH.failedAttempt++;
+            newH.lastTry = false;
+            return newH;
+        }
+        newH.lastTry = true;
+        newH.currWord = checked;
+        return newH;
+    }
+  
+
+    public boolean isFinished(){
+        if (this.failedAttempts() == 9 || !this.currentWord().contains("_")){
+            return true;
+        }
+        return false;
+    }
+
+    public boolean hasWon(){
+        if (this.failedAttempts()==9){
+            return false;
+        }
+        return true;
+    } 
+
     private static void printHang(int i){
         String i0 = "";
         String i1 = "----------\n|/\n|\n|\n|\n|\n|\n|";
@@ -26,7 +97,10 @@ public class Hangman {
         System.out.println(drawHangMan[i]);     
     }
     public static void main(String[] args){
-        printHang(2);
+        Hangman h = Hangman.withSecretWord("mystère");
+        String currentWord = h.currentWord();
+        
+
     }