diff --git a/org.eventb.texttools/META-INF/MANIFEST.MF b/org.eventb.texttools/META-INF/MANIFEST.MF
index 3986c4ee6132eca4fb39b030ece8fc9060ee67e9..c6637d8d16cd53ee4673b13bc3cc45906d854151 100644
--- a/org.eventb.texttools/META-INF/MANIFEST.MF
+++ b/org.eventb.texttools/META-INF/MANIFEST.MF
@@ -18,13 +18,13 @@ Require-Bundle: org.eclipse.jface.text;bundle-version="[3.6.0,4.0.0)",
  org.eclipse.emf.compare.edit;bundle-version="4.0.0",
  org.eclipse.emf.compare.ide;bundle-version="3.1.1",
  org.eclipse.emf.compare.rcp;bundle-version="2.2.0"
-Export-Package: org.eventb.texttools,
- org.eventb.texttools.formulas,
- org.eventb.texttools.merge,
- org.eventb.texttools.model.texttools,
- org.eventb.texttools.prettyprint,
- org.eventb.texttools.syntaxExtension
 Bundle-Vendor: Heinrich-Heine University Dusseldorf
 Bundle-ClassPath: .
 Bundle-RequiredExecutionEnvironment: JavaSE-1.7
 Bundle-ActivationPolicy: lazy
