diff --git a/settings2.dat b/settings2.dat
index 3319410d0347cb8dfb16ee8c84c45349cfab48e3..131979d294d0adc57b10ac0fb8627e0b547e2ad2 100644
Binary files a/settings2.dat and b/settings2.dat differ
diff --git a/src/GUI/game/Controller.java b/src/GUI/game/Controller.java
index 9bb7627aebc0eb2fdccca4a4abdd444224f9d420..406e9d0a22ea13f4a86157abbbfb265045e5728b 100644
--- a/src/GUI/game/Controller.java
+++ b/src/GUI/game/Controller.java
@@ -18,7 +18,7 @@ public class Controller
 {
     public View     view;
     public Model    model;
-    public Settings settings;
+ //   public Settings settings;
     public Game     game;
     
     //Mutatók külső threadekre
@@ -28,9 +28,10 @@ public class Controller
     //ha igaz, a játék leáll
     private Boolean isStopButtonPressed;
     
-    public Controller(Settings settings)
+    public Controller(Game game)
     {
-        this.settings               = settings;
+      //  this.settings               = settings;
+        this.game = game;
         this.isStopButtonPressed    = false;
    }
     
@@ -91,6 +92,8 @@ public class Controller
         
         this.model.isGameOver = true;
         
+        
+        
         EndOfGamePopUp popup;  
         popup = new EndOfGamePopUp(this);
 
diff --git a/src/GUI/game/Game.java b/src/GUI/game/Game.java
index 56999afbbb4c1c59a4caa8d378ee89059f1ef955..51d2d569026a3ec6709f3ab022a9eb1ce923d22d 100644
--- a/src/GUI/game/Game.java
+++ b/src/GUI/game/Game.java
@@ -18,21 +18,23 @@ import Program.Settings;
 public class Game  
 {
     public Controller controller;
-    public Settings settings;
+   // public Settings settings;
     public Program.Game game;
     
     public Game(Program.Settings settings, Program.Game game)
     {
-        this.settings = settings;
-        this.startGUI(null,null,null);
+      //  this.settings = settings;
         this.game = game;
+        this.startGUI(null,null,null);
+        
     }
  
     public synchronized void startGUI(Controller controller, Model model, View view)
     {
         Controller game = controller;
+        
         if( game == null )
-            game    = new Controller(this.settings);
+            game    = new Controller(this);
         
         Model gameModel = model ;
         if( gameModel == null )
@@ -42,6 +44,7 @@ public class Game
         if( gameView == null )
             gameView      = new View(game,gameModel);
         
+        
         game.setModel(gameModel);
         game.setView(gameView);
         game.setGame(this);
diff --git a/src/GUI/game/Model.java b/src/GUI/game/Model.java
index aacd7dd5424d9a225b08ad11f93b5602fb3c2f74..b8cf67c23625948e41ac86291feadda1d6743beb 100644
--- a/src/GUI/game/Model.java
+++ b/src/GUI/game/Model.java
@@ -6,6 +6,7 @@
 
 package GUI.game;
 
+import Program.Player;
 import java.awt.Color;
 import java.util.ArrayList;
 import java.util.Random;
@@ -34,7 +35,8 @@ public class Model
     {
         this.timeLeft   = 0;
         this.controller = controller;
-        squares         = new JButton[controller.settings.size][controller.settings.size];
+      // squares         = new JButton[controller.settings.size][controller.settings.size];
+        
        // int mines = 0;
         isGameOver      = false;
         isWinner        = false;
@@ -45,6 +47,7 @@ public class Model
      *   345
      *   678
      */
+    
     public  int getTimeLeft(){ return this.timeLeft; }
     public int getMines() { return this.mines; }
     public int getScore() { return this.score; }
@@ -52,9 +55,9 @@ public class Model
     public int getUncoveredFields()
     {
         int uncovered = 0;
-        for (int i = 0; i < this.controller.settings.size; i++) 
+        for (int i = 0; i < controller.game.game.settings.size; i++) 
         {
-            for (int j = 0; j < this.controller.settings.size; j++) 
+            for (int j = 0; j < controller.game.game.settings.size; j++) 
             {
                if((this.squares[i][j].getText().length() == 0) || this.squares[i][j].getText().equals(" ") || this.squares[i][j].getText().equals("?")  )
                {
@@ -82,13 +85,13 @@ public class Model
         neighbours[7] = (Integer.toString(actX)   + ":" + Integer.toString(actY-1));
         neighbours[8] = (Integer.toString(actX+1) + ":" + Integer.toString(actY-1));
 
-        if( (actX + 1) >= this.controller.settings.size)
+        if( (actX + 1) >= controller.game.game.settings.size)
         {
             neighbours[2] = "-1:-1";
             neighbours[5] = "-1:-1";
             neighbours[8] = "-1:-1";
         }
-        if( (actY+1) >= this.controller.settings.size )
+        if( (actY+1) >= controller.game.game.settings.size )
         {
             neighbours[0] = "-1:-1";
             neighbours[1] = "-1:-1";
@@ -102,9 +105,9 @@ public class Model
     private Boolean isGameOverAndWinner()
     {
         Boolean isWinner = true ;
-        for (int i = 0; i < this.controller.settings.size; i++) 
+        for (int i = 0; i < controller.game.game.settings.size; i++) 
         {
-            for (int j = 0; j < this.controller.settings.size; j++) 
+            for (int j = 0; j < controller.game.game.settings.size; j++) 
             {
                 if( this.isMined(i, j) )
                 {
@@ -117,8 +120,41 @@ public class Model
                 }
             }
         }
+        if( isWinner )
+        {
+            if( controller.game.game.settings.actualPlayer.maxScore < this.score )
+                controller.game.game.settings.actualPlayer.maxScore = this.score;
+            this.addPlayerToList();
+        }
         return isWinner;
     }
+    public void addPlayerToList()
+    {
+        if( controller.game.game.settings.players.contains(controller.game.game.settings.actualPlayer))
+        {
+            for( Player player : controller.game.game.settings.players )
+            {
+                if( player.name.equals(controller.game.game.settings.actualPlayer.name)  )
+                {
+                    if( player.maxScore < controller.game.game.settings.actualPlayer.maxScore )
+                    {
+                        controller.game.game.settings.players.remove(player);
+                        controller.game.game.settings.actualPlayer.maxScore = this.score;
+                        controller.game.game.settings.players.add(this.controller.game.game.settings.actualPlayer);
+                    }
+                    
+                }
+            }
+        }
+        else
+        {
+            //ha meg nincs benne
+            controller.game.game.settings.actualPlayer.maxScore = this.score;
+            controller.game.game.settings.players.add(controller.game.game.settings.actualPlayer);
+        }
+                
+        controller.game.game.settings.save();
+    }
     public Boolean isFlagged(int x, int y)
     {
         if( this.squares[x][y].getText().equals("?") )
@@ -127,9 +163,9 @@ public class Model
     }
     public void showAllMines(Color color)
     {
-        for (int i = 0; i < this.controller.settings.size; i++) 
+        for (int i = 0; i < controller.game.game.settings.size; i++) 
         {
-            for (int j = 0; j < this.controller.settings.size; j++) 
+            for (int j = 0; j < controller.game.game.settings.size; j++) 
             {
                 JButton actField = this.squares[i][j];
                 if( this.isMined(i, j) )
@@ -148,13 +184,13 @@ public class Model
         if( isGameOver )
             return;
         
-        System.out.println(pos[0] + ":" + pos[1]);
+       
         //EndOfGamePopUp popup;
         if( this.isMined(pos[0], pos[1]))
         {
-            for (int i = 0; i < this.controller.settings.size; i++) 
+            for (int i = 0; i < controller.game.game.settings.size; i++) 
             {
-                for (int j = 0; j < this.controller.settings.size; j++) 
+                for (int j = 0; j < controller.game.game.settings.size; j++) 
                 {
                     if( isMined(i, j))
                     {
@@ -229,7 +265,7 @@ public class Model
     }
     private boolean isMined(int x, int y)
     {
-        if( x < 0 || y < 0 || x > this.controller.settings.size || y > this.controller.settings.size )
+        if( x < 0 || y < 0 || x > controller.game.game.settings.size || y > controller.game.game.settings.size )
         {
             return false;
         }
@@ -264,16 +300,19 @@ public class Model
     {
         Random random = new Random();
         
-        int rand=0;
-        if( this.controller.settings.diff == 1 )
-            rand = 8;
-        else if( this.controller.settings.diff == 2 )
+        float rand=0;
+        if( controller.game.game.settings.diff == 1 )
             rand = 5;
-        else if( this.controller.settings.diff == 3)
+        else if( controller.game.game.settings.diff == 2 )
             rand = 3;
+        else if( controller.game.game.settings.diff == 3)
+            rand = 2;
         
-       if( random.nextInt(10000)%rand == 1 )
+       // System.out.println(rand);
+        //int fos = random.nextInt(100);
+       if( random.nextInt(100)%rand == 1 )
        {
+          
            this.mines++;
            return true;
        }
@@ -282,9 +321,13 @@ public class Model
     public void build()
     {
         int minesYet = 0;
-        for(int i=0;i<controller.settings.size;i++)
+        
+        if( this.squares == null )
+               squares         = new JButton[controller.game.game.settings.size][controller.game.game.settings.size];
+        
+        for(int i=0;i<controller.game.game.settings.size;i++)
         {
-             for(int j=0;j<controller.settings.size;j++)
+             for(int j=0;j<controller.game.game.settings.size;j++)
              {
                   squares[i][j] = new JButton();
                   squares[i][j].setSize(400,400);
@@ -306,9 +349,9 @@ public class Model
                   squares[i][j].addMouseListener(new ButtonActionListener(controller));
              }
         }
-        for(int i=0;i<controller.settings.size;i++)
+        for(int i=0;i<controller.game.game.settings.size;i++)
         {
-             for(int j=0;j<controller.settings.size;j++)
+             for(int j=0;j<controller.game.game.settings.size;j++)
              {
                   int minesAround = 0;
                   minesAround = this.calculateMinesAround(i,j);
@@ -317,6 +360,7 @@ public class Model
              }
         }
         this.controller.view.flagged = this.mines;
+        System.out.println(this.mines);
     }
     public void colorField(int x,int y, Color color, Color colorF)
     {
diff --git a/src/GUI/game/ScoreCounter.java b/src/GUI/game/ScoreCounter.java
index 0e1820cbeda4fb58070f994f03ea3afb12734188..b2c947ed74b46e44aefe8f273a994a8b7abaa529 100644
--- a/src/GUI/game/ScoreCounter.java
+++ b/src/GUI/game/ScoreCounter.java
@@ -46,22 +46,24 @@ public class ScoreCounter extends Thread
                     int time = controller.model.getTimeLeft();
                     int mines = controller.model.getMines();
                     
+                    if( time <= 0 )
+                        time = 1;
                     int uncovered = controller.model.getUncoveredFields();
-                    int covered = ( this.controller.settings.size * this.controller.settings.size ) - uncovered; 
+                    int covered = ( controller.game.game.settings.size * controller.game.game.settings.size ) - uncovered; 
                     
-                    if( this.controller.settings.diff == 0 )
+                    if( controller.game.game.settings.diff == 0 )
                     {
                         //this.score += this.score*1.5;
                     }
-                    else if( this.controller.settings.diff == 1 )
+                    else if( controller.game.game.settings.diff == 1 )
                     {
                         this.score = ( covered * mines * 8 ) / (time+1) + covered;
                     }
-                    else if( this.controller.settings.diff == 2 )
+                    else if( controller.game.game.settings.diff == 2 )
                     {
                         this.score = ( mines * 10 ) / time+1 + covered;
                     }
-                    else if( this.controller.settings.diff == 3 )
+                    else if( controller.game.game.settings.diff == 3 )
                     {
                         this.score = ( mines * 15 ) / time+1 + covered;
                     }
@@ -71,7 +73,7 @@ public class ScoreCounter extends Thread
                     sleep(1000);
                 } catch (InterruptedException ex) 
                 {
-                    System.out.println("int error");
+                    
                 }
             }
         }
diff --git a/src/GUI/game/StopWatch.java b/src/GUI/game/StopWatch.java
index 1e54f67753f2481940bc59bcfef96cf7151018ed..61e6b7e7b619f3aa6b6b548af99b69c1bbf545de 100644
--- a/src/GUI/game/StopWatch.java
+++ b/src/GUI/game/StopWatch.java
@@ -34,7 +34,7 @@ public class StopWatch extends Thread
                     sleep(1000);
                 } catch (InterruptedException ex) 
                 {
-                    System.out.println("int error");
+                  
                 }
             }
         }
diff --git a/src/GUI/game/View.java b/src/GUI/game/View.java
index 5fe8e262e87803ba4a1f77100ba3e751e7a613a8..790432e61ad8b04408339c7697593f3eff5d9605 100644
--- a/src/GUI/game/View.java
+++ b/src/GUI/game/View.java
@@ -42,7 +42,7 @@ public class View extends Window
         this.timeLeft = 0;
         this.model      = gameModel;
         this.controller = game;
-        this.setLayout(new GridLayout(controller.settings.size,controller.settings.size));
+        this.setLayout(new GridLayout(controller.game.game.settings.size,controller.game.game.settings.size));
     }
     public void timeLeft()
     {
@@ -56,7 +56,7 @@ public class View extends Window
     }
     private int calculateFrameWidth()
     {
-        int width = controller.settings.size*46;
+        int width = controller.game.game.settings.size*46;
         if( width < 350 )
             return 350;
         else
@@ -64,12 +64,12 @@ public class View extends Window
     }
     private int calculateFrameHeight()
     {
-        return (controller.settings.size+4)*26+100;
+        return (controller.game.game.settings.size+4)*26+100;
     }
     public void draw()
     {
         model.build();
-        for(int i=0;i<controller.settings.size;i++)
+        for(int i=0;i<controller.game.game.settings.size;i++)
         {
             for(JButton actButton : model.squares[i])
             {
@@ -93,7 +93,7 @@ public class View extends Window
         
         
         JPanel upper = new JPanel(new FlowLayout());
-        upper.setSize(controller.settings.size*41,100);
+        upper.setSize(controller.game.game.settings.size*41,100);
           
         this.timeLeftLabel = new JLabel();
         this.mineFlaggedLabel = new JLabel();
diff --git a/src/GUI/menu/Model.java b/src/GUI/menu/Model.java
index 5c94bd682f376efec5486dec2263e1bcc1da5c88..251e1381393ca6c1fcdb2129b374e575e3f1158c 100644
--- a/src/GUI/menu/Model.java
+++ b/src/GUI/menu/Model.java
@@ -22,4 +22,9 @@ public class Model
     public String getAboutButtonText() { return this.aboutButtonText; }
     
    
+    public void getTopPlayers()
+    {
+        
+    }
 }
+
diff --git a/src/GUI/settings/Controller.java b/src/GUI/settings/Controller.java
index c053ef894658f99beaab94639ca3aedbb9ca3edf..b395f244ae960b677bf3b51cdb88f376c5de0896 100644
--- a/src/GUI/settings/Controller.java
+++ b/src/GUI/settings/Controller.java
@@ -38,6 +38,10 @@ public class Controller
     void windowClosed() {
        this.settings.applyButtonPressed();
     }
+    public void saveSettings()
+    {
+        this.model.saveSettingsToFile();
+    }
 
     
 }
diff --git a/src/GUI/settings/Model.java b/src/GUI/settings/Model.java
index 211b9a42fef1d94089a02546c7f2c01dad388fec..a47e26c74b0d0cd6f754caad6124d9cba3b86097 100644
--- a/src/GUI/settings/Model.java
+++ b/src/GUI/settings/Model.java
@@ -6,6 +6,8 @@
 
 package GUI.settings;
 
+import Program.Player;
+
 /**
  *
  * @author Kovax
@@ -23,7 +25,8 @@ public class Model
     
     public String getTempSettingsPlayerName()
     {
-        return this.tempSettings.playerName;
+       //return this.tempSettings.playerName;3
+        return this.tempSettings.actualPlayer.name;
     }
     public int getTempSettingsBoardSize()
     {
@@ -47,9 +50,15 @@ public class Model
     public int getTempMinesPercent(int settingsDiff) {
         return this.tempSettings.availableDiff[settingsDiff];
     }
-    void saveTempSettings() 
+    public void saveSettings()
+    {
+        
+    }
+    public void saveTempSettings() 
     {
         //this.controller.settings.game.settings = null;
+        Program.Settings old = this.controller.settings.game.settings;
+
         this.controller.settings.game.settings = new Program.Settings(tempSettings);
         
     }
@@ -59,12 +68,13 @@ public class Model
     }
 
     void setPlayerName(String text) {
-        this.tempSettings.playerName=text;
+       // this.tempSettings.playerName=text;
+        this.tempSettings.actualPlayer.name = text;
     }
 
     int getSettingsDiff() {
         return this.controller.progSettings.diff;
     }
-
+    
   
 }
diff --git a/src/GUI/settings/SettingsViewPanel.form b/src/GUI/settings/SettingsViewPanel.form
index c934f3dd5a00aaa437e882adb406f85026246826..04a270d0c527d342566d7bb8fab10aaf4f7571a0 100644
--- a/src/GUI/settings/SettingsViewPanel.form
+++ b/src/GUI/settings/SettingsViewPanel.form
@@ -34,12 +34,6 @@
                               </Group>
                               <EmptySpace max="-2" attributes="0"/>
                               <Group type="103" groupAlignment="0" attributes="0">
-                                  <Group type="102" attributes="0">
-                                      <Component id="boardSize" min="-2" pref="29" max="-2" attributes="0"/>
-                                      <EmptySpace max="-2" attributes="0"/>
-                                      <Component id="boardSizeLabel" min="-2" pref="62" max="-2" attributes="0"/>
-                                  </Group>
-                                  <Component id="playerNameText" alignment="0" min="-2" pref="128" max="-2" attributes="0"/>
                                   <Group type="102" alignment="0" attributes="0">
                                       <EmptySpace min="-2" pref="4" max="-2" attributes="0"/>
                                       <Component id="buttonEasy" min="-2" max="-2" attributes="0"/>
@@ -48,11 +42,21 @@
                                       <EmptySpace min="-2" pref="2" max="-2" attributes="0"/>
                                       <Component id="buttonHard" min="-2" max="-2" attributes="0"/>
                                   </Group>
+                                  <Group type="103" alignment="0" groupAlignment="1" max="-2" attributes="0">
+                                      <Group type="102" attributes="0">
+                                          <Component id="boardSize" min="-2" pref="29" max="-2" attributes="0"/>
+                                          <EmptySpace max="-2" attributes="0"/>
+                                          <Component id="boardSizeLabel" min="-2" pref="62" max="-2" attributes="0"/>
+                                          <EmptySpace max="32767" attributes="0"/>
+                                          <Component id="jLabel5" min="-2" max="-2" attributes="0"/>
+                                      </Group>
+                                      <Component id="playerNameText" alignment="0" min="-2" pref="128" max="-2" attributes="0"/>
+                                  </Group>
                               </Group>
                           </Group>
                           <Component id="jLabel1" alignment="0" min="-2" max="-2" attributes="0"/>
                       </Group>
-                      <EmptySpace min="0" pref="109" max="32767" attributes="0"/>
+                      <EmptySpace min="0" pref="96" max="32767" attributes="0"/>
                   </Group>
                   <Group type="102" alignment="1" attributes="0">
                       <EmptySpace min="0" pref="0" max="32767" attributes="0"/>
@@ -78,11 +82,19 @@
               <EmptySpace type="separate" max="-2" attributes="0"/>
               <Group type="103" groupAlignment="0" attributes="0">
                   <Group type="102" attributes="0">
-                      <Group type="103" groupAlignment="3" attributes="0">
-                          <Component id="jLabel3" alignment="3" min="-2" max="-2" attributes="0"/>
-                          <Component id="boardSize" alignment="3" min="-2" max="-2" attributes="0"/>
+                      <Group type="103" groupAlignment="0" max="-2" attributes="0">
+                          <Group type="102" attributes="0">
+                              <Group type="103" groupAlignment="3" attributes="0">
+                                  <Component id="jLabel3" alignment="3" min="-2" max="-2" attributes="0"/>
+                                  <Component id="boardSize" max="32767" attributes="0"/>
+                              </Group>
+                              <EmptySpace type="separate" max="-2" attributes="0"/>
+                          </Group>
+                          <Group type="102" attributes="0">
+                              <Component id="jLabel5" max="32767" attributes="0"/>
+                              <EmptySpace min="-2" pref="18" max="-2" attributes="0"/>
+                          </Group>
                       </Group>
-                      <EmptySpace type="separate" max="-2" attributes="0"/>
                       <Group type="103" groupAlignment="3" attributes="0">
                           <Component id="jLabel4" alignment="3" min="-2" pref="23" max="-2" attributes="0"/>
                           <Component id="buttonEasy" alignment="3" min="-2" max="-2" attributes="0"/>
@@ -115,6 +127,7 @@
         <Property name="name" type="java.lang.String" value="playerNameText" noResource="true"/>
       </Properties>
       <Events>
+        <EventHandler event="actionPerformed" listener="java.awt.event.ActionListener" parameters="java.awt.event.ActionEvent" handler="playerNameTextActionPerformed"/>
         <EventHandler event="focusLost" listener="java.awt.event.FocusListener" parameters="java.awt.event.FocusEvent" handler="playerNameTextFocusLost"/>
       </Events>
     </Component>
@@ -199,5 +212,10 @@
         <Property name="text" type="java.lang.String" value="Cancel"/>
       </Properties>
     </Component>
+    <Component class="javax.swing.JLabel" name="jLabel5">
+      <Properties>
+        <Property name="text" type="java.lang.String" value="(Min 3 max 150)"/>
+      </Properties>
+    </Component>
   </SubComponents>
 </Form>
diff --git a/src/GUI/settings/SettingsViewPanel.java b/src/GUI/settings/SettingsViewPanel.java
index f9a95feae2bdab359e67d4bcc659466d62b6fb49..e88cf0fc4be32708201adb7e41968be17e5ed2c6 100644
--- a/src/GUI/settings/SettingsViewPanel.java
+++ b/src/GUI/settings/SettingsViewPanel.java
@@ -62,6 +62,7 @@ public class SettingsViewPanel extends Window  {
         int mines = size*size*this.model.getTempMinesPercent(this.model.getTempSettingsDiff())/100;
         this.summaryText.setEditable(false);
         this.summaryText.setText("Your board's size will be: " + size + " and difficulty will be: " + diff + " with about " + mines + " mines");
+        
     }
     private void setDiffButton()
     {
@@ -125,10 +126,16 @@ public class SettingsViewPanel extends Window  {
         summaryText = new javax.swing.JTextPane();
         saveBTN = new javax.swing.JButton();
         jButton1 = new javax.swing.JButton();
+        jLabel5 = new javax.swing.JLabel();
 
         jLabel1.setText("Settings");
 
         playerNameText.setName("playerNameText"); // NOI18N
+        playerNameText.addActionListener(new java.awt.event.ActionListener() {
+            public void actionPerformed(java.awt.event.ActionEvent evt) {
+                playerNameTextActionPerformed(evt);
+            }
+        });
         playerNameText.addFocusListener(new java.awt.event.FocusAdapter() {
             public void focusLost(java.awt.event.FocusEvent evt) {
                 playerNameTextFocusLost(evt);
@@ -189,6 +196,8 @@ public class SettingsViewPanel extends Window  {
 
         jButton1.setText("Cancel");
 
+        jLabel5.setText("(Min 3 max 150)");
+
         javax.swing.GroupLayout layout = new javax.swing.GroupLayout(this);
         this.setLayout(layout);
         layout.setHorizontalGroup(
@@ -206,20 +215,23 @@ public class SettingsViewPanel extends Window  {
                                     .addComponent(jLabel3))
                                 .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                                 .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
-                                    .addGroup(layout.createSequentialGroup()
-                                        .addComponent(boardSize, javax.swing.GroupLayout.PREFERRED_SIZE, 29, javax.swing.GroupLayout.PREFERRED_SIZE)
-                                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
-                                        .addComponent(boardSizeLabel, javax.swing.GroupLayout.PREFERRED_SIZE, 62, javax.swing.GroupLayout.PREFERRED_SIZE))
-                                    .addComponent(playerNameText, javax.swing.GroupLayout.PREFERRED_SIZE, 128, javax.swing.GroupLayout.PREFERRED_SIZE)
                                     .addGroup(layout.createSequentialGroup()
                                         .addGap(4, 4, 4)
                                         .addComponent(buttonEasy)
                                         .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                                         .addComponent(buttonMedium)
                                         .addGap(2, 2, 2)
-                                        .addComponent(buttonHard))))
+                                        .addComponent(buttonHard))
+                                    .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING, false)
+                                        .addGroup(layout.createSequentialGroup()
+                                            .addComponent(boardSize, javax.swing.GroupLayout.PREFERRED_SIZE, 29, javax.swing.GroupLayout.PREFERRED_SIZE)
+                                            .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
+                                            .addComponent(boardSizeLabel, javax.swing.GroupLayout.PREFERRED_SIZE, 62, javax.swing.GroupLayout.PREFERRED_SIZE)
+                                            .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
+                                            .addComponent(jLabel5))
+                                        .addComponent(playerNameText, javax.swing.GroupLayout.Alignment.LEADING, javax.swing.GroupLayout.PREFERRED_SIZE, 128, javax.swing.GroupLayout.PREFERRED_SIZE))))
                             .addComponent(jLabel1))
-                        .addGap(0, 109, Short.MAX_VALUE))
+                        .addGap(0, 96, Short.MAX_VALUE))
                     .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, layout.createSequentialGroup()
                         .addGap(0, 0, Short.MAX_VALUE)
                         .addComponent(saveBTN)
@@ -239,10 +251,15 @@ public class SettingsViewPanel extends Window  {
                 .addGap(18, 18, 18)
                 .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                     .addGroup(layout.createSequentialGroup()
-                        .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
-                            .addComponent(jLabel3)
-                            .addComponent(boardSize, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
-                        .addGap(18, 18, 18)
+                        .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false)
+                            .addGroup(layout.createSequentialGroup()
+                                .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
+                                    .addComponent(jLabel3)
+                                    .addComponent(boardSize))
+                                .addGap(18, 18, 18))
+                            .addGroup(layout.createSequentialGroup()
+                                .addComponent(jLabel5, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
+                                .addGap(18, 18, 18)))
                         .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                             .addComponent(jLabel4, javax.swing.GroupLayout.PREFERRED_SIZE, 23, javax.swing.GroupLayout.PREFERRED_SIZE)
                             .addComponent(buttonEasy)
@@ -306,6 +323,10 @@ public class SettingsViewPanel extends Window  {
         this.model.setPlayerName(this.playerNameText.getText());
     }//GEN-LAST:event_playerNameTextFocusLost
 
+    private void playerNameTextActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_playerNameTextActionPerformed
+        // TODO add your handling code here:
+    }//GEN-LAST:event_playerNameTextActionPerformed
+
     // Variables declaration - do not modify//GEN-BEGIN:variables
     private javax.swing.JTextField boardSize;
     private javax.swing.JLabel boardSizeLabel;
@@ -318,6 +339,7 @@ public class SettingsViewPanel extends Window  {
     private javax.swing.JLabel jLabel2;
     private javax.swing.JLabel jLabel3;
     private javax.swing.JLabel jLabel4;
+    private javax.swing.JLabel jLabel5;
     private javax.swing.JScrollPane jScrollPane1;
     private javax.swing.JTextField playerNameText;
     private javax.swing.JButton saveBTN;
diff --git a/src/Program/Game.java b/src/Program/Game.java
index d5f11f3fc933bb56df4016d10b1f18af57848af3..22efdc7c7b6d12c5e10994743fac73f19711fa97 100644
--- a/src/Program/Game.java
+++ b/src/Program/Game.java
@@ -47,6 +47,7 @@ public class Game
     public void gameWindow()
     {
         this.game = new GUI.game.Game(this.settings,this);
+       // this.game = new GUI.game.Game(this.settings, this);
     }
         /*
         while( true )
diff --git a/src/Program/Player.java b/src/Program/Player.java
new file mode 100644
index 0000000000000000000000000000000000000000..96f1458d4f84632ccb5ab99f64b5c6d162b66342
--- /dev/null
+++ b/src/Program/Player.java
@@ -0,0 +1,31 @@
+/*
+ * To change this template, choose Tools | Templates
+ * and open the template in the editor.
+ */
+package Program;
+
+import java.io.Serializable;
+
+/**
+ *
+ * @author Dániel
+ */
+public class Player implements Serializable
+{
+    public String  name;
+    public int     maxScore;
+    public int     date;
+    
+    public Player()
+    {
+        this.name = null;
+        this.maxScore = 0;
+        this.date = 0;
+    }
+    public Player(String name,int maxScore, int date)
+    {
+        this.name       = name;
+        this.maxScore   = maxScore;
+        this.date       = date;
+    }
+}
diff --git a/src/Program/Settings.java b/src/Program/Settings.java
index 64068e02433f70422429d6b32763bd3dfe396a83..5b7745aac0b3213a6225714a9cbbf47591c81dd4 100644
--- a/src/Program/Settings.java
+++ b/src/Program/Settings.java
@@ -4,16 +4,13 @@
  */
 package Program;
 
-import java.io.BufferedOutputStream;
 import java.io.FileInputStream;
 import java.io.FileOutputStream;
 import java.io.IOException;
-import java.io.ObjectInput;
 import java.io.ObjectInputStream;
-import java.io.ObjectOutput;
 import java.io.ObjectOutputStream;
-import java.io.OutputStream;
 import java.io.Serializable;
+import java.util.ArrayList;
 
 /**
  *
@@ -21,26 +18,30 @@ import java.io.Serializable;
  */
 public class Settings implements Serializable
 {
+    public Player actualPlayer;
     public int size;
-    public String playerName;
+    //public String playerName;
     public int diff;
     public int windowWidth;
     public int windowHeight;
     public int[] availableDiff;
     public transient  Game game;
     public String saveFileName;
+    public ArrayList<Player> players;
     
    
     public Settings(Settings progSettings) 
     {
         this.size           = progSettings.size;
-        this.playerName     = progSettings.playerName;
+       // this.playerName     = progSettings.playerName;
         this.diff           = progSettings.diff;
         this.windowWidth    = progSettings.windowHeight;
         this.windowHeight   = progSettings.windowWidth;
         this.availableDiff  = progSettings.availableDiff;
         this.game           = progSettings.game;
         this.saveFileName   = "settings2.dat";
+        this.players        = progSettings.players;
+        this.actualPlayer   = progSettings.actualPlayer;
     }
     public void setGame(Game game)
     {
@@ -49,17 +50,19 @@ public class Settings implements Serializable
     }
     public Settings(int size,String playerName, int level,int windowWidth, int windowHeight )
     {
-        this.size       = size;
-        this.playerName = playerName;
-        this.diff      = level;
-        this.windowHeight = windowHeight;
-        this.windowWidth = windowWidth;
+        this.size           = size;
+     //   this.playerName     = playerName;
+        this.diff           = level;
+        this.windowHeight   = windowHeight;
+        this.windowWidth    = windowWidth;
         
         this.availableDiff = new int[4];
         this.availableDiff[0] =0; //%
         this.availableDiff[1] =20;
-        this.availableDiff[2] =40;
-        this.availableDiff[3] =60;   
+        this.availableDiff[2] =30;
+        this.availableDiff[3] =40;
+        this.players        = new ArrayList<>();
+        this.actualPlayer   = new Player(playerName,0, (int) (System.currentTimeMillis() / 1000L));
         this.saveFileName   = "settings2.dat";
     }
     
@@ -101,6 +104,7 @@ public class Settings implements Serializable
         }
         catch(IOException i)
         {
+            System.out.println(i.getMessage());
             return;
         }
         catch(ClassNotFoundException c)