diff --git a/tools.descartes.dni.adaptation/src-test/tools/descartes/dni/dnimm3/tools/ParserTest.java b/tools.descartes.dni.adaptation/src-test/tools/descartes/dni/dnimm3/tools/ParserTest.java
index f56041972e76c4abc17e6a8efb164b65dbfc3878..301c017b6d761f080dc83141b357c5081d31556e 100644
--- a/tools.descartes.dni.adaptation/src-test/tools/descartes/dni/dnimm3/tools/ParserTest.java
+++ b/tools.descartes.dni.adaptation/src-test/tools/descartes/dni/dnimm3/tools/ParserTest.java
@@ -12,21 +12,21 @@ import org.junit.Test;
 import tools.descartes.dni.dnimm3ap.AdaptationPoints;
 import tools.descartes.dni.dnimm3ap.impl.AdaptationPointsImpl;
 import tools.descartes.dni.dnimm3ap.impl.DNIAPFactoryImpl;
-import tools.descartes.dni.dnimm3ap.tools.DniApParser;
+import tools.descartes.dni.dnimm3ap.tools.DNIAPParser;
 
 public class ParserTest {
 
 	@Test
 	public void shouldConvertFileToModel() {
 		File file = new File("resources-test/scenario0B.dniap");
-		AdaptationPointsImpl adaptationPoints = DniApParser.convertToModel(file);
+		AdaptationPointsImpl adaptationPoints = DNIAPParser.convertToModel(file);
 		Assert.assertTrue(adaptationPoints.getRepositories().getNodes().size() > 0);
 	}
 
 	@Test
 	public void shouldConvertFileToModelWithNetworkStructure() {
 		File file = new File("resources-test/scenario0B.dniap");
-		AdaptationPointsImpl adaptationPoints = DniApParser.convertToModel(file);
+		AdaptationPointsImpl adaptationPoints = DNIAPParser.convertToModel(file);
 		Assert.assertEquals(6, adaptationPoints.getNetworkInfrastructure().getStructure().getNodes().size());
 	}
 
@@ -36,7 +36,7 @@ public class ParserTest {
 		AdaptationPoints model = factory.createAdaptationPoints();
 		File file = File.createTempFile("junit-dni-", ".dniap");
 		file.deleteOnExit();
-		DniApParser.writeToFile(model, file);
+		DNIAPParser.writeToFile(model, file);
 		Assert.assertTrue(file.length() > 100);
 	}
 
@@ -44,7 +44,7 @@ public class ParserTest {
 	public void shouldConvertModelToByteArray() throws IOException {
 		DNIAPFactoryImpl factory = new DNIAPFactoryImpl();
 		AdaptationPoints model = factory.createAdaptationPoints();
-		byte[] bytes = DniApParser.convertToByteArray(model);
+		byte[] bytes = DNIAPParser.convertToByteArray(model);
 		Assert.assertTrue(bytes.length > 10);
 	}
 
@@ -52,21 +52,8 @@ public class ParserTest {
 	public void shouldConvertByteArrayToModel() throws IOException {
 		Path path = Paths.get("resources-test/scenario0B.dniap");
 		byte[] data = Files.readAllBytes(path);
-		AdaptationPoints adaptationPoints = DniApParser.convertToModel(data);
+		AdaptationPoints adaptationPoints = DNIAPParser.convertToModel(data);
 		Assert.assertTrue(adaptationPoints.getRepositories().getNodes().size() > 0);
 	}
 
-	@Test
-	public void shouldCloneModel() {
-		File file = new File("resources-test/scenario0B.dniap");
-		AdaptationPointsImpl adaptationPoints1 = DniApParser.convertToModel(file);
-		AdaptationPointsImpl adaptationPoints2 = DniApParser.clone(adaptationPoints1);
-		Assert.assertNotEquals(adaptationPoints1, adaptationPoints2);
-		Assert.assertEquals(adaptationPoints1.getNetworkInfrastructure().getStructure().getNodes().size(),
-				adaptationPoints2.getNetworkInfrastructure().getStructure().getNodes().size());
-		Assert.assertEquals(
-				adaptationPoints1.getNetworkInfrastructure().getStructure().getNodes().get(0).getUid_generated(),
-				adaptationPoints2.getNetworkInfrastructure().getStructure().getNodes().get(0).getUid_generated());
-	}
-
 }
diff --git a/tools.descartes.dni.adaptation/src-test/tools/descartes/dni/dnimm3/tools/UtilTest.java b/tools.descartes.dni.adaptation/src-test/tools/descartes/dni/dnimm3/tools/UtilTest.java
new file mode 100644
index 0000000000000000000000000000000000000000..98c70dce54ad63f7193a58602971e322bff0d709
--- /dev/null
+++ b/tools.descartes.dni.adaptation/src-test/tools/descartes/dni/dnimm3/tools/UtilTest.java
@@ -0,0 +1,27 @@
+package tools.descartes.dni.dnimm3.tools;
+
+import java.io.File;
+
+import org.junit.Assert;
+import org.junit.Test;
+
+import tools.descartes.dni.dnimm3ap.impl.AdaptationPointsImpl;
+import tools.descartes.dni.dnimm3ap.tools.DNIAPParser;
+import tools.descartes.dni.dnimm3ap.tools.DNIAPUtil;
+
+public class UtilTest {
+
+	@Test
+	public void shouldCloneModel() {
+		File file = new File("resources-test/scenario0B.dniap");
+		AdaptationPointsImpl adaptationPoints1 = DNIAPParser.convertToModel(file);
+		AdaptationPointsImpl adaptationPoints2 = DNIAPUtil.cloneModel(adaptationPoints1);
+		Assert.assertNotEquals(adaptationPoints1, adaptationPoints2);
+		Assert.assertEquals(adaptationPoints1.getNetworkInfrastructure().getStructure().getNodes().size(),
+				adaptationPoints2.getNetworkInfrastructure().getStructure().getNodes().size());
+		Assert.assertEquals(
+				adaptationPoints1.getNetworkInfrastructure().getStructure().getNodes().get(0).getUid_generated(),
+				adaptationPoints2.getNetworkInfrastructure().getStructure().getNodes().get(0).getUid_generated());
+	}
+
+}
diff --git a/tools.descartes.dni.adaptation/src/tools/descartes/dni/dnimm3ap/tools/DniApParser.java b/tools.descartes.dni.adaptation/src/tools/descartes/dni/dnimm3ap/tools/DNIAPParser.java
similarity index 93%
rename from tools.descartes.dni.adaptation/src/tools/descartes/dni/dnimm3ap/tools/DniApParser.java
rename to tools.descartes.dni.adaptation/src/tools/descartes/dni/dnimm3ap/tools/DNIAPParser.java
index 0d6bd1741f222b9f3b808b6ef901f0385cf69e4c..d82b415f5aab0a365cba4cac654634040a278a68 100644
--- a/tools.descartes.dni.adaptation/src/tools/descartes/dni/dnimm3ap/tools/DniApParser.java
+++ b/tools.descartes.dni.adaptation/src/tools/descartes/dni/dnimm3ap/tools/DNIAPParser.java
@@ -10,14 +10,16 @@ import org.eclipse.emf.common.util.URI;
 import org.eclipse.emf.ecore.resource.Resource;
 import org.eclipse.emf.ecore.resource.ResourceSet;
 import org.eclipse.emf.ecore.resource.impl.ResourceSetImpl;
-import org.eclipse.emf.ecore.util.EcoreUtil;
 import org.eclipse.emf.ecore.xmi.impl.XMIResourceFactoryImpl;
 
 import tools.descartes.dni.dnimm3ap.AdaptationPoints;
 import tools.descartes.dni.dnimm3ap.DNIAPPackage;
 import tools.descartes.dni.dnimm3ap.impl.AdaptationPointsImpl;
 
-public class DniApParser {
+public class DNIAPParser {
+
+	private DNIAPParser() {
+	}
 
 	public static AdaptationPointsImpl convertToModel(File file) {
 		ResourceSet resourceSet = new ResourceSetImpl();
@@ -60,8 +62,4 @@ public class DniApParser {
 		resource.save(Collections.EMPTY_MAP);
 	}
 
-	public static AdaptationPointsImpl clone(AdaptationPoints adaptationPoints) {
-		return (AdaptationPointsImpl) EcoreUtil.copy(adaptationPoints);
-	}
-
 }
diff --git a/tools.descartes.dni.adaptation/src/tools/descartes/dni/dnimm3ap/tools/DNIAPUtil.java b/tools.descartes.dni.adaptation/src/tools/descartes/dni/dnimm3ap/tools/DNIAPUtil.java
new file mode 100644
index 0000000000000000000000000000000000000000..fafaaaf3e46ebac7692fd2491a45969b32d077b2
--- /dev/null
+++ b/tools.descartes.dni.adaptation/src/tools/descartes/dni/dnimm3ap/tools/DNIAPUtil.java
@@ -0,0 +1,17 @@
+package tools.descartes.dni.dnimm3ap.tools;
+
+import org.eclipse.emf.ecore.util.EcoreUtil;
+
+import tools.descartes.dni.dnimm3ap.AdaptationPoints;
+import tools.descartes.dni.dnimm3ap.impl.AdaptationPointsImpl;
+
+public class DNIAPUtil {
+
+	private DNIAPUtil() {
+	}
+
+	public static AdaptationPointsImpl cloneModel(AdaptationPoints adaptationPoints) {
+		return (AdaptationPointsImpl) EcoreUtil.copy(adaptationPoints);
+	}
+
+}
diff --git a/tools.descartes.dni.core/src-test/tools/descartes/dni/dnimm3/tools/ParserTest.java b/tools.descartes.dni.core/src-test/tools/descartes/dni/dnimm3/tools/ParserTest.java
index 2844ddeab7f276cb441c236f131091e8bfb1170e..0c8d9eac5d8dc5f395d3ae429a8444cdf71cc458 100644
--- a/tools.descartes.dni.core/src-test/tools/descartes/dni/dnimm3/tools/ParserTest.java
+++ b/tools.descartes.dni.core/src-test/tools/descartes/dni/dnimm3/tools/ParserTest.java
@@ -18,14 +18,14 @@ public class ParserTest {
 	@Test
 	public void shouldConvertFileToModel() {
 		File file = new File("resources-test/scenario0A.dni");
-		NetworkInfrastructureImpl networkInfrastructure = DniParser.convertToModel(file);
+		NetworkInfrastructureImpl networkInfrastructure = DNIParser.convertToModel(file);
 		Assert.assertEquals(6, networkInfrastructure.getStructure().getNodes().size());
 	}
 
 	@Test
 	public void shouldConvertFileWithAdaptationToModel() {
 		File file = new File("resources-test/scenario0B.dni");
-		NetworkInfrastructureImpl networkInfrastructure = DniParser.convertToModel(file);
+		NetworkInfrastructureImpl networkInfrastructure = DNIParser.convertToModel(file);
 		Assert.assertEquals(6, networkInfrastructure.getStructure().getNodes().size());
 	}
 
@@ -35,7 +35,7 @@ public class ParserTest {
 		NetworkInfrastructure model = factory.createNetworkInfrastructure();
 		File file = File.createTempFile("junit-dni-", ".dni");
 		file.deleteOnExit();
-		DniParser.writeToFile(model, file);
+		DNIParser.writeToFile(model, file);
 		Assert.assertTrue(file.length() > 100);
 	}
 
@@ -43,7 +43,7 @@ public class ParserTest {
 	public void shouldConvertModelToByteArray() throws IOException {
 		DNIFactoryImpl factory = new DNIFactoryImpl();
 		NetworkInfrastructure model = factory.createNetworkInfrastructure();
-		byte[] bytes = DniParser.convertToByteArray(model);
+		byte[] bytes = DNIParser.convertToByteArray(model);
 		Assert.assertTrue(bytes.length > 100);
 	}
 
@@ -51,7 +51,7 @@ public class ParserTest {
 	public void shouldConvertByteArrayToModel() throws IOException {
 		Path path = Paths.get("resources-test/scenario0A.dni");
 		byte[] data = Files.readAllBytes(path);
-		NetworkInfrastructureImpl networkInfrastructure = DniParser.convertToModel(data);
+		NetworkInfrastructureImpl networkInfrastructure = DNIParser.convertToModel(data);
 		Assert.assertEquals(6, networkInfrastructure.getStructure().getNodes().size());
 	}
 
diff --git a/tools.descartes.dni.core/src-test/tools/descartes/dni/dnimm3/tools/UtilTest.java b/tools.descartes.dni.core/src-test/tools/descartes/dni/dnimm3/tools/UtilTest.java
new file mode 100644
index 0000000000000000000000000000000000000000..120bda935af0df5716ef43734170ffc7348a91c0
--- /dev/null
+++ b/tools.descartes.dni.core/src-test/tools/descartes/dni/dnimm3/tools/UtilTest.java
@@ -0,0 +1,24 @@
+package tools.descartes.dni.dnimm3.tools;
+
+import java.io.File;
+
+import org.junit.Assert;
+import org.junit.Test;
+
+import tools.descartes.dni.dnimm3.impl.NetworkInfrastructureImpl;
+
+public class UtilTest {
+
+	@Test
+	public void shouldCloneModel() {
+		File file = new File("resources-test/scenario0B.dni");
+		NetworkInfrastructureImpl networkInfrastructure1 = DNIParser.convertToModel(file);
+		NetworkInfrastructureImpl networkInfrastructure2 = DNIUtil.cloneModel(networkInfrastructure1);
+		Assert.assertNotEquals(networkInfrastructure1, networkInfrastructure2);
+		Assert.assertEquals(networkInfrastructure1.getStructure().getNodes().size(),
+				networkInfrastructure2.getStructure().getNodes().size());
+		Assert.assertEquals(networkInfrastructure1.getStructure().getNodes().get(0).getUid_generated(),
+				networkInfrastructure2.getStructure().getNodes().get(0).getUid_generated());
+	}
+
+}
diff --git a/tools.descartes.dni.core/src/tools/descartes/dni/dnimm3/tools/DniParser.java b/tools.descartes.dni.core/src/tools/descartes/dni/dnimm3/tools/DNIParser.java
similarity index 98%
rename from tools.descartes.dni.core/src/tools/descartes/dni/dnimm3/tools/DniParser.java
rename to tools.descartes.dni.core/src/tools/descartes/dni/dnimm3/tools/DNIParser.java
index 510d2ba6802050eb27f8e9ae0561d2b7046929af..8486cde15b586a434374f85aa787735ee36da2fb 100644
--- a/tools.descartes.dni.core/src/tools/descartes/dni/dnimm3/tools/DniParser.java
+++ b/tools.descartes.dni.core/src/tools/descartes/dni/dnimm3/tools/DNIParser.java
@@ -16,7 +16,10 @@ import tools.descartes.dni.dnimm3.DNIPackage;
 import tools.descartes.dni.dnimm3.NetworkInfrastructure;
 import tools.descartes.dni.dnimm3.impl.NetworkInfrastructureImpl;
 
-public class DniParser {
+public class DNIParser {
+	
+	private DNIParser() {
+	}
 
 	public static NetworkInfrastructureImpl convertToModel(File file) {
 		ResourceSet resourceSet = new ResourceSetImpl();
diff --git a/tools.descartes.dni.core/src/tools/descartes/dni/dnimm3/tools/DNIUtil.java b/tools.descartes.dni.core/src/tools/descartes/dni/dnimm3/tools/DNIUtil.java
new file mode 100644
index 0000000000000000000000000000000000000000..b6032cb2a9981712819b8caa25e18c8485d249a8
--- /dev/null
+++ b/tools.descartes.dni.core/src/tools/descartes/dni/dnimm3/tools/DNIUtil.java
@@ -0,0 +1,17 @@
+package tools.descartes.dni.dnimm3.tools;
+
+import org.eclipse.emf.ecore.util.EcoreUtil;
+
+import tools.descartes.dni.dnimm3.NetworkInfrastructure;
+import tools.descartes.dni.dnimm3.impl.NetworkInfrastructureImpl;
+
+public class DNIUtil {
+
+	private DNIUtil() {
+	}
+
+	public static NetworkInfrastructureImpl cloneModel(NetworkInfrastructure networkInfrastructure) {
+		return (NetworkInfrastructureImpl) EcoreUtil.copy(networkInfrastructure);
+	}
+
+}