+Export-Package: org.eventb.texttools,
+ org.eventb.texttools.formulas,
+ org.eventb.texttools.model.texttools,
+ org.eventb.texttools.model.texttools.impl,
+ org.eventb.texttools.model.texttools.util,
+ org.eventb.texttools.prettyprint
diff --git a/org.eventb.texttools/src/org/eventb/texttools/diff/EventBAttributesCheck.java b/org.eventb.texttools/old/org/eventb/texttools/diff/EventBAttributesCheck.java
similarity index 100%
rename from org.eventb.texttools/src/org/eventb/texttools/diff/EventBAttributesCheck.java
rename to org.eventb.texttools/old/org/eventb/texttools/diff/EventBAttributesCheck.java
diff --git a/org.eventb.texttools/src/org/eventb/texttools/diff/EventBDiffEngine.java b/org.eventb.texttools/old/org/eventb/texttools/diff/EventBDiffEngine.java
similarity index 100%
rename from org.eventb.texttools/src/org/eventb/texttools/diff/EventBDiffEngine.java
rename to org.eventb.texttools/old/org/eventb/texttools/diff/EventBDiffEngine.java
diff --git a/org.eventb.texttools/src/org/eventb/texttools/diff/EventBReferencesCheck.java b/org.eventb.texttools/old/org/eventb/texttools/diff/EventBReferencesCheck.java
similarity index 100%
rename from org.eventb.texttools/src/org/eventb/texttools/diff/EventBReferencesCheck.java
rename to org.eventb.texttools/old/org/eventb/texttools/diff/EventBReferencesCheck.java
diff --git a/org.eventb.texttools/src/org/eventb/texttools/merge/EventBMatchEngine.java b/org.eventb.texttools/old/org/eventb/texttools/merge/EventBMatchEngine.java
similarity index 100%
rename from org.eventb.texttools/src/org/eventb/texttools/merge/EventBMatchEngine.java
rename to org.eventb.texttools/old/org/eventb/texttools/merge/EventBMatchEngine.java
diff --git a/org.eventb.texttools/src/org/eventb/texttools/merge/MergeUtil.java b/org.eventb.texttools/old/org/eventb/texttools/merge/MergeUtil.java
similarity index 100%
rename from org.eventb.texttools/src/org/eventb/texttools/merge/MergeUtil.java
rename to org.eventb.texttools/old/org/eventb/texttools/merge/MergeUtil.java
diff --git a/org.eventb.texttools/src/org/eventb/texttools/merge/MergerProvider.java b/org.eventb.texttools/old/org/eventb/texttools/merge/MergerProvider.java
similarity index 100%
rename from org.eventb.texttools/src/org/eventb/texttools/merge/MergerProvider.java
rename to org.eventb.texttools/old/org/eventb/texttools/merge/MergerProvider.java
diff --git a/org.eventb.texttools/src/org/eventb/texttools/merge/ModelElementChangeRightTargetMerger.java b/org.eventb.texttools/old/org/eventb/texttools/merge/ModelElementChangeRightTargetMerger.java
similarity index 100%
rename from org.eventb.texttools/src/org/eventb/texttools/merge/ModelElementChangeRightTargetMerger.java
rename to org.eventb.texttools/old/org/eventb/texttools/merge/ModelElementChangeRightTargetMerger.java
diff --git a/org.eventb.texttools/src/org/eventb/texttools/merge/ModelMerge.java b/org.eventb.texttools/old/org/eventb/texttools/merge/ModelMerge.java
similarity index 100%
rename from org.eventb.texttools/src/org/eventb/texttools/merge/ModelMerge.java
rename to org.eventb.texttools/old/org/eventb/texttools/merge/ModelMerge.java
diff --git a/org.eventb.texttools/src/org/eventb/texttools/merge/ReferenceChangeLeftTargetMerger.java b/org.eventb.texttools/old/org/eventb/texttools/merge/ReferenceChangeLeftTargetMerger.java
similarity index 100%
rename from org.eventb.texttools/src/org/eventb/texttools/merge/ReferenceChangeLeftTargetMerger.java
rename to org.eventb.texttools/old/org/eventb/texttools/merge/ReferenceChangeLeftTargetMerger.java
diff --git a/org.eventb.texttools/src/org/eventb/texttools/merge/ReferenceChangeRightTargetMerger.java b/org.eventb.texttools/old/org/eventb/texttools/merge/ReferenceChangeRightTargetMerger.java
similarity index 100%
rename from org.eventb.texttools/src/org/eventb/texttools/merge/ReferenceChangeRightTargetMerger.java
rename to org.eventb.texttools/old/org/eventb/texttools/merge/ReferenceChangeRightTargetMerger.java
diff --git a/org.eventb.texttools/src/org/eventb/texttools/merge/ReferenceOrderChangeMerger.java b/org.eventb.texttools/old/org/eventb/texttools/merge/ReferenceOrderChangeMerger.java
similarity index 100%
rename from org.eventb.texttools/src/org/eventb/texttools/merge/ReferenceOrderChangeMerger.java
rename to org.eventb.texttools/old/org/eventb/texttools/merge/ReferenceOrderChangeMerger.java
diff --git a/org.eventb.texttools/src/org/eventb/texttools/syntaxExtension/ISyntaxExtension.java b/org.eventb.texttools/old/org/eventb/texttools/syntaxExtension/ISyntaxExtension.java
similarity index 100%
rename from org.eventb.texttools/src/org/eventb/texttools/syntaxExtension/ISyntaxExtension.java
rename to org.eventb.texttools/old/org/eventb/texttools/syntaxExtension/ISyntaxExtension.java
diff --git a/org.eventb.texttools/plugin.xml b/org.eventb.texttools/plugin.xml
index 5872784b969177331b882c0f2fbec71304ff4f6b..5d33d9e02b70c3eb975287c375e52da36bce5abd 100644
--- a/org.eventb.texttools/plugin.xml
+++ b/org.eventb.texttools/plugin.xml
@@ -47,7 +47,7 @@
          </attributeType>
       </relationship>
    </extension>
-   <extension
+<!--   <extension
          point="org.eclipse.emf.compare.match.engine">
       <matchengine
             label="EventB Match Engine"
@@ -70,5 +70,5 @@
             label="Event-B Difference Engine"
             priority="highest">
       </diffengine>
-   </extension>
+   </extension> -->
 </plugin>
