diff --git a/edu.kit.ipd.descartes.adaptation/src/edu/kit/ipd/descartes/adaptation/model/AbstractEcoreModelLoader.java b/edu.kit.ipd.descartes.adaptation/src/edu/kit/ipd/descartes/adaptation/model/AbstractEcoreModelLoader.java
index fb9dd9c775f753419606eaf775dea1ab9bd08ce7..8f18ab65213f7d209cf92a8dbc64855df9442b3a 100644
--- a/edu.kit.ipd.descartes.adaptation/src/edu/kit/ipd/descartes/adaptation/model/AbstractEcoreModelLoader.java
+++ b/edu.kit.ipd.descartes.adaptation/src/edu/kit/ipd/descartes/adaptation/model/AbstractEcoreModelLoader.java
@@ -20,6 +20,7 @@ public abstract class AbstractEcoreModelLoader {
     private static Logger logger = Logger.getLogger(AbstractEcoreModelLoader.class);
     private ResourceSet resourceSet = null;
     private URI currentUri = null;
+    private EObject loadedModel;
     
 	protected ResourceSet getResourceSet() {
 	    if (resourceSet == null)
@@ -46,9 +47,13 @@ public abstract class AbstractEcoreModelLoader {
 	 * @throws IOException
 	 */
     public EObject load(URI uri) {
-        if (null == uri) {
+        
+        if (null == uri)
             throw new IllegalArgumentException("Missing file URI.");
-        }
+        
+        if (uri.equals(currentUri) && loadedModel != null)
+            return loadedModel;
+        
         // Resource resource = resourceSet.createResource(fileURI);
         Resource resource = resourceSet.getResource(uri, true);
         try {
@@ -60,6 +65,7 @@ public abstract class AbstractEcoreModelLoader {
         }
         currentUri = uri;
         EcoreUtil.resolveAll(resourceSet);
+        loadedModel = resource.getContents().get(0);
         return resource.getContents().get(0);
     }
 	
@@ -115,5 +121,4 @@ public abstract class AbstractEcoreModelLoader {
     public URI getCurrentModelUri() {
         return currentUri;
     }
-
 }