diff --git a/GUI/src/main/java/cz/fidentis/analyst/core/FaceTab.java b/GUI/src/main/java/cz/fidentis/analyst/core/FaceTab.java
index ee6301ec11140ebca95709fb7a9a0efa486b3955..307d7d40658f61c404dccca3fae435f0839d508b 100644
--- a/GUI/src/main/java/cz/fidentis/analyst/core/FaceTab.java
+++ b/GUI/src/main/java/cz/fidentis/analyst/core/FaceTab.java
@@ -1,5 +1,6 @@
 package cz.fidentis.analyst.core;
 
+import cz.fidentis.analyst.Project;
 import cz.fidentis.analyst.batch.BatchAction;
 import cz.fidentis.analyst.canvas.Canvas;
 import cz.fidentis.analyst.canvas.toolbar.SceneToolboxFaceToFace;
@@ -7,6 +8,7 @@ import cz.fidentis.analyst.canvas.toolbar.SceneToolboxSingleFace;
 import cz.fidentis.analyst.curvature.CurvatureAction;
 import cz.fidentis.analyst.distance.DistanceAction;
 import cz.fidentis.analyst.face.HumanFace;
+import cz.fidentis.analyst.faceState.FaceStatePanel;
 import cz.fidentis.analyst.registration.RegistrationAction;
 import cz.fidentis.analyst.symmetry.ProfilesAction;
 import cz.fidentis.analyst.symmetry.SymmetryAction;
@@ -15,6 +17,7 @@ import java.awt.event.ActionListener;
 import java.awt.event.ComponentAdapter;
 import java.awt.event.ComponentEvent;
 import java.nio.file.Path;
+import java.nio.file.Paths;
 import java.util.List;
 import java.util.Objects;
 import javax.swing.GroupLayout;