diff --git a/org.eventb.texttools/src/org/eventb/texttools/PersistenceHelper.java b/org.eventb.texttools/src/org/eventb/texttools/PersistenceHelper.java
index c341fd772ab5dee6f041d0124e1bae285da47aad..41dc656323b03846d519c19d093fb47a96743cb4 100644
--- a/org.eventb.texttools/src/org/eventb/texttools/PersistenceHelper.java
+++ b/org.eventb.texttools/src/org/eventb/texttools/PersistenceHelper.java
@@ -8,6 +8,7 @@ package org.eventb.texttools;
 
 import java.io.IOException;
 import java.util.Collections;
+import java.util.List;
 
 import org.eclipse.core.resources.IResource;
 import org.eclipse.core.resources.ResourcesPlugin;
@@ -18,6 +19,23 @@ import org.eclipse.core.runtime.Status;
 import org.eclipse.emf.common.util.EList;
 import org.eclipse.emf.common.util.EMap;
 import org.eclipse.emf.common.util.URI;
+import org.eclipse.emf.compare.Comparison;
+import org.eclipse.emf.compare.Diff;
+import org.eclipse.emf.compare.EMFCompare;
+import org.eclipse.emf.compare.match.DefaultComparisonFactory;
+import org.eclipse.emf.compare.match.DefaultEqualityHelperFactory;
+import org.eclipse.emf.compare.match.DefaultMatchEngine;
+import org.eclipse.emf.compare.match.IComparisonFactory;
+import org.eclipse.emf.compare.match.IMatchEngine;
+import org.eclipse.emf.compare.match.eobject.IEObjectMatcher;
+import org.eclipse.emf.compare.match.impl.MatchEngineFactoryImpl;
+import org.eclipse.emf.compare.match.impl.MatchEngineFactoryRegistryImpl;
+import org.eclipse.emf.compare.merge.BatchMerger;
+import org.eclipse.emf.compare.merge.IMerger.Registry;
+import org.eclipse.emf.compare.merge.IMerger.RegistryImpl;
+import org.eclipse.emf.compare.scope.DefaultComparisonScope;
+import org.eclipse.emf.compare.scope.IComparisonScope;
+import org.eclipse.emf.compare.utils.UseIdentifiers;
 import org.eclipse.emf.ecore.EClass;
 import org.eclipse.emf.ecore.EObject;
 import org.eclipse.emf.ecore.resource.Resource;
@@ -26,7 +44,7 @@ import org.eventb.emf.core.AttributeType;
 import org.eventb.emf.core.CoreFactory;
 import org.eventb.emf.core.EventBElement;
 import org.eventb.emf.core.EventBNamedCommentedComponentElement;
-import org.eventb.texttools.merge.ModelMerge;
+//import org.eventb.texttools.merge.ModelMerge;
 import org.eventb.texttools.prettyprint.PrettyPrinter;
 
 import de.be4.eventb.core.parser.BException;
