diff --git a/MeshModel/MeshModel.iml b/MeshModel/MeshModel.iml
index 80247d69d1246c2c58446a36337ec1119c1d0a33..a1df9e005bfd87c74b2a4189642b3e04bde57955 100644
--- a/MeshModel/MeshModel.iml
+++ b/MeshModel/MeshModel.iml
@@ -14,6 +14,7 @@
     <orderEntry type="library" name="Maven: java3d:vecmath:1.3.1" level="project" />
     <orderEntry type="library" name="Maven: java3d:j3d-core:1.3.1" level="project" />
     <orderEntry type="library" name="Maven: org.netbeans.api:org-netbeans-api-annotations-common:RELEASE82" level="project" />
+    <orderEntry type="library" name="Maven: com.github.mokiat:java-data-front:v2.0.0" level="project" />
     <orderEntry type="library" name="Maven: javax.vecmath:vecmath:1.5.2" level="project" />
   </component>
 </module>
\ No newline at end of file
diff --git a/MeshModel/src/main/java/cz/fidentis/analyst/mesh/core/CornerTable.java b/MeshModel/src/main/java/cz/fidentis/analyst/mesh/core/CornerTable.java
index c93238385d20d984ed848a0750f90520bc49724a..bc942ea6da29f54e4423f759a9fedcf32b2257d4 100644
--- a/MeshModel/src/main/java/cz/fidentis/analyst/mesh/core/CornerTable.java
+++ b/MeshModel/src/main/java/cz/fidentis/analyst/mesh/core/CornerTable.java
@@ -4,79 +4,111 @@ import java.util.ArrayList;
 import java.util.List;
 
 /**
- * Representation of mesh in memory
+ * Representation of mesh in memory using corner table
+ *
+ * @author Matej Lukes
  */
 public class CornerTable {
 
     private List<CornerTableRow> rows = new ArrayList<>();
 
     /**
-     * returns index of face that contains corner
-     * @param c index of corner
+     * returns index of face that contains corner.
+     * returns -2 if index is less than 0 or more than number of rows in corner table
+     *
+     * @param index index of corner
      * @return index of corner
      */
-    public int getIndexOfFace(int c) {
-        return c / 3;
+    public int getIndexOfFace(int index) {
+        if (index < 0 || index > rows.size())
+            return -2;
+        return index / 3;
     }
 
     /**
-     * returns index of opposite corner
-     * @param c index of corner
+     * returns index of opposite corner.
+     * returns -1 if corner does not have opposite
+     * returns -2 if index is less than 0 or more than number of rows in corner table
+     *
+     * @param index index of corner
      * @return index of corner
      */
-    public int getIndexOfOppositeCorner(int c) {
-        return rows.get(c).getOppositeCornerIndex();
+    public int getIndexOfOppositeCorner(int index) {
+        if (index < 0 || index > rows.size())
+            return -2;
+        return rows.get(index).getOppositeCornerIndex();
     } // opposite
 
     /**
      * returns index of next corner in Face
-     * @param c index of corner
-     * @return index of corner
+     * returns -2 if index is less than 0 or more than number of rows in corner table
+     *
+     * @param index index of corner
+     * @return index of next corner
      */
-    public int getIndexOfNextCornerInFace(int c) {
-        if ((c % 3) == 2)
-            return c - 1;
-        return c + 1;
-    }// next in t(c)
+    public int getIndexOfNextCornerInFace(int index) {
+        if (index < 0 || index > rows.size())
+            return -2;
+        if ((index % 3) == 2)
+            return index - 1;
+        return index + 1;
+    }
 
     /**
      * returns index of previous corner in Face
-     * @param c index of corner
-     * @return index of corner
+     * returns -2 if index is less than 0 or more than number of rows in corner table
+     *
+     * @param index index of corner
+     * @return index of previous corner
      */
-    public int getIndexOfPreviousCornerInFace(int c) {
-        return getIndexOfNextCornerInFace(getIndexOfNextCornerInFace(c));
-    } // previous corner
+    public int getIndexOfPreviousCornerInFace(int index) {
+        if (index < 0 || index > rows.size())
+            return -2;
+        return getIndexOfNextCornerInFace(getIndexOfNextCornerInFace(index));
+    }
 
     /**
      * returns opposite corner of edge on the left side of corner
-     * @param c index of corner
+     * returns -2 if index is less than 0 or more than number of rows in corner table
+     *
+     * @param index index of corner
      * @return index of corner
      */
-    public int getIndexOfTipCornerOnLeft(int c) {
-        return getIndexOfOppositeCorner(getIndexOfPreviousCornerInFace(c));
-    }  // tip on left
+    public int getIndexOfTipCornerOnLeft(int index) {
+        if (index < 0 || index > rows.size())
+            return -2;
+        return getIndexOfOppositeCorner(getIndexOfPreviousCornerInFace(index));
+    }
 
     /**
      * returns opposite corner of edge on the right side of corner
-     * @param c index of corner
+     * returns -2 if index is less than 0 ord more than number of rows in corner table
+     *
+     * @param index index of corner
      * @return index of corner
      */
-    public int getIndexOfTipCornerOnRight(int c) {
-        return getIndexOfOppositeCorner(getIndexOfNextCornerInFace(c));
-    } // tip on right
+    public int getIndexOfTipCornerOnRight(int index) {
+        if (index < 0 || index > rows.size())
+            return -2;
+        return getIndexOfOppositeCorner(getIndexOfNextCornerInFace(index));
+    }
 
     /**
      * returns corner next to the corner opposite the edge on the left side
-     * @param c index of corner
+     * returns -2 if index is less than 0 ord more than number of rows in corner table
+     *
+     * @param index index of corner
      * @return index of corner
      */
-    public int getNextAroundCorner(int c) {
-        return getIndexOfNextCornerInFace(getIndexOfTipCornerOnLeft(c));
-    } // next around v(c)
+    public int getNextAroundCorner(int index) {
+        if (index < 0 || index > rows.size())
+            return -2;
+        return getIndexOfNextCornerInFace(getIndexOfTipCornerOnLeft(index));
+    }
 
     /**
-     * adds row to the corner table
+     * adds row at the end of corner table
+     *
      * @param row that is going to be added to corner table
      */
     public void addRow(CornerTableRow row) {
@@ -85,10 +117,30 @@ public class CornerTable {
 
     /**
      * replaces row of corner table at specified index
+     *
      * @param index index of replaced row
-     * @param row new row
+     * @param row   new row
      */
     public void replaceRow(int index, CornerTableRow row) {
         rows.set(index, row);
     }
+
+    /**
+     * returns number of rows in corner table
+     *
+     * @return number of rows in corner table
+     */
+    public int getSize() {
+        return rows.size();
+    }
+
+    /**
+     * returns row of corner table with specified index
+     *
+     * @param index index of desired row
+     * @return row of corner table
+     */
+    public CornerTableRow getRow(int index) {
+        return rows.get(index);
+    }
 }
diff --git a/MeshModel/src/main/java/cz/fidentis/analyst/mesh/core/CornerTableRow.java b/MeshModel/src/main/java/cz/fidentis/analyst/mesh/core/CornerTableRow.java
index 70b2d35ef2409b012e6cb131c033b240f938bbef..c25f921e1d4cb311a2db194a96734e405f71415c 100644
--- a/MeshModel/src/main/java/cz/fidentis/analyst/mesh/core/CornerTableRow.java
+++ b/MeshModel/src/main/java/cz/fidentis/analyst/mesh/core/CornerTableRow.java
@@ -2,11 +2,18 @@ package cz.fidentis.analyst.mesh.core;
 
 /**
  * single row in corner table
+ *
+ * @author Matej Lukes
  */
 public class CornerTableRow {
     private int oppositeCornerIndex;
     private int vertexIndex;
 
+    /**
+     * Constructor of a row in corner
+     * @param vertexIndex index of associated vertex in MashFacet
+     * @param oppositeCornerIndex index of the opposite corner, -1 if there is no opposite corner
+     */
     public CornerTableRow(int vertexIndex, int oppositeCornerIndex) {
         this.vertexIndex = vertexIndex;
         this.oppositeCornerIndex = oppositeCornerIndex;
@@ -27,7 +34,11 @@ public class CornerTableRow {
     public int getOppositeCornerIndex() {
         return oppositeCornerIndex;
     }
-	
+
+    /**
+     * sets index of the opposite corner
+     * @param index index of the opposite corner in corner table
+     */
 	public void setOppositeCornerIndex(int index) {
 		this.oppositeCornerIndex = index;
 	}
diff --git a/MeshModel/src/main/java/cz/fidentis/analyst/mesh/core/MeshFacet.java b/MeshModel/src/main/java/cz/fidentis/analyst/mesh/core/MeshFacet.java
index a68b9ea6e5c2bd1fa504b0e448ddd1895f3177ac..84ddab7cdee5ff91128018ff9538e3e3a04c5342 100644
--- a/MeshModel/src/main/java/cz/fidentis/analyst/mesh/core/MeshFacet.java
+++ b/MeshModel/src/main/java/cz/fidentis/analyst/mesh/core/MeshFacet.java
@@ -12,18 +12,35 @@ public class MeshFacet {
     private List<MeshPoint> vertexes = new ArrayList<>();
     private CornerTable cornerTable = new CornerTable();
 
-    public MeshPoint GetVertex(int c) {
-        return vertexes.get(c);
-    } // vertex of c
+    /**
+     * returns vertex of specified index
+     * @param index index of vertex
+     * @return vertex
+     */
+    public MeshPoint GetVertex(int index) {
+        return vertexes.get(index);
+    }
 
+    /**
+     * adds vertex to MeshFacet
+     * @param point new vertex
+     */
     public void addVertex(MeshPoint point){
         vertexes.add(point);
     }
-	
+
+    /**
+     * returns number of vertexes in MeshFacet
+     * @return number of vertexes
+     */
 	public int getNumberOfVertexes() {
 		return vertexes.size();
 	}
-	
+
+    /**
+     * returns Corner Table representing MeshFacet
+     * @return corner table
+     */
 	public CornerTable getCornerTable() {
 		return cornerTable;
 	}
diff --git a/MeshModel/src/main/java/cz/fidentis/analyst/mesh/core/MeshModel.java b/MeshModel/src/main/java/cz/fidentis/analyst/mesh/core/MeshModel.java
index d4220ea931fb0debfe7cbaab8eada8140174f94f..7966434fa301c4163ff8840eb94cc3364dec64bb 100644
--- a/MeshModel/src/main/java/cz/fidentis/analyst/mesh/core/MeshModel.java
+++ b/MeshModel/src/main/java/cz/fidentis/analyst/mesh/core/MeshModel.java
@@ -5,14 +5,24 @@ import java.util.List;
 
 /**
  * MeshModel is a root node of the hierarchy
+ *
+ * @author Matej Lukes
  */
 public class MeshModel {
     private List<MeshFacet> facets = new ArrayList<>();
 
+    /**
+     * returns list of MeshFacets
+     * @return list of MeshFacets
+     */
     public List<MeshFacet> getFacets() {
         return facets;
     }
 
+    /**
+     * adds new MeshFacet to the model
+     * @param facet new MeshFacet
+     */
     public void addFacet(MeshFacet facet) {
         facets.add(facet);
     }
diff --git a/MeshModel/src/main/java/cz/fidentis/analyst/mesh/core/MeshPoint.java b/MeshModel/src/main/java/cz/fidentis/analyst/mesh/core/MeshPoint.java
index 5b041240c8b77d903f9c8cc7925978449fd72db2..7a70b1750f5e7c8f040ff956a14f855ec93f4791 100644
--- a/MeshModel/src/main/java/cz/fidentis/analyst/mesh/core/MeshPoint.java
+++ b/MeshModel/src/main/java/cz/fidentis/analyst/mesh/core/MeshPoint.java
@@ -10,6 +10,12 @@ import javax.vecmath.Vector3d;
 public class MeshPoint {
     private final Vector3d position, normal, texCoord;
 
+    /**
+     * constructor of meshPoint
+     * @param position position of MeshPoint
+     * @param normal normal of MeshPoint
+     * @param texCoord coordinates in texture
+     */
     public MeshPoint(Vector3d position, Vector3d normal , Vector3d texCoord) {
         if (position == null || normal == null || texCoord == null)
             throw new NullPointerException("position, normal and texCoord cannot be null");
@@ -55,6 +61,10 @@ public class MeshPoint {
                 && this.texCoord.equals(meshPointObj.texCoord);
     }
 
+    /**
+     * returns hash of MeshPoint
+     * @return hash
+     */
     @Override
     public int hashCode() {
         return position.hashCode() + normal.hashCode() + texCoord.hashCode();