@@ -45,7 +48,7 @@ public class FaceTab extends TopComponent {
      * @param name Tab name
      * @param listener action listener
      */
-    public FaceTab(HumanFace primary, HumanFace secondary, String name, ActionListener listener) {
+    public FaceTab(HumanFace primary, HumanFace secondary, String name, ActionListener listener, Project project) {
         canvas = new Canvas();
         this.listener = listener;
         
@@ -79,16 +82,31 @@ public class FaceTab extends TopComponent {
         });
         
         controlPanel.addChangeListener(e -> getCanvas().renderScene());
-        
+            
         if (secondary == null) { // single face analysis
             new CurvatureAction(getCanvas(), controlPanel);
             new SymmetryAction(getCanvas(), controlPanel);
             new ProfilesAction(getCanvas(), controlPanel);
+            
+            // Face State Panel for primary face
+            FaceStatePanel facePanel = this.createFacePanelStateForFace(primary, project);
+            controlPanel.addTab(facePanel.getName(), facePanel.getIcon(), facePanel);
+            
         } else { // 1:1
             new RegistrationAction(canvas, controlPanel);
             new DistanceAction(canvas, controlPanel);
             new SymmetryAction(canvas, controlPanel);
             new ProfilesAction(canvas, controlPanel);
+            
+            // Face State Panel for primary face
+            FaceStatePanel facePanel = this.createFacePanelStateForFace(primary, project);
+            facePanel.setTypeOfIcon(FaceStatePanel.TypeOfIcon.MANY_TO_MANY_PRIMARY);
+            controlPanel.addTab(facePanel.getName(), facePanel.getIcon(), facePanel);
+            
+            // Face State Panel for secondary face
+            FaceStatePanel secondaryFacePanel = this.createFacePanelStateForFace(secondary, project);
+            secondaryFacePanel.setTypeOfIcon(FaceStatePanel.TypeOfIcon.MANY_TO_MANY_SECONDARY);
+            controlPanel.addTab(secondaryFacePanel.getName(), secondaryFacePanel.getIcon(), secondaryFacePanel);
         }
     }
     
@@ -179,6 +197,22 @@ public class FaceTab extends TopComponent {
         return canvas;
     }
     
+    /**
+     * Create FaceStatePanel for face
+     * @param face which will be shown on panel
+     * @param project project where path to this face is stored
+     * @return new created face state panel
+     */
+    private FaceStatePanel createFacePanelStateForFace(HumanFace face, Project project) {
+        Path pathToFace = Paths.get(face.getPath());
+        String faceName = face.getShortName();
+        FaceStatePanel facePanel = new FaceStatePanel(project, faceName, pathToFace);        
+        facePanel.loadFaceGeometryInfo(face);
+        facePanel.showFaceState(faceName, pathToFace);
+        //controlPanel.addTab(facePanel.getName(), facePanel.getIcon(), facePanel);
+        return facePanel;
+    }
+    
     
     @Override
     public boolean canClose() {
diff --git a/GUI/src/main/java/cz/fidentis/analyst/faceState/FaceStatePanel.java b/GUI/src/main/java/cz/fidentis/analyst/faceState/FaceStatePanel.java
index c1e3376e3a1c7b203322a1615c85d11014155917..3e9bdcf2a74636c2ec0d5d3753467254dbd72739 100644
--- a/GUI/src/main/java/cz/fidentis/analyst/faceState/FaceStatePanel.java
+++ b/GUI/src/main/java/cz/fidentis/analyst/faceState/FaceStatePanel.java
@@ -1,9 +1,11 @@
 package cz.fidentis.analyst.faceState;
 
+import cz.fidentis.analyst.Project;
 import cz.fidentis.analyst.core.ControlPanel;
 import cz.fidentis.analyst.face.HumanFace;
 import java.awt.Dimension;
 import java.awt.Toolkit;
+import java.awt.event.ActionEvent;
 import java.awt.event.ActionListener;
 import java.awt.image.BufferedImage;
 import java.io.File;
@@ -31,9 +33,23 @@ public class FaceStatePanel extends ControlPanel {
     private final ImageIcon anonymousFace = new ImageIcon(FaceStatePanel.class.getClassLoader().getResource("/" + "face160x160.png"));
     private ImageIcon previewFace = null;
     
-    public static final String ICON = "head28x28.png";
+    public static final String DEFAULT_ICON = "head28x28.png";
+    public static final String PRIMARY_FACE_ICON = "primaryFace28x28.png";
+    public static final String SECONDARY_FACE_ICON = "secondaryFace28x28.png";
     public static final String NAME = "Face State";
     
+    /**
+     * All types of icons which this panel can have
+     * @author Matej Kovar
+     */
+    public enum TypeOfIcon {
+        DEFAULT,
+        MANY_TO_MANY_PRIMARY,
+        MANY_TO_MANY_SECONDARY
+    }
+    
+    private TypeOfIcon typeOfIcon = TypeOfIcon.DEFAULT;
+    
     // Loaded geometry info of face
     private Map<String, FaceGeometryInfo> loadedFaces = new HashMap<>();
 
@@ -48,7 +64,28 @@ public class FaceStatePanel extends ControlPanel {
         loadInfoButton.addActionListener(loadFaceListener);
         loadInfoButton.setToolTipText("Loads face geometry info from file in specified file path");
         //210 140
-
+    }
+    
+    /**
+     * Panel with face information
+     * @param project where path to face is stored
+     * @param faceName name of the displayed face
+     * @param path path to face
+     */
+    public FaceStatePanel(Project project, String faceName, Path path) {
+    
+        // Listener for loading currently selected face (to show face state)
+        ActionListener listenerLoadFace = (ActionEvent e) -> {
+            HumanFace face = project.loadFace(faceName);
+            this.loadFaceGeometryInfo(face);
+            this.showFaceState(faceName, path);
+        };
+        
+        this.setName(NAME);
+        initComponents();
+        loadInfoButton.addActionListener(listenerLoadFace);
+        loadInfoButton.setToolTipText("Loads face geometry info from file in specified file path");
+        //this.project = project;
     }
 
     /**
@@ -284,6 +321,11 @@ public class FaceStatePanel extends ControlPanel {
         filePanel.getAccessibleContext().setAccessibleName(org.openide.util.NbBundle.getMessage(FaceStatePanel.class, "FaceStatePanel.filePanel.AccessibleContext.accessibleName")); // NOI18N
     }// </editor-fold>//GEN-END:initComponents
 
+    public void setTypeOfIcon(TypeOfIcon typeOfIcon) {
+        this.typeOfIcon = typeOfIcon;
+    }
+    
+    
     private void photoMouseClicked(java.awt.event.MouseEvent evt) {//GEN-FIRST:event_photoMouseClicked
         
         if (previewFace != null) {
@@ -315,7 +357,15 @@ public class FaceStatePanel extends ControlPanel {
     
     @Override
     public ImageIcon getIcon() {
-        return new ImageIcon(FaceStatePanel.class.getClassLoader().getResource("/" + ICON));
+        switch (typeOfIcon) {
+            case MANY_TO_MANY_PRIMARY:
+                return new ImageIcon(FaceStatePanel.class.getClassLoader().getResource("/" + PRIMARY_FACE_ICON));
+            case MANY_TO_MANY_SECONDARY:
+                return new ImageIcon(FaceStatePanel.class.getClassLoader().getResource("/" + SECONDARY_FACE_ICON));
+            default:
+                break;
+        }
+        return new ImageIcon(FaceStatePanel.class.getClassLoader().getResource("/" + DEFAULT_ICON));
     }
     
     /**
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 e9e58496e18c7ae2177227a14162c8c79579d759..1c1d82d62e8475474455b02530fb54e0602e32d5 100644
--- a/GUI/src/main/java/cz/fidentis/analyst/project/ProjectPanel.java
+++ b/GUI/src/main/java/cz/fidentis/analyst/project/ProjectPanel.java
@@ -60,6 +60,7 @@ public class ProjectPanel extends JPanel {
         project = new Project();
         
         initComponents();
+        
     }
 
     /**
@@ -588,7 +589,7 @@ public class ProjectPanel extends JPanel {
         
         };
         
-        FaceTab newTab = new FaceTab(face, null, name, tabCloseListener);
+        FaceTab newTab = new FaceTab(face, null, name, tabCloseListener, project);
 
         if (!tabs.contains(newTab)) {
             tabs.add(newTab);
@@ -619,7 +620,8 @@ public class ProjectPanel extends JPanel {
                 closeTab(e);
             }
         };
-        FaceTab newTab = new FaceTab(face1, face2, nameOfTab, tabCloseListener);
+        
+        FaceTab newTab = new FaceTab(face1, face2, nameOfTab, tabCloseListener, project);
         
         if (!tabs.contains(newTab)) {