diff --git a/Comparison/src/main/java/cz/fidentis/analyst/Project.java b/Comparison/src/main/java/cz/fidentis/analyst/Project.java
index ffcf7cfa5eb69eb99007f00411e244486bc58b3b..73a0fd18cc968d03230a432a07cf1572814c2951 100644
--- a/Comparison/src/main/java/cz/fidentis/analyst/Project.java
+++ b/Comparison/src/main/java/cz/fidentis/analyst/Project.java
@@ -4,6 +4,7 @@ import cz.fidentis.analyst.face.HumanFace;
 import java.io.File;
 import java.io.IOException;
 import java.nio.file.Path;
+import java.nio.file.Paths;
 import java.util.ArrayList;
 import java.util.Collections;
 import java.util.List;
@@ -218,7 +219,8 @@ public class Project {
                 Path path = this.getCfg().getPathToFaceByName(name);
                 File file = path.toFile();
                 face = new HumanFace(file, true); // loads also landmarks, if exist
-                Path preview = path.resolveSibling(name.concat("_preview.jpg"));
+                //Path preview = path.resolveSibling(name.concat("_preview.jpg"));
+                Path preview = Paths.get(face.getPath().split(".obj")[0] + "_preview.jpg");
                 face.setPreview(preview);
                 this.addFace(face);
                 out.printDuration("Loaded model " + face.getShortName() +" with " + face.getMeshModel().getNumVertices() + " vertices");
diff --git a/GUI/pom.xml b/GUI/pom.xml
index 7af2194f284388d483ad7965ea6a3a375fa75e60..68f43d641799751d76bac53620b4b559bc8eaad4 100644
--- a/GUI/pom.xml
+++ b/GUI/pom.xml
@@ -159,6 +159,11 @@
             <artifactId>guava</artifactId>
             <version>30.1-jre</version>
         </dependency>
+        <dependency>
+            <groupId>org.imgscalr</groupId>
+            <artifactId>imgscalr-lib</artifactId>
+            <version>4.2</version>
+        </dependency>
     </dependencies>
     <properties>
         <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
diff --git a/GUI/src/main/java/cz/fidentis/analyst/project/FaceStatePanel.java b/GUI/src/main/java/cz/fidentis/analyst/project/FaceStatePanel.java
index 3ef282855a4d3048d5a1b931f822418da15ef418..db5d4b3acb23fd8577f1438ab3475f62d68425af 100644
--- a/GUI/src/main/java/cz/fidentis/analyst/project/FaceStatePanel.java
+++ b/GUI/src/main/java/cz/fidentis/analyst/project/FaceStatePanel.java
@@ -3,9 +3,9 @@ package cz.fidentis.analyst.project;
 import cz.fidentis.analyst.core.ControlPanel;
 import cz.fidentis.analyst.face.HumanFace;
 import java.awt.Dimension;
-import java.awt.Image;
 import java.awt.Toolkit;
 import java.awt.event.ActionListener;
+import java.awt.image.BufferedImage;
 import java.io.File;
 import java.io.IOException;
 import java.nio.file.Files;
@@ -14,6 +14,7 @@ import java.nio.file.Paths;
 import javax.imageio.ImageIO;
 import javax.swing.ImageIcon;
 import javax.swing.JOptionPane;
+import org.imgscalr.Scalr;
 
 /**
  *
@@ -23,8 +24,7 @@ public class FaceStatePanel extends ControlPanel {
 
     private final ImageIcon notCheck = new ImageIcon(FaceStatePanel.class.getClassLoader().getResource("/" + "notCheck16x16.png"));
     private final ImageIcon check = new ImageIcon(FaceStatePanel.class.getClassLoader().getResource("/" + "check16x16.png"));
-    //private final ImageIcon warning = new ImageIcon(FaceStatePanel.class.getClassLoader().getResource("/" + "warning16x16.png"));
-    private final ImageIcon anonymousFace = new ImageIcon(FaceStatePanel.class.getClassLoader().getResource("/" + "face160x160.png"));
+    private final ImageIcon previewBasic = new ImageIcon(FaceStatePanel.class.getClassLoader().getResource("/" + "face160x160.png"));
     private ImageIcon previewFace = null;
     
     public static final String ICON = "head28x28.png";
@@ -316,38 +316,46 @@ public class FaceStatePanel extends ControlPanel {
      * @return ImageIcon either loaded face preview or anonymous face when preview is not found
      */
     private ImageIcon getPhoto(HumanFace face, Path path) {
-        
-        ImageIcon image;
+
         previewFace = null;
-        Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize();
+        BufferedImage image = null;
         
+        // If face is loaded to project, preview is loaded from face
         if (face != null) {
             if (face.getPreview() != null) {
-                previewFace = new ImageIcon(face.getPreview().getScaledInstance((int)screenSize.getWidth() - 100, (int)screenSize.getHeight() - 100, Image.SCALE_FAST));
-                photo.setToolTipText("Click to enlarge the image");
-                return new ImageIcon(face.getPreview().getScaledInstance(240, 160, Image.SCALE_FAST));
+                image = face.getPreview();
+
+            } else {
+                photo.setToolTipText("");
+                return previewBasic;
             }
-            photo.setToolTipText("");
-            return anonymousFace;
-        }
-        
-        if (path != null && path.toFile().exists()) {
             
-            String pathString = path.toString();
-            Path preview = Paths.get(pathString.substring(0, pathString.lastIndexOf(".")).concat("_preview.jpg"));
+        } else if (path != null && path.toFile().exists()) {
+            Path preview = Paths.get(path.toString().split(".obj")[0] + "_preview.jpg");
                 
             try {
-                
-                previewFace = new ImageIcon(ImageIO.read(preview.toFile()).getScaledInstance((int)screenSize.getWidth() - 200, (int)screenSize.getHeight() - 200, Image.SCALE_FAST));
-                image = new ImageIcon(previewFace.getImage().getScaledInstance(240, 160, Image.SCALE_FAST));
-                photo.setToolTipText("Click to enlarge the image");
-                return image;
+                image = ImageIO.read(preview.toFile());
             } catch (IOException ex) {
                 //Exceptions.printStackTrace(ex);)
             }
+            
         }
-        photo.setToolTipText("");
-        return anonymousFace;
+        
+        if (image == null) {      
+            
+            // Basic black siluete
+            photo.setToolTipText("");
+            return previewBasic;
+        }
+        
+        Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize();
+        image = Scalr.resize(image, (int)screenSize.getHeight() - 200);
+        
+        previewFace = new ImageIcon(image);
+        photo.setToolTipText("Click to enlarge the image");
+
+        return new ImageIcon(Scalr.resize(image, 240, 160));
+        
     }
     
     /**
diff --git a/GUI/src/main/java/cz/fidentis/analyst/project/ModelsTableModel.java b/GUI/src/main/java/cz/fidentis/analyst/project/ModelsTableModel.java
index ae5643e0ab21cfd0f979236c61e793799d0d6fe5..980ca3270b0a90925c9c2df2aac3448d4b1f0f2f 100644
--- a/GUI/src/main/java/cz/fidentis/analyst/project/ModelsTableModel.java
+++ b/GUI/src/main/java/cz/fidentis/analyst/project/ModelsTableModel.java
@@ -1,6 +1,5 @@
 package cz.fidentis.analyst.project;
 
-import java.awt.Image;
 import java.awt.image.BufferedImage;
 import java.io.IOException;
 import java.nio.file.Path;
@@ -8,6 +7,7 @@ import javax.imageio.ImageIO;
 import javax.swing.ImageIcon;
 import javax.swing.table.DefaultTableModel;
 import org.openide.util.Exceptions;
+import org.imgscalr.Scalr;
 
 /**
  * List of faces TableModel
@@ -61,7 +61,7 @@ public class ModelsTableModel extends DefaultTableModel {
     /**
      * Adds new row to model
      * @param name String name of the face
-     * @param hasKD Boolean if face has KD tree calculated
+     * @param Path path to preview (if null than default preview is set)
      */
     public void addRowWithName(String name, Path path) {
         if (!path.toFile().exists()) {
@@ -69,7 +69,11 @@ public class ModelsTableModel extends DefaultTableModel {
         } else {
             try {
                 BufferedImage image = ImageIO.read(path.toFile());
-                addRow(new Object[]{false, name, new ImageIcon(image.getScaledInstance(75, 50, Image.SCALE_FAST))});
+
+                // Scale image to fit into column
+                BufferedImage scaledImage = Scalr.resize(image, 70, 55);
+                addRow(new Object[]{false, name, new ImageIcon(scaledImage)});
+                
             } catch (IOException ex) {
                 Exceptions.printStackTrace(ex);
             }
diff --git a/GUI/src/main/java/cz/fidentis/analyst/project/ProjectPanel.form b/GUI/src/main/java/cz/fidentis/analyst/project/ProjectPanel.form
index f11e510ff7541445b442531ec4d579346c6b6821..4ea426830f46d797a04ebab6d34c16dbba61fbc3 100644
--- a/GUI/src/main/java/cz/fidentis/analyst/project/ProjectPanel.form
+++ b/GUI/src/main/java/cz/fidentis/analyst/project/ProjectPanel.form
@@ -18,26 +18,28 @@
       <Group type="103" groupAlignment="0" attributes="0">
           <Group type="102" alignment="0" attributes="0">
               <EmptySpace min="-2" pref="41" max="-2" attributes="0"/>
-              <Group type="103" groupAlignment="1" attributes="0">
-                  <Component id="saveProjectButton" min="-2" max="-2" attributes="0"/>
-                  <Group type="102" alignment="1" attributes="0">
-                      <Group type="103" groupAlignment="1" max="-2" attributes="0">
-                          <Component id="faceTableScrollPanel" pref="863" max="32767" attributes="0"/>
-                          <Component id="buttonsPanel" max="32767" attributes="0"/>
+              <Group type="103" groupAlignment="0" attributes="0">
+                  <Component id="tablePanel" alignment="1" min="-2" max="-2" attributes="0"/>
+                  <Component id="buttonsPanel" min="-2" pref="969" max="-2" attributes="0"/>
+              </Group>
+              <EmptySpace min="-2" pref="4" max="-2" attributes="0"/>
+              <Group type="103" groupAlignment="0" attributes="0">
+                  <Group type="103" alignment="1" groupAlignment="0" attributes="0">
+                      <Group type="102" alignment="0" attributes="0">
+                          <EmptySpace min="-2" pref="78" max="-2" attributes="0"/>
+                          <Component id="newProjectButton" min="-2" max="-2" attributes="0"/>
                       </Group>
-                      <Group type="103" groupAlignment="0" attributes="0">
-                          <Group type="102" alignment="0" attributes="0">
-                              <EmptySpace min="-2" pref="78" max="-2" attributes="0"/>
-                              <Component id="newProjectButton" min="-2" max="-2" attributes="0"/>
-                          </Group>
-                          <Group type="102" alignment="1" attributes="0">
-                              <EmptySpace max="-2" attributes="0"/>
-                              <Component id="openProjectButton" min="-2" max="-2" attributes="0"/>
-                          </Group>
+                      <Group type="102" alignment="1" attributes="0">
+                          <EmptySpace max="-2" attributes="0"/>
+                          <Component id="openProjectButton" min="-2" max="-2" attributes="0"/>
                       </Group>
                   </Group>
+                  <Group type="102" alignment="1" attributes="0">
+                      <EmptySpace min="-2" pref="78" max="-2" attributes="0"/>
+                      <Component id="saveProjectButton" min="-2" max="-2" attributes="0"/>
+                  </Group>
               </Group>
-              <EmptySpace pref="41" max="32767" attributes="0"/>
+              <EmptySpace max="32767" attributes="0"/>
           </Group>
       </Group>
     </DimensionLayout>
@@ -56,14 +58,14 @@
               </Group>
               <EmptySpace max="-2" attributes="0"/>
               <Group type="103" groupAlignment="0" attributes="0">
-                  <Component id="faceTableScrollPanel" min="-2" pref="768" max="-2" attributes="0"/>
                   <Group type="102" alignment="0" attributes="0">
                       <Component id="saveProjectButton" min="-2" max="-2" attributes="0"/>
                       <EmptySpace type="separate" max="-2" attributes="0"/>
                       <Component id="openProjectButton" min="-2" max="-2" attributes="0"/>
                   </Group>
+                  <Component id="tablePanel" min="-2" max="-2" attributes="0"/>
               </Group>
-              <EmptySpace pref="12" max="32767" attributes="0"/>
+              <EmptySpace max="32767" attributes="0"/>
           </Group>
       </Group>
     </DimensionLayout>
@@ -97,7 +99,7 @@
           </Events>
           <Constraints>
             <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout" value="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout$GridBagConstraintsDescription">
-              <GridBagConstraints gridX="0" gridY="0" gridWidth="1" gridHeight="1" fill="0" ipadX="20" ipadY="0" insetsTop="16" insetsLeft="0" insetsBottom="13" insetsRight="4" anchor="13" weightX="0.0" weightY="0.0"/>
+              <GridBagConstraints gridX="0" gridY="0" gridWidth="1" gridHeight="1" fill="0" ipadX="20" ipadY="0" insetsTop="16" insetsLeft="0" insetsBottom="13" insetsRight="8" anchor="13" weightX="0.0" weightY="0.0"/>
             </Constraint>
           </Constraints>
         </Component>
@@ -115,7 +117,7 @@
           </Events>
           <Constraints>
             <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout" value="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout$GridBagConstraintsDescription">
-              <GridBagConstraints gridX="1" gridY="0" gridWidth="1" gridHeight="1" fill="0" ipadX="0" ipadY="0" insetsTop="16" insetsLeft="22" insetsBottom="13" insetsRight="4" anchor="18" weightX="0.0" weightY="0.0"/>
+              <GridBagConstraints gridX="1" gridY="0" gridWidth="1" gridHeight="1" fill="0" ipadX="0" ipadY="0" insetsTop="16" insetsLeft="22" insetsBottom="13" insetsRight="8" anchor="18" weightX="0.0" weightY="0.0"/>
             </Constraint>
           </Constraints>
         </Component>
@@ -133,7 +135,7 @@
           </Events>
           <Constraints>
             <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout" value="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout$GridBagConstraintsDescription">
-              <GridBagConstraints gridX="2" gridY="0" gridWidth="1" gridHeight="1" fill="0" ipadX="0" ipadY="0" insetsTop="16" insetsLeft="22" insetsBottom="13" insetsRight="4" anchor="18" weightX="0.0" weightY="0.0"/>
+              <GridBagConstraints gridX="2" gridY="0" gridWidth="1" gridHeight="1" fill="0" ipadX="0" ipadY="0" insetsTop="16" insetsLeft="22" insetsBottom="13" insetsRight="8" anchor="18" weightX="0.0" weightY="0.0"/>
             </Constraint>
           </Constraints>
         </Component>
@@ -151,7 +153,7 @@
           </Events>
           <Constraints>
             <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout" value="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout$GridBagConstraintsDescription">
-              <GridBagConstraints gridX="3" gridY="0" gridWidth="1" gridHeight="1" fill="0" ipadX="0" ipadY="0" insetsTop="16" insetsLeft="22" insetsBottom="13" insetsRight="4" anchor="18" weightX="0.0" weightY="0.0"/>
+              <GridBagConstraints gridX="3" gridY="0" gridWidth="1" gridHeight="1" fill="0" ipadX="0" ipadY="0" insetsTop="16" insetsLeft="22" insetsBottom="13" insetsRight="8" anchor="18" weightX="0.0" weightY="0.0"/>
             </Constraint>
           </Constraints>
         </Component>
@@ -170,7 +172,7 @@
           </Events>
           <Constraints>
             <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout" value="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout$GridBagConstraintsDescription">
-              <GridBagConstraints gridX="4" gridY="0" gridWidth="1" gridHeight="1" fill="0" ipadX="0" ipadY="0" insetsTop="16" insetsLeft="22" insetsBottom="13" insetsRight="4" anchor="18" weightX="0.0" weightY="0.0"/>
+              <GridBagConstraints gridX="4" gridY="0" gridWidth="1" gridHeight="1" fill="0" ipadX="0" ipadY="0" insetsTop="16" insetsLeft="22" insetsBottom="13" insetsRight="8" anchor="18" weightX="0.0" weightY="0.0"/>
             </Constraint>
           </Constraints>
         </Component>
@@ -188,54 +190,12 @@
           </Events>
           <Constraints>
             <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout" value="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout$GridBagConstraintsDescription">
-              <GridBagConstraints gridX="5" gridY="0" gridWidth="1" gridHeight="1" fill="0" ipadX="0" ipadY="0" insetsTop="16" insetsLeft="75" insetsBottom="13" insetsRight="4" anchor="10" weightX="0.0" weightY="0.0"/>
+              <GridBagConstraints gridX="5" gridY="0" gridWidth="1" gridHeight="1" fill="0" ipadX="0" ipadY="0" insetsTop="16" insetsLeft="170" insetsBottom="13" insetsRight="4" anchor="10" weightX="0.0" weightY="0.0"/>
             </Constraint>
           </Constraints>
         </Component>
       </SubComponents>
     </Container>
-    <Container class="javax.swing.JScrollPane" name="faceTableScrollPanel">
-      <Properties>
-        <Property name="preferredSize" type="java.awt.Dimension" editor="org.netbeans.beaninfo.editors.DimensionEditor">
-          <Dimension value="[812, 750]"/>
-        </Property>
-      </Properties>
-      <AuxValues>
-        <AuxValue name="autoScrollPane" type="java.lang.Boolean" value="true"/>
-      </AuxValues>
-
-      <Layout class="org.netbeans.modules.form.compat2.layouts.support.JScrollPaneSupportLayout"/>
-      <SubComponents>
-        <Component class="javax.swing.JTable" name="table">
-          <Properties>
-            <Property name="font" type="java.awt.Font" editor="org.netbeans.beaninfo.editors.FontEditor" postCode="table.getTableHeader().setOpaque(false);&#xa;table.getTableHeader().setBackground(new java.awt.Color(204,204,204));&#xa;table.getTableHeader().setFont(new java.awt.Font(&quot;Tahoma&quot;, 0, 18));&#xa;model.addTableModelListener(new TableModelListener() {&#xa;    public void tableChanged(TableModelEvent e) {&#xa;        jTable1TableChanged(e);&#xa;    }&#xa;});">
-              <Font name="Tahoma" size="18" style="0"/>
-            </Property>
-            <Property name="model" type="javax.swing.table.TableModel" editor="org.netbeans.modules.form.RADConnectionPropertyEditor" postCode="table.getColumnModel().getColumn(0).setMaxWidth(50);&#xa;table.getColumnModel().getColumn(2).setMaxWidth(75);&#xa;table.getTableHeader().getColumnModel().getColumn(0).setMaxWidth(50);&#xa;table.getTableHeader().getColumnModel().getColumn(2).setMaxWidth(75);">
-              <Connection code="model" type="code"/>
-            </Property>
-            <Property name="columnModel" type="javax.swing.table.TableColumnModel" editor="org.netbeans.modules.form.editors2.TableColumnModelEditor">
-              <TableColumnModel selectionModel="0"/>
-            </Property>
-            <Property name="dragEnabled" type="boolean" value="true"/>
-            <Property name="rowHeight" type="int" value="60"/>
-            <Property name="selectionBackground" type="java.awt.Color" editor="org.netbeans.beaninfo.editors.ColorEditor">
-              <Color blue="ff" green="cc" red="66" type="rgb"/>
-            </Property>
-            <Property name="selectionMode" type="int" value="0"/>
-            <Property name="tableHeader" type="javax.swing.table.JTableHeader" editor="org.netbeans.modules.form.editors2.JTableHeaderEditor">
-              <TableHeader reorderingAllowed="false" resizingAllowed="true"/>
-            </Property>
-          </Properties>
-          <Events>
-            <EventHandler event="mouseClicked" listener="java.awt.event.MouseListener" parameters="java.awt.event.MouseEvent" handler="tableMouseClicked"/>
-          </Events>
-          <AuxValues>
-            <AuxValue name="JavaCodeGenerator_InitCodePre" type="java.lang.String" value="table.setSize(faceTableScrollPanel.getWidth(), faceTableScrollPanel.getHeight());"/>
-          </AuxValues>
-        </Component>
-      </SubComponents>
-    </Container>
     <Component class="javax.swing.JButton" name="saveProjectButton">
       <Properties>
         <Property name="font" type="java.awt.Font" editor="org.netbeans.beaninfo.editors.FontEditor">
@@ -281,5 +241,63 @@
         <EventHandler event="mouseClicked" listener="java.awt.event.MouseListener" parameters="java.awt.event.MouseEvent" handler="newProjectButtonMouseClicked"/>
       </Events>
     </Component>
+    <Container class="javax.swing.JPanel" name="tablePanel">
+      <Properties>
+        <Property name="border" type="javax.swing.border.Border" editor="org.netbeans.modules.form.editors2.BorderEditor">
+          <Border info="org.netbeans.modules.form.compat2.border.EtchedBorderInfo">
+            <EtchetBorder/>
+          </Border>
+        </Property>
+      </Properties>
+
+      <Layout>
+        <DimensionLayout dim="0">
+          <Group type="103" groupAlignment="0" attributes="0">
+              <EmptySpace min="0" pref="965" max="32767" attributes="0"/>
+              <Group type="103" rootIndex="1" groupAlignment="0" attributes="0">
+                  <Component id="table" alignment="0" pref="965" max="32767" attributes="0"/>
+              </Group>
+          </Group>
+        </DimensionLayout>
+        <DimensionLayout dim="1">
+          <Group type="103" groupAlignment="0" attributes="0">
+              <EmptySpace min="0" pref="788" max="32767" attributes="0"/>
+              <Group type="103" rootIndex="1" groupAlignment="0" attributes="0">
+                  <Component id="table" alignment="0" pref="788" max="32767" attributes="0"/>
+              </Group>
+          </Group>
+        </DimensionLayout>
+      </Layout>
+      <SubComponents>
+        <Component class="javax.swing.JTable" name="table">
+          <Properties>
+            <Property name="font" type="java.awt.Font" editor="org.netbeans.beaninfo.editors.FontEditor" postCode="table.getTableHeader().setOpaque(false);&#xa;table.getTableHeader().setBackground(new java.awt.Color(204,204,204));&#xa;table.getTableHeader().setFont(new java.awt.Font(&quot;Tahoma&quot;, 0, 18));&#xa;model.addTableModelListener(new TableModelListener() {&#xa;    public void tableChanged(TableModelEvent e) {&#xa;        jTable1TableChanged(e);&#xa;    }&#xa;});">
+              <Font name="Tahoma" size="18" style="0"/>
+            </Property>
+            <Property name="model" type="javax.swing.table.TableModel" editor="org.netbeans.modules.form.RADConnectionPropertyEditor" postCode="table.getColumnModel().getColumn(0).setMaxWidth(50);&#xa;table.getColumnModel().getColumn(2).setMaxWidth(85);&#xa;table.getTableHeader().getColumnModel().getColumn(0).setMaxWidth(50);&#xa;table.getTableHeader().getColumnModel().getColumn(2).setMaxWidth(75);">
+              <Connection code="model" type="code"/>
+            </Property>
+            <Property name="columnModel" type="javax.swing.table.TableColumnModel" editor="org.netbeans.modules.form.editors2.TableColumnModelEditor">
+              <TableColumnModel selectionModel="0"/>
+            </Property>
+            <Property name="dragEnabled" type="boolean" value="true"/>
+            <Property name="rowHeight" type="int" value="60"/>
+            <Property name="selectionBackground" type="java.awt.Color" editor="org.netbeans.beaninfo.editors.ColorEditor">
+              <Color blue="ff" green="cc" red="66" type="rgb"/>
+            </Property>
+            <Property name="selectionMode" type="int" value="0"/>
+            <Property name="tableHeader" type="javax.swing.table.JTableHeader" editor="org.netbeans.modules.form.editors2.JTableHeaderEditor">
+              <TableHeader reorderingAllowed="false" resizingAllowed="true"/>
+            </Property>
+          </Properties>
+          <Events>
+            <EventHandler event="mouseClicked" listener="java.awt.event.MouseListener" parameters="java.awt.event.MouseEvent" handler="tableMouseClicked"/>
+          </Events>
+          <AuxValues>
+            <AuxValue name="JavaCodeGenerator_InitCodePre" type="java.lang.String" value="table.setSize(tablePanel.getWidth(), tablePanel.getHeight());"/>
+          </AuxValues>
+        </Component>
+      </SubComponents>
+    </Container>
   </SubComponents>
 </Form>
diff --git a/GUI/src/main/java/cz/fidentis/analyst/project/ProjectPanel.java b/GUI/src/main/java/cz/fidentis/analyst/project/ProjectPanel.java
index a9807f150ad30eca5c3e0f46aac8e693fc41be6f..e1cb10bfb1eacbe39d3f2e5d6bfaf8a174973872 100644
--- a/GUI/src/main/java/cz/fidentis/analyst/project/ProjectPanel.java
+++ b/GUI/src/main/java/cz/fidentis/analyst/project/ProjectPanel.java
@@ -77,11 +77,11 @@ public class ProjectPanel extends JPanel {
         deselectAllButton = new javax.swing.JButton();
         inflateButton = new javax.swing.JButton();
         analyseButton = new javax.swing.JButton();
-        faceTableScrollPanel = new javax.swing.JScrollPane();
-        table = new javax.swing.JTable();
         saveProjectButton = new javax.swing.JButton();
         openProjectButton = new javax.swing.JButton();
         newProjectButton = new javax.swing.JButton();
+        tablePanel = new javax.swing.JPanel();
+        table = new javax.swing.JTable();
 
         buttonsPanel.setBorder(javax.swing.BorderFactory.createEtchedBorder());
         buttonsPanel.setMinimumSize(new java.awt.Dimension(0, 0));
@@ -99,7 +99,7 @@ public class ProjectPanel extends JPanel {
         gridBagConstraints.gridy = 0;
         gridBagConstraints.ipadx = 20;
         gridBagConstraints.anchor = java.awt.GridBagConstraints.EAST;
-        gridBagConstraints.insets = new java.awt.Insets(16, 0, 13, 4);
+        gridBagConstraints.insets = new java.awt.Insets(16, 0, 13, 8);
         buttonsPanel.add(addButton, gridBagConstraints);
 
         removeButton.setFont(new java.awt.Font("Tahoma", 0, 12)); // NOI18N
@@ -113,7 +113,7 @@ public class ProjectPanel extends JPanel {
         gridBagConstraints.gridx = 1;
         gridBagConstraints.gridy = 0;
         gridBagConstraints.anchor = java.awt.GridBagConstraints.NORTHWEST;
-        gridBagConstraints.insets = new java.awt.Insets(16, 22, 13, 4);
+        gridBagConstraints.insets = new java.awt.Insets(16, 22, 13, 8);
         buttonsPanel.add(removeButton, gridBagConstraints);
 
         selectAllButton.setFont(new java.awt.Font("Tahoma", 0, 12)); // NOI18N
@@ -127,7 +127,7 @@ public class ProjectPanel extends JPanel {
         gridBagConstraints.gridx = 2;
         gridBagConstraints.gridy = 0;
         gridBagConstraints.anchor = java.awt.GridBagConstraints.NORTHWEST;
-        gridBagConstraints.insets = new java.awt.Insets(16, 22, 13, 4);
+        gridBagConstraints.insets = new java.awt.Insets(16, 22, 13, 8);
         buttonsPanel.add(selectAllButton, gridBagConstraints);
 
         deselectAllButton.setFont(new java.awt.Font("Tahoma", 0, 12)); // NOI18N
@@ -141,7 +141,7 @@ public class ProjectPanel extends JPanel {
         gridBagConstraints.gridx = 3;
         gridBagConstraints.gridy = 0;
         gridBagConstraints.anchor = java.awt.GridBagConstraints.NORTHWEST;
-        gridBagConstraints.insets = new java.awt.Insets(16, 22, 13, 4);
+        gridBagConstraints.insets = new java.awt.Insets(16, 22, 13, 8);
         buttonsPanel.add(deselectAllButton, gridBagConstraints);
 
         inflateButton.setFont(new java.awt.Font("Tahoma", 0, 12)); // NOI18N
@@ -156,7 +156,7 @@ public class ProjectPanel extends JPanel {
         gridBagConstraints.gridx = 4;
         gridBagConstraints.gridy = 0;
         gridBagConstraints.anchor = java.awt.GridBagConstraints.NORTHWEST;
-        gridBagConstraints.insets = new java.awt.Insets(16, 22, 13, 4);
+        gridBagConstraints.insets = new java.awt.Insets(16, 22, 13, 8);
         buttonsPanel.add(inflateButton, gridBagConstraints);
 
         analyseButton.setFont(new java.awt.Font("Tahoma", 1, 12)); // NOI18N
@@ -169,38 +169,9 @@ public class ProjectPanel extends JPanel {
         gridBagConstraints = new java.awt.GridBagConstraints();
         gridBagConstraints.gridx = 5;
         gridBagConstraints.gridy = 0;
-        gridBagConstraints.insets = new java.awt.Insets(16, 75, 13, 4);
+        gridBagConstraints.insets = new java.awt.Insets(16, 170, 13, 4);
         buttonsPanel.add(analyseButton, gridBagConstraints);
 
-        faceTableScrollPanel.setPreferredSize(new java.awt.Dimension(812, 750));
-
-        table.setSize(faceTableScrollPanel.getWidth(), faceTableScrollPanel.getHeight());
-        table.setFont(new java.awt.Font("Tahoma", 0, 18)); // NOI18N
-        table.getTableHeader().setOpaque(false);
-        table.getTableHeader().setBackground(new java.awt.Color(204,204,204));
-        table.getTableHeader().setFont(new java.awt.Font("Tahoma", 0, 18));
-        model.addTableModelListener(new TableModelListener() {
-            public void tableChanged(TableModelEvent e) {
-                jTable1TableChanged(e);
-            }
-        });
-        table.setModel(model);
-        table.getColumnModel().getColumn(0).setMaxWidth(50);
-        table.getColumnModel().getColumn(2).setMaxWidth(75);
-        table.getTableHeader().getColumnModel().getColumn(0).setMaxWidth(50);
-        table.getTableHeader().getColumnModel().getColumn(2).setMaxWidth(75);
-        table.setDragEnabled(true);
-        table.setRowHeight(60);
-        table.setSelectionBackground(new java.awt.Color(102, 204, 255));
-        table.setSelectionMode(javax.swing.ListSelectionModel.SINGLE_SELECTION);
-        table.getTableHeader().setReorderingAllowed(false);
-        table.addMouseListener(new java.awt.event.MouseAdapter() {
-            public void mouseClicked(java.awt.event.MouseEvent evt) {
-                tableMouseClicked(evt);
-            }
-        });
-        faceTableScrollPanel.setViewportView(table);
-
         saveProjectButton.setFont(new java.awt.Font("Tahoma", 0, 12)); // NOI18N
         saveProjectButton.setIcon(new javax.swing.ImageIcon(getClass().getResource("/save100x24.png"))); // NOI18N
         org.openide.awt.Mnemonics.setLocalizedText(saveProjectButton, org.openide.util.NbBundle.getMessage(ProjectPanel.class, "ProjectPanel.saveProjectButton.text")); // NOI18N
@@ -227,26 +198,71 @@ public class ProjectPanel extends JPanel {
             }
         });
 
+        tablePanel.setBorder(javax.swing.BorderFactory.createEtchedBorder());
+
+        table.setSize(tablePanel.getWidth(), tablePanel.getHeight());
+        table.setFont(new java.awt.Font("Tahoma", 0, 18)); // NOI18N
+        table.getTableHeader().setOpaque(false);
+        table.getTableHeader().setBackground(new java.awt.Color(204,204,204));
+        table.getTableHeader().setFont(new java.awt.Font("Tahoma", 0, 18));
+        model.addTableModelListener(new TableModelListener() {
+            public void tableChanged(TableModelEvent e) {
+                jTable1TableChanged(e);
+            }
+        });
+        table.setModel(model);
+        table.getColumnModel().getColumn(0).setMaxWidth(50);
+        table.getColumnModel().getColumn(2).setMaxWidth(85);
+        table.getTableHeader().getColumnModel().getColumn(0).setMaxWidth(50);
+        table.getTableHeader().getColumnModel().getColumn(2).setMaxWidth(75);
+        table.setDragEnabled(true);
+        table.setRowHeight(60);
+        table.setSelectionBackground(new java.awt.Color(102, 204, 255));
+        table.setSelectionMode(javax.swing.ListSelectionModel.SINGLE_SELECTION);
+        table.getTableHeader().setReorderingAllowed(false);
+        table.addMouseListener(new java.awt.event.MouseAdapter() {
+            public void mouseClicked(java.awt.event.MouseEvent evt) {
+                tableMouseClicked(evt);
+            }
+        });
+
+        javax.swing.GroupLayout tablePanelLayout = new javax.swing.GroupLayout(tablePanel);
+        tablePanel.setLayout(tablePanelLayout);
+        tablePanelLayout.setHorizontalGroup(
+            tablePanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
+            .addGap(0, 965, Short.MAX_VALUE)
+            .addGroup(tablePanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
+                .addComponent(table, javax.swing.GroupLayout.DEFAULT_SIZE, 965, Short.MAX_VALUE))
+        );
+        tablePanelLayout.setVerticalGroup(
+            tablePanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
+            .addGap(0, 788, Short.MAX_VALUE)
+            .addGroup(tablePanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
+                .addComponent(table, javax.swing.GroupLayout.DEFAULT_SIZE, 788, Short.MAX_VALUE))
+        );
+
         javax.swing.GroupLayout layout = new javax.swing.GroupLayout(this);
         this.setLayout(layout);
         layout.setHorizontalGroup(
             layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
             .addGroup(layout.createSequentialGroup()
                 .addGap(41, 41, 41)
-                .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING)
-                    .addComponent(saveProjectButton)
-                    .addGroup(layout.createSequentialGroup()
-                        .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING, false)
-                            .addComponent(faceTableScrollPanel, javax.swing.GroupLayout.DEFAULT_SIZE, 863, Short.MAX_VALUE)
-                            .addComponent(buttonsPanel, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
-                        .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
-                            .addGroup(layout.createSequentialGroup()
-                                .addGap(78, 78, 78)
-                                .addComponent(newProjectButton))
-                            .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, layout.createSequentialGroup()
-                                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
-                                .addComponent(openProjectButton)))))
-                .addContainerGap(41, Short.MAX_VALUE))
+                .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
+                    .addComponent(tablePanel, javax.swing.GroupLayout.Alignment.TRAILING, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
+                    .addComponent(buttonsPanel, javax.swing.GroupLayout.PREFERRED_SIZE, 969, javax.swing.GroupLayout.PREFERRED_SIZE))
+                .addGap(4, 4, 4)
+                .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
+                    .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
+                        .addGroup(layout.createSequentialGroup()
+                            .addGap(78, 78, 78)
+                            .addComponent(newProjectButton))
+                        .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, layout.createSequentialGroup()
+                            .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
+                            .addComponent(openProjectButton)))
+                    .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, layout.createSequentialGroup()
+                        .addGap(78, 78, 78)
+                        .addComponent(saveProjectButton)))
+                .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
         );
         layout.setVerticalGroup(
             layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
@@ -260,12 +276,12 @@ public class ProjectPanel extends JPanel {
                         .addComponent(buttonsPanel, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)))
                 .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                 .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
-                    .addComponent(faceTableScrollPanel, javax.swing.GroupLayout.PREFERRED_SIZE, 768, javax.swing.GroupLayout.PREFERRED_SIZE)
                     .addGroup(layout.createSequentialGroup()
                         .addComponent(saveProjectButton)
                         .addGap(18, 18, 18)
-                        .addComponent(openProjectButton)))
-                .addContainerGap(12, Short.MAX_VALUE))
+                        .addComponent(openProjectButton))
+                    .addComponent(tablePanel, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
+                .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
         );
     }// </editor-fold>//GEN-END:initComponents
 