@@ -141,14 +159,44 @@ public class PersistenceHelper {
 			final IProgressMonitor monitor) {
 		try {
 			long time0 = System.currentTimeMillis();
-			final ModelMerge merge = new ModelMerge(oldVersion, newVersion);
+
+			IEObjectMatcher matcher = DefaultMatchEngine
+					.createDefaultEObjectMatcher(UseIdentifiers.NEVER);
+			IComparisonFactory comparisonFactory = new DefaultComparisonFactory(
+					new DefaultEqualityHelperFactory());
+			IMatchEngine.Factory matchEngineFactory = new MatchEngineFactoryImpl(
+					matcher, comparisonFactory);
+			matchEngineFactory.setRanking(20);
+			IMatchEngine.Factory.Registry matchEngineRegistry = new MatchEngineFactoryRegistryImpl();
+			matchEngineRegistry.add(matchEngineFactory);
+			EMFCompare comparator = EMFCompare.builder()
+					.setMatchEngineFactoryRegistry(matchEngineRegistry).build();
+
+			IComparisonScope scope = new DefaultComparisonScope(oldVersion,
+					newVersion, null);
+
+			Comparison comparison = comparator.compare(scope);
+
+			List<Diff> differences = comparison.getDifferences();
+
+			Registry registry = RegistryImpl.createStandaloneInstance();
+			BatchMerger bm = new BatchMerger(registry);
+
+			bm.copyAllRightToLeft(differences, null);
+
+			System.out.println("LeFuck");
+
+			// final ModelMerge merge = new ModelMerge(oldVersion, newVersion);
 			long time1 = System.currentTimeMillis();
-			merge.applyChanges(monitor);
+			// merge.applyChanges(monitor);
 			long time2 = System.currentTimeMillis();
 			if (DEBUG) {
 				System.out.println("new ModelMerge: " + (time1 - time0));
 				System.out.println("merge.applyChanges: " + (time2 - time1));
 			}
+			if (3 == 2 * 5) { // FIXME temp fix for dead code
+				throw new InterruptedException();
+			}
 		} catch (final InterruptedException e) {
 			// TODO Auto-generated catch block
 			e.printStackTrace();
@@ -349,7 +397,7 @@ public class PersistenceHelper {
 			final long diff = resourceTimestamp - textTimestamp;
 
 			// tolerate 50ms offset (time to save file)
-			// TODO this is ugly!!!
+			// FIXME this is ugly!!!
 			if (diff < 50) {
 				return true;
 			}
diff --git a/org.eventb.texttools/src/org/eventb/texttools/ResourceManager.java b/org.eventb.texttools/src/org/eventb/texttools/ResourceManager.java
index 4c3736bfc990737f3e64d2b51bc5ce201bb92a4a..575b4266bb55e339d0dd475a4c2c89f4653863bc 100644
--- a/org.eventb.texttools/src/org/eventb/texttools/ResourceManager.java
+++ b/org.eventb.texttools/src/org/eventb/texttools/ResourceManager.java
@@ -14,11 +14,6 @@ import org.eclipse.emf.common.command.BasicCommandStack;
 import org.eclipse.emf.ecore.resource.Resource;
 import org.eclipse.emf.edit.domain.AdapterFactoryEditingDomain;
 import org.eclipse.emf.edit.provider.ComposedAdapterFactory;
-import org.eclipse.emf.edit.provider.ReflectiveItemProviderAdapterFactory;
-import org.eclipse.emf.edit.provider.resource.ResourceItemProviderAdapterFactory;
-import org.eventb.emf.core.context.provider.ContextItemProviderAdapterFactory;
-import org.eventb.emf.core.machine.provider.MachineItemProviderAdapterFactory;
-import org.eventb.emf.core.provider.CoreItemProviderAdapterFactory;
 
 public class ResourceManager {
 	private final Map<IProject, AdapterFactoryEditingDomain> projectEditingDomains = new HashMap<IProject, AdapterFactoryEditingDomain>();
@@ -37,15 +32,15 @@ public class ResourceManager {
 		final ComposedAdapterFactory adapterFactory = new ComposedAdapterFactory(
 				ComposedAdapterFactory.Descriptor.Registry.INSTANCE);
 
-		adapterFactory
-				.addAdapterFactory(new ResourceItemProviderAdapterFactory());
-		adapterFactory.addAdapterFactory(new CoreItemProviderAdapterFactory());
-		adapterFactory
-				.addAdapterFactory(new MachineItemProviderAdapterFactory());
-		adapterFactory
-				.addAdapterFactory(new ContextItemProviderAdapterFactory());
-		adapterFactory
-				.addAdapterFactory(new ReflectiveItemProviderAdapterFactory());
+//		adapterFactory
+//				.addAdapterFactory(new ResourceItemProviderAdapterFactory());
+//		adapterFactory.addAdapterFactory(new CoreItemProviderAdapterFactory());
+//		adapterFactory
+//				.addAdapterFactory(new MachineItemProviderAdapterFactory());
+//		adapterFactory
+//				.addAdapterFactory(new ContextItemProviderAdapterFactory());
+//		adapterFactory
+//				.addAdapterFactory(new ReflectiveItemProviderAdapterFactory());
 
 		final BasicCommandStack commandStack = new BasicCommandStack();