diff --git a/mozen/src/main/java/mozen/business/LayerManager.java b/mozen/src/main/java/mozen/business/LayerManager.java
index faeca3dee7b1b7661ab86f15db8470b13f97f347..a5017073b9d1fc2f19be6c7e10462fa5081bd8b6 100644
--- a/mozen/src/main/java/mozen/business/LayerManager.java
+++ b/mozen/src/main/java/mozen/business/LayerManager.java
@@ -12,6 +12,7 @@ import mozen.model.Model;
 import mozen.model.User;
 import mozen.repos.CustomLayerRepository;
 import mozen.repos.ModelRepository;
+import mozen.utils.Md5Utils;
 import mozen.utils.UserHelper;
 
 @Service
@@ -41,7 +42,7 @@ public class LayerManager implements ILayerManager{
     
     CustomLayer layer = new CustomLayer();
     layer.setName(name);
-    layer.setChecksum(crc32.getValue());
+    layer.setChecksum(Md5Utils.getMD5(file));
     layer.setFile(file.getBytes());
     layer.setFileType(file.getContentType());
     layer.setModel(model);
diff --git a/mozen/src/main/java/mozen/business/ModelManager.java b/mozen/src/main/java/mozen/business/ModelManager.java
index aa10a51340a5b8d8a5324a115d9eab22666f77b8..2dc243625797e813e8824fdcf2d6a116392ef4ac 100644
--- a/mozen/src/main/java/mozen/business/ModelManager.java
+++ b/mozen/src/main/java/mozen/business/ModelManager.java
@@ -4,8 +4,6 @@ import java.util.Collection;
 import java.util.Date;
 import java.util.HashSet;
 import java.util.Set;
-import java.util.zip.CRC32;
-import java.util.zip.Checksum;
 
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.data.domain.Page;
@@ -22,6 +20,7 @@ import mozen.model.Tag;
 import mozen.model.User;
 import mozen.repos.ModelRepository;
 import mozen.repos.TagRepository;
+import mozen.utils.Md5Utils;
 import mozen.utils.UserHelper;
 
 @Service
@@ -62,31 +61,30 @@ public class ModelManager implements IModelManager {
     model.setLastModified(new Date());
     model.setAuthor(user);
 
-    try {
-      modelRepo.save(model);
-    } catch (Exception e) {
-      System.err.println("[MODEL MANAGER] Add model error " + e.getMessage());
-    }
+    modelRepo.save(model);
 
     return model.getId();
   }
 
   @Override
   public void addModelFile(MultipartFile file, long id, User user) throws Exception {
+    System.err.println("[MODEL MANAGER] add model file 0");
     Model model = modelRepo.findById(id).get();
-
+    System.err.println("[MODEL MANAGER] add model file 1");
     if (model == null)
       throw new Exception("Unknown model");
     if (!UserHelper.isAuthor(model.getAuthor(), user))
       throw new Exception("Not the author");
-
-    Checksum crc32 = new CRC32();
-    crc32.update(file.getBytes(), 0, file.getBytes().length);
-    model.setChecksum(crc32.getValue());
+    
+    System.err.println("[MODEL MANAGER] add model file 2");
+    model.setChecksum(Md5Utils.getMD5(file));
     model.setFile(file.getBytes());
     model.setFileType(file.getContentType());
 
+    System.err.println("[MODEL MANAGER] add model file 3");
+
     modelRepo.save(model);
+    System.err.println("[MODEL MANAGER] add model file 4");
   }
 
   @Override
diff --git a/mozen/src/main/java/mozen/messages/ModelMessage.java b/mozen/src/main/java/mozen/messages/ModelMessage.java
index c77835cec397b5c2f301febc194a189b40830a69..b8895ecccf2ad1dcc671adf589b5960afb87e466 100644
--- a/mozen/src/main/java/mozen/messages/ModelMessage.java
+++ b/mozen/src/main/java/mozen/messages/ModelMessage.java
@@ -9,7 +9,7 @@ public class ModelMessage implements Serializable {
   private static final long serialVersionUID = 1L;
   
   @NotNull
-  @Size(min = 3, max = 30)
+  @Size(min = 3, max = 100)
   private String name;
 
   @Size(min = 0, max = 200)
@@ -22,7 +22,7 @@ public class ModelMessage implements Serializable {
 
   private String [] customLayers;
 
-  private int performance;
+  private double performance;
 
   private String performanceUnit;
 
@@ -31,7 +31,7 @@ public class ModelMessage implements Serializable {
   public ModelMessage() {
   }
 
-  public ModelMessage(String name, String shortDescription, String longDescription, String[] tags, String[] customLayers, int performance, String performanceUnit, int parameterCount) {
+  public ModelMessage(String name, String shortDescription, String longDescription, String[] tags, String[] customLayers, double performance, String performanceUnit, int parameterCount) {
     this.name = name;
     this.shortDescription = shortDescription;
     this.longDescription = longDescription;
@@ -83,11 +83,11 @@ public class ModelMessage implements Serializable {
     this.customLayers = customLayers;
   }
 
-  public int getPerformance() {
+  public double getPerformance() {
     return this.performance;
   }
 
-  public void setPerformance(int performance) {
+  public void setPerformance(double performance) {
     this.performance = performance;
   }
 
diff --git a/mozen/src/main/java/mozen/model/CustomLayer.java b/mozen/src/main/java/mozen/model/CustomLayer.java
index b2e1e218d3659ccafe47da4683400b60e1cfd480..d6b35ce6fd3b794171ee2114fb9677e463e91290 100644
--- a/mozen/src/main/java/mozen/model/CustomLayer.java
+++ b/mozen/src/main/java/mozen/model/CustomLayer.java
@@ -39,7 +39,7 @@ public class CustomLayer implements Serializable{
 
   @Basic
 	@Column
-  private Long checksum;
+  private String checksum;
 
   @Basic
   @ManyToOne(fetch = FetchType.LAZY, cascade = CascadeType.ALL)
@@ -48,7 +48,7 @@ public class CustomLayer implements Serializable{
   public CustomLayer() {
   }
 
-  public CustomLayer(Long id, String name, byte[] file, String fileType, Long checksum, Model model) {
+  public CustomLayer(Long id, String name, byte[] file, String fileType, String checksum, Model model) {
     this.id = id;
     this.name = name;
     this.file = file;
@@ -100,11 +100,11 @@ public class CustomLayer implements Serializable{
     this.model = model;
   }
 
-  public Long getChecksum() {
+  public String getChecksum() {
     return this.checksum;
   }
 
-  public void setChecksum(Long checksum) {
+  public void setChecksum(String checksum) {
     this.checksum = checksum;
   }
 
diff --git a/mozen/src/main/java/mozen/model/Model.java b/mozen/src/main/java/mozen/model/Model.java
index 48fe0a2346ee082c1aad1c84861ad0d7ea504423..a8eb93eccd962ce2cfdf83985366f3886fb0ce11 100644
--- a/mozen/src/main/java/mozen/model/Model.java
+++ b/mozen/src/main/java/mozen/model/Model.java
@@ -37,7 +37,7 @@ public class Model implements Serializable{
   @Basic
   @Column(nullable = false, unique = true)
   @NotNull
-  @Size(min = 3, max = 30)
+  @Size(min = 3, max = 100)
   private String name;
 
   @Basic
@@ -86,7 +86,7 @@ public class Model implements Serializable{
 
   @Basic
 	@Column
-  private Long checksum;
+  private String checksum;
 
   @Basic
   @Column
@@ -113,7 +113,7 @@ public class Model implements Serializable{
   public Model() {
   }
 
-  public Model(Long id, String name, String shortDescription, String longDescription, Date added, Date lastModified, int votes, double performance, String performanceUnit, int parameterCount, byte[] file, String fileType, Long checksum, boolean isVerified, User author, Set<Tag> tags, Set<CustomLayer> customLayers, Set<Comment> comments) {
+  public Model(Long id, String name, String shortDescription, String longDescription, Date added, Date lastModified, int votes, double performance, String performanceUnit, int parameterCount, byte[] file, String fileType, String checksum, boolean isVerified, User author, Set<Tag> tags, Set<CustomLayer> customLayers, Set<Comment> comments) {
     this.id = id;
     this.name = name;
     this.shortDescription = shortDescription;
@@ -255,11 +255,11 @@ public class Model implements Serializable{
     this.parameterCount = parameterCount;
   }
   
-  public Long getChecksum() {
+  public String getChecksum() {
     return this.checksum;
   }
 
-  public void setChecksum(Long checksum) {
+  public void setChecksum(String checksum) {
     this.checksum = checksum;
   }
 
diff --git a/mozen/src/main/java/mozen/utils/Md5Utils.java b/mozen/src/main/java/mozen/utils/Md5Utils.java
new file mode 100644
index 0000000000000000000000000000000000000000..963b7205605dbf01cb5506d86483f90bb8261168
--- /dev/null
+++ b/mozen/src/main/java/mozen/utils/Md5Utils.java
@@ -0,0 +1,22 @@
+package mozen.utils;
+
+import java.io.IOException;
+import java.math.BigInteger;
+import java.security.MessageDigest;
+import java.security.NoSuchAlgorithmException;
+
+import org.springframework.web.multipart.MultipartFile;
+
+public class Md5Utils {
+  public static String getMD5(MultipartFile file) {
+    try {
+      byte[] uploadBytes = file.getBytes();
+      MessageDigest md5 = MessageDigest.getInstance("MD5");
+      byte[] digest = md5.digest(uploadBytes);
+      return new BigInteger(1, digest).toString(16);
+    } catch (NoSuchAlgorithmException | IOException e) {
+      e.printStackTrace();
+      return null;
+    }    
+  }
+}
\ No newline at end of file
diff --git a/mozen/src/main/java/mozen/web/ModelController.java b/mozen/src/main/java/mozen/web/ModelController.java
index ed7e5b39020273a0aadc357a297ff4d8466b04de..6fab5277596463a1d0352bff6692145126db6441 100644
--- a/mozen/src/main/java/mozen/web/ModelController.java
+++ b/mozen/src/main/java/mozen/web/ModelController.java
@@ -151,7 +151,7 @@ public class ModelController {
     }
   
     try {
-      System.err.println("[MODEL CONTROLLER] model file upload n:"+file.getName());
+      System.err.println("[MODEL CONTROLLER] model file upload n:"+file.getName()+" id:"+id);
       modelManager.addModelFile(file, id, user);
     } catch (Exception e) {
       response.setError(true);