@@ -344,8 +360,25 @@ public class ProjectPanel extends JPanel {
         if (project.getFaceByName(name2) == null) {
             project.addFace(face2);
         }
+        
+        Object[] options = {face1.getShortName(), face2.getShortName()};
+        
+        int choice = JOptionPane.showOptionDialog(this,
+                "Faces: ",
+                "Select primary face",
+                JOptionPane.DEFAULT_OPTION,
+                JOptionPane.QUESTION_MESSAGE,
+                null,
+                options,
+                options[0]);
 
-        createFaceToFaceTab(face1, face2, name1 + ":" + name2, false);
+        
+        if (choice == 0) {
+            createFaceToFaceTab(face1, face2, name1 + ":" + name2, false);
+        } else {
+            createFaceToFaceTab(face2, face1, name2 + ":" + name1, false);
+        }
+        
     }
     
     /**
@@ -354,7 +387,7 @@ public class ProjectPanel extends JPanel {
     private void analyseManyToManyFaces() {
         
         List<Path> faces = selectedRows.stream()
-                .map(i -> model.getValueAt(selectedRows.get(i), 1).toString())
+                .map(i -> model.getValueAt(i, 1).toString())
                 .map(s -> project.getCfg().getPathToFaceByName(s))
                 .collect(Collectors.toList());
         
@@ -502,8 +535,8 @@ public class ProjectPanel extends JPanel {
                                 path.toString().lastIndexOf('.'));
                 
                 if (project.addNewPath(path)) {  
-                    
-                    Path preview = path.resolveSibling(name.concat("_preview_small.jpg"));
+
+                    Path preview = Paths.get(path.toString().split(".obj")[0] + "_preview.jpg");
                     model.addRowWithName(name, preview);
                     filterPanel.checkAllFacesLoaded(false);
 
@@ -694,9 +727,9 @@ public class ProjectPanel extends JPanel {
         }
         Collections.sort(names);
         names.forEach(name -> {
+            
             HumanFace face = project.getFaceByName(name);
-            String pathString = face.getPath();
-            Path preview = Paths.get(pathString.substring(0, pathString.lastIndexOf(".")).concat("_preview.jpg"));
+            Path preview = Paths.get(face.getPath().split(".obj")[0] + "_preview.jpg");
             model.addRowWithName(name, preview);
         });
         
@@ -727,37 +760,28 @@ public class ProjectPanel extends JPanel {
      * project
      */
     public void openExistingOrNewProject() {
-        ImageIcon recentProjectImage = new ImageIcon(ProjectTopComp.class.getClassLoader().getResource("/" + "recent_project.png"));
-        ImageIcon newProjectImage = new ImageIcon(ProjectTopComp.class.getClassLoader().getResource("/" + "new.png"));
-        ImageIcon existingProjectImage = new ImageIcon(ProjectTopComp.class.getClassLoader().getResource("/" + "open.png"));
-        Object[] options = {recentProjectImage, newProjectImage, existingProjectImage};
         File recentProjectFile = getRecentProject();
-        String recentProjectInfo;
         
         if (recentProjectFile != null) {
-            recentProjectInfo = "\n\nMost recent project is : " + recentProjectFile.getAbsolutePath();
-        } else {
-            recentProjectInfo = "\n\nCouldn't find most recent project";
+            openProjectFromFile(recentProjectFile);
+            return;
         }
         
+        ImageIcon newProjectImage = new ImageIcon(ProjectTopComp.class.getClassLoader().getResource("/" + "new.png"));
+        ImageIcon existingProjectImage = new ImageIcon(ProjectTopComp.class.getClassLoader().getResource("/" + "open.png"));
+        Object[] options = {newProjectImage, existingProjectImage};
+        
+        
         int choice = JOptionPane.showOptionDialog(this, 
-                "Would you like to create a new project or open an existing project?"
-                        + recentProjectInfo, 
+                "Would you like to create a new project or open an existing project?", 
                 "Select project", 
                 JOptionPane.DEFAULT_OPTION, JOptionPane.QUESTION_MESSAGE, 
                 null, 
                 options, 
-                options[1]);
+                options[0]);
         
-        switch (choice) {
-            case 0:
-                openRecentProject();
-                break;
-            case 2:
-                openProject();
-                break;
-            default:
-                break;
+        if (choice == 1) {
+            openProject();      
         }
     }
     
@@ -773,6 +797,7 @@ public class ProjectPanel extends JPanel {
         model.setRowCount(0);
         checkFaceState(null, false);
         selectedRows.clear();        
+        userPreferences.remove("pathToMostRecentProject");
     }
     
     /**
@@ -804,13 +829,23 @@ public class ProjectPanel extends JPanel {
      */
     public void saveProject() {
         
-        JFileChooser chooser = new JFileChooser();
-        //chooser.setFileSelectionMode(JFileChooser.DIRECTORIES_ONLY);
-        chooser.setFileFilter(new FileNameExtensionFilter("json files (*.json)", "json"));
-        chooser.setAcceptAllFileFilterUsed(true);
-        chooser.showSaveDialog(null);
+        File file;
         
-        File file = chooser.getSelectedFile();
+        // If current project was saved before
+        String path = userPreferences.get("pathToMostRecentProject", "");
+        if (path != null && !path.isEmpty()) {
+            file = Paths.get(path).toFile();
+            
+        // Project was not saved before, user chooses new path where to save project
+        } else {
+            JFileChooser chooser = new JFileChooser();
+            //chooser.setFileSelectionMode(JFileChooser.DIRECTORIES_ONLY);
+            chooser.setFileFilter(new FileNameExtensionFilter("json files (*.json)", "json"));
+            chooser.setAcceptAllFileFilterUsed(true);
+            chooser.showSaveDialog(null);
+
+            file = chooser.getSelectedFile();
+        }
         
         if (file != null) {
             String filePath = file.getAbsolutePath();
@@ -854,14 +889,6 @@ public class ProjectPanel extends JPanel {
         } 
     }
     
-    /**
-     * Opens most recent project (loads project from user preferences)
-     */
-    private void openRecentProject() {
-        File f = getRecentProject();
-        openProjectFromFile(f);
-    }
-    
     /**
      * Loads most recent project from user preferences
      * @return File where project is saved, null if no project was found
@@ -973,7 +1000,6 @@ public class ProjectPanel extends JPanel {
     private javax.swing.JButton analyseButton;
     private javax.swing.JPanel buttonsPanel;
     private javax.swing.JButton deselectAllButton;
-    private javax.swing.JScrollPane faceTableScrollPanel;
     private javax.swing.JButton inflateButton;
     private javax.swing.JButton newProjectButton;
     private javax.swing.JButton openProjectButton;
@@ -981,5 +1007,6 @@ public class ProjectPanel extends JPanel {
     private javax.swing.JButton saveProjectButton;
     private javax.swing.JButton selectAllButton;
     private javax.swing.JTable table;
+    private javax.swing.JPanel tablePanel;
     // End of variables declaration//GEN-END:variables
 }
diff --git a/GUI/src/main/java/cz/fidentis/analyst/project/ProjectTopComp.java b/GUI/src/main/java/cz/fidentis/analyst/project/ProjectTopComp.java
index 06ae6879e7d23e8b12247f75312d4134590aaa93..ad98c996f180e8c9c8ce659a3da2fbb14fbf3b98 100644
--- a/GUI/src/main/java/cz/fidentis/analyst/project/ProjectTopComp.java
+++ b/GUI/src/main/java/cz/fidentis/analyst/project/ProjectTopComp.java
@@ -108,7 +108,7 @@ public final class ProjectTopComp extends TopComponent {
         
         // Asks user whether he wants to create new project or open existing
         projectPanel.openExistingOrNewProject();
-        
+       
         // Pass this class to installer so it can call method of this class on close
         Installer inst = new Installer(this);
     }