Fixes 406094
Improved Xcore support. Remove standalone "hacks".
The standalone engine will provide workarrounds dor this.
diff --git a/features/org.eclipse.epsilon.emc.spreadsheets.dependencies.feature/feature.xml b/features/org.eclipse.epsilon.emc.spreadsheets.dependencies.feature/feature.xml
index 18be8da..8eb4a56 100644
--- a/features/org.eclipse.epsilon.emc.spreadsheets.dependencies.feature/feature.xml
+++ b/features/org.eclipse.epsilon.emc.spreadsheets.dependencies.feature/feature.xml
@@ -96,7 +96,6 @@
       <import plugin="org.apache.commons.collections" version="3.2.2" match="greaterOrEqual"/>
       <import plugin="org.apache.log4j" version="1.2.15" match="greaterOrEqual"/>
       <import plugin="org.slf4j.api" version="1.7.2" match="greaterOrEqual"/>
-      <import plugin="org.slf4j.log4j" version="1.7.2" match="greaterOrEqual"/>
    </requires>
 
    <plugin
diff --git a/plugins/org.eclipse.epsilon.emc.emf.dt/src/org/eclipse/epsilon/emc/emf/dt/EmfModelConfigurationDialog.java b/plugins/org.eclipse.epsilon.emc.emf.dt/src/org/eclipse/epsilon/emc/emf/dt/EmfModelConfigurationDialog.java
index 9f83aa9..de97eae 100644
--- a/plugins/org.eclipse.epsilon.emc.emf.dt/src/org/eclipse/epsilon/emc/emf/dt/EmfModelConfigurationDialog.java
+++ b/plugins/org.eclipse.epsilon.emc.emf.dt/src/org/eclipse/epsilon/emc/emf/dt/EmfModelConfigurationDialog.java
@@ -296,8 +296,8 @@
 			public void widgetSelected(SelectionEvent e) {

 				final String path = BrowseWorkspaceUtil.browseFilePath(getShell(),

 						"EMF meta-models in the workspace",

-						"Select an EMF meta-model (ECore)",

-						"ecore", null);

+						"Select an EMF meta-model (Ecore or Xcore)",

+			            "?core<", null);

 				if (path != null && !metamodels.contains(path)) {

 					metamodels.add(path);

 					metamodelList.refresh();

@@ -358,19 +358,14 @@
 	private Collection<EPackage> findEPackages(String resourcePath) {

 		Set<EPackage> ePackages = new HashSet<EPackage>();

 		

+		// Reuse EmfRegistryManager Approach

 		try {

-			ResourceSet rs = new ResourceSetImpl();

-			Resource r = rs.createResource(URI.createPlatformResourceURI(resourcePath, true));

-			r.load(null);

-			if (expandButton.getSelection()) {

-				EcoreUtil.resolveAll(r);

-			}

-			for (Resource res : rs.getResources()) {

-				Iterator<EObject> it = res.getAllContents();

-				while (it.hasNext()) {

-					ePackages.add(EmfUtil.getTopEPackage(it.next().eClass().getEPackage()));

-				}

-			}

+		    if (resourcePath.endsWith(".ecore")) {

+		        ePackages.addAll(EmfUtil.register(URI.createPlatformResourceURI(resourcePath, true), EPackage.Registry.INSTANCE));			

+		    }	 

+		    else {    // Must be xcore

+		        ePackages.addAll(EmfUtil.registerXcore(URI.createPlatformResourceURI(resourcePath, true), EPackage.Registry.INSTANCE));

+		    }

 		}

 		catch (Exception ex) {

 			ex.printStackTrace();

diff --git a/plugins/org.eclipse.epsilon.emc.emf/META-INF/MANIFEST.MF b/plugins/org.eclipse.epsilon.emc.emf/META-INF/MANIFEST.MF
index 8c98b30..d560a75 100644
--- a/plugins/org.eclipse.epsilon.emc.emf/META-INF/MANIFEST.MF
+++ b/plugins/org.eclipse.epsilon.emc.emf/META-INF/MANIFEST.MF
@@ -9,7 +9,10 @@
  org.eclipse.emf.ecore;visibility:=reexport,

  org.eclipse.emf.ecore.xmi;visibility:=reexport,

  org.eclipse.emf.ecore.change;visibility:=reexport,

- org.eclipse.emf.mapping.xsd2ecore;resolution:=optional

+ com.google.inject,

+ org.eclipse.xsd,

+ org.eclipse.emf.ecore.xcore;resolution:=optional,

+ org.apache.commons.logging

 Export-Package: org.eclipse.epsilon.emc.emf,

  org.eclipse.epsilon.emc.emf.m0,

  org.eclipse.epsilon.emc.emf.tools,

diff --git a/plugins/org.eclipse.epsilon.emc.emf/src/org/eclipse/epsilon/emc/emf/AbstractEmfModel.java b/plugins/org.eclipse.epsilon.emc.emf/src/org/eclipse/epsilon/emc/emf/AbstractEmfModel.java
index 2d397a1..7ba184b 100644
--- a/plugins/org.eclipse.epsilon.emc.emf/src/org/eclipse/epsilon/emc/emf/AbstractEmfModel.java
+++ b/plugins/org.eclipse.epsilon.emc.emf/src/org/eclipse/epsilon/emc/emf/AbstractEmfModel.java
@@ -56,7 +56,7 @@
 	

 	protected Resource modelImpl;

 	protected boolean expand = true;

-	Map<String, EClass> eClassCache = new HashMap<String, EClass>();
+	Map<String, EClass> eClassCache = new HashMap<String, EClass>();

 	

 	protected InputStream getInputStream(String file) throws IOException {

 		

diff --git a/plugins/org.eclipse.epsilon.emc.emf/src/org/eclipse/epsilon/emc/emf/EmfModel.java b/plugins/org.eclipse.epsilon.emc.emf/src/org/eclipse/epsilon/emc/emf/EmfModel.java
index c895226..5593faa 100644
--- a/plugins/org.eclipse.epsilon.emc.emf/src/org/eclipse/epsilon/emc/emf/EmfModel.java
+++ b/plugins/org.eclipse.epsilon.emc.emf/src/org/eclipse/epsilon/emc/emf/EmfModel.java
@@ -535,7 +535,12 @@
 			try {

 				metamodelPackages = attemptFileBasedMetamodelReuse(metamodelFileUri);

 				if (metamodelPackages == null) {

-					metamodelPackages = EmfUtil.register(metamodelFileUri, resourceSet.getPackageRegistry(), false);

+					if ("ecore".equals(metamodelFileUri.fileExtension())) {

+						metamodelPackages = EmfUtil.register(metamodelFileUri, resourceSet.getPackageRegistry(), false);

+					}

+					else {

+						metamodelPackages = EmfUtil.registerXcore(metamodelFileUri, resourceSet.getPackageRegistry(), false);

+					}

 					saveFileBasedMetamodelForReuse(metamodelFileUri, metamodelPackages);

 				}

 			} catch (Exception e) {

diff --git a/plugins/org.eclipse.epsilon.emc.emf/src/org/eclipse/epsilon/emc/emf/EmfUtil.java b/plugins/org.eclipse.epsilon.emc.emf/src/org/eclipse/epsilon/emc/emf/EmfUtil.java
index 7d2c061..228824a 100644
--- a/plugins/org.eclipse.epsilon.emc.emf/src/org/eclipse/epsilon/emc/emf/EmfUtil.java
+++ b/plugins/org.eclipse.epsilon.emc.emf/src/org/eclipse/epsilon/emc/emf/EmfUtil.java
@@ -10,6 +10,7 @@
  ******************************************************************************/

 package org.eclipse.epsilon.emc.emf;

 

+import java.io.IOException;

 import java.util.ArrayList;

 import java.util.Collection;

 import java.util.Collections;

@@ -29,14 +30,22 @@
 import org.eclipse.emf.ecore.EPackage;

 import org.eclipse.emf.ecore.EStructuralFeature;

 import org.eclipse.emf.ecore.EcorePackage;

+import org.eclipse.emf.ecore.plugin.EcorePlugin;

 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.util.ExtendedMetaData;

+import org.eclipse.emf.ecore.xcore.XcorePackage;

+import org.eclipse.emf.ecore.xcore.XcoreStandaloneSetup;

 import org.eclipse.emf.ecore.xmi.impl.EcoreResourceFactoryImpl;

 import org.eclipse.emf.ecore.xmi.impl.XMIResourceFactoryImpl;

 import org.eclipse.epsilon.common.util.OperatingSystem;

+import org.eclipse.xtext.resource.XtextResource;

+import org.eclipse.xtext.resource.XtextResourceSet;

+

+import com.google.inject.Injector;

+

 

 public class EmfUtil {

 		

@@ -139,12 +148,13 @@
 	

 	//protected HashMap<URI, List<EPackage>> cache = new HashMap<URI, List<EPackage>>();

 	

-	public static void initialiseResourceFactoryRegistry() {

+	private static void initialiseResourceFactoryRegistry() {

 		final Map<String, Object> etfm = Resource.Factory.Registry.INSTANCE.getExtensionToFactoryMap();

 		

 		if (!etfm.containsKey("*")) {

 			etfm.put("*", new XMIResourceFactoryImpl());

 		}

+		

 	}

 	

 	public static List<EPackage> register(URI uri, EPackage.Registry registry) throws Exception {

@@ -157,7 +167,7 @@
 	 * @param uri The URI of the metamodel

 	 * @param registry The registry in which the metamodel's packages are registered

 	 * @param useUriForResource If True, the URI of the resource created for the metamodel would be overwritten

-	 * 	with the URI of the [last] EPackage in the metamodel. 

+	 * 	with the URI of the last EPackage in the metamodel. 

 	 * @return A list of the EPackages registered. 

 	 * @throws Exception If there is an error accessing the resources.  

 	 */

@@ -182,30 +192,8 @@
 			if (next instanceof EPackage) {

 				EPackage p = (EPackage) next;

 				

-				if (p.getNsURI() == null || p.getNsURI().trim().length() == 0) {

-					if (p.getESuperPackage() == null) {

-						p.setNsURI(p.getName());

-					}

-					else {

-						p.setNsURI(p.getESuperPackage().getNsURI() + "/" + p.getName());

-					}

-				}

-				

-				if (p.getNsPrefix() == null || p.getNsPrefix().trim().length() == 0) {

-					if (p.getESuperPackage() != null) {

-						if (p.getESuperPackage().getNsPrefix()!=null) {

-							p.setNsPrefix(p.getESuperPackage().getNsPrefix() + "." + p.getName());

-						}

-						else {

-							p.setNsPrefix(p.getName());

-						}

-					}

-				}

-				

-				if (p.getNsPrefix() == null) p.setNsPrefix(p.getName());

+				adjustNsAndPrefix(metamodel, p, useUriForResource);

 				registry.put(p.getNsURI(), p);

-				if (useUriForResource)

-					metamodel.setURI(URI.createURI(p.getNsURI()));

 				ePackages.add(p);

 			}

 		}

@@ -213,6 +201,33 @@
 		return ePackages;

 		

 	}

+	

+	public static List<EPackage> registerXcore(URI locationURI, EPackage.Registry registry) throws IOException {

+		return registerXcore(locationURI, registry, true);

+	}

+	

+	public static List<EPackage> registerXcore(URI locationURI, EPackage.Registry registry, boolean useUriForResource) throws IOException {

+		

+		List<EPackage> ePackages = new ArrayList<EPackage>();

+		

+		initialiseResourceFactoryRegistry();

+		

+		ResourceSet resourceSet = new ResourceSetImpl();

+		resourceSet.getURIConverter().getURIMap().putAll(EcorePlugin.computePlatformURIMap(true));

+		Resource metamodel = resourceSet.getResource(locationURI, true);

+		metamodel.load(Collections.EMPTY_MAP);

+		EcoreUtil.resolveAll(metamodel);

+		EPackage ePackage = (EPackage)EcoreUtil.getObjectByType(metamodel.getContents(), EcorePackage.Literals.EPACKAGE);

+		

+        if (ePackage != null)

+        {

+        		adjustNsAndPrefix(metamodel, ePackage, useUriForResource);

+        		registry.put(ePackage.getNsURI(), ePackage);

+        		ePackages.add(ePackage);

+        }

+		

+		return ePackages;

+	}

 

 	protected static void setDataTypesInstanceClasses(Resource metamodel) {

 		Iterator<EObject> it = metamodel.getAllContents();

@@ -306,4 +321,36 @@
 		org.eclipse.epsilon.emc.emf.EmfUtil.createResource(cloned);

 		return cloned;

 	}

+	

+

+	/**

+	 * @param metamodel

+	 * @param p

+	 * @param useUriForResource

+	 */

+	private static void adjustNsAndPrefix(Resource metamodel, EPackage p, boolean useUriForResource) {

+		if (p.getNsURI() == null || p.getNsURI().trim().length() == 0) {

+			if (p.getESuperPackage() == null) {

+				p.setNsURI(p.getName());

+			}

+			else {

+				p.setNsURI(p.getESuperPackage().getNsURI() + "/" + p.getName());

+			}

+		}

+		

+		if (p.getNsPrefix() == null || p.getNsPrefix().trim().length() == 0) {

+			if (p.getESuperPackage() != null) {

+				if (p.getESuperPackage().getNsPrefix()!=null) {

+					p.setNsPrefix(p.getESuperPackage().getNsPrefix() + "." + p.getName());

+				}

+				else {

+					p.setNsPrefix(p.getName());

+				}

+			}

+		}

+		

+		if (p.getNsPrefix() == null) p.setNsPrefix(p.getName());

+		if (useUriForResource)

+			metamodel.setURI(URI.createURI(p.getNsURI()));

+	}

 }

diff --git a/plugins/org.eclipse.epsilon.emc.spreadsheets.dependencies/META-INF/MANIFEST.MF b/plugins/org.eclipse.epsilon.emc.spreadsheets.dependencies/META-INF/MANIFEST.MF
index ed165c9..bbba7b0 100644
--- a/plugins/org.eclipse.epsilon.emc.spreadsheets.dependencies/META-INF/MANIFEST.MF
+++ b/plugins/org.eclipse.epsilon.emc.spreadsheets.dependencies/META-INF/MANIFEST.MF
@@ -7,4 +7,4 @@
 Bundle-Vendor: Eclipse Modeling Project
 Require-Bundle: org.apache.commons.lang3;bundle-version="3.1.0";visibility:=reexport,
  org.apache.commons.collections;bundle-version="3.2.2";visibility:=reexport,
- org.slf4j.api;bundle-version="1.7.2";visibility:=reexport
+ org.slf4j.api;bundle-version="1.7.2"
diff --git a/plugins/org.eclipse.epsilon.emc.spreadsheets.excel.dt/META-INF/MANIFEST.MF b/plugins/org.eclipse.epsilon.emc.spreadsheets.excel.dt/META-INF/MANIFEST.MF
index 67e1c45..cd4305c 100644
--- a/plugins/org.eclipse.epsilon.emc.spreadsheets.excel.dt/META-INF/MANIFEST.MF
+++ b/plugins/org.eclipse.epsilon.emc.spreadsheets.excel.dt/META-INF/MANIFEST.MF
@@ -11,3 +11,4 @@
 Require-Bundle: org.eclipse.epsilon.common.dt;bundle-version="1.3.0",
  org.eclipse.epsilon.emc.spreadsheets.excel;bundle-version="1.3.0",
  org.eclipse.equinox.security;bundle-version="1.2.0"
+Import-Package: org.slf4j;version="1.7.2"
diff --git a/plugins/org.eclipse.epsilon.emc.spreadsheets.excel/META-INF/MANIFEST.MF b/plugins/org.eclipse.epsilon.emc.spreadsheets.excel/META-INF/MANIFEST.MF
index dbe5da7..a4fc386 100644
--- a/plugins/org.eclipse.epsilon.emc.spreadsheets.excel/META-INF/MANIFEST.MF
+++ b/plugins/org.eclipse.epsilon.emc.spreadsheets.excel/META-INF/MANIFEST.MF
@@ -9,3 +9,4 @@
 Require-Bundle: org.eclipse.epsilon.eol.engine;bundle-version="1.3.0",
  org.eclipse.epsilon.emc.spreadsheets;bundle-version="1.3.0";visibility:=reexport,
  org.eclipse.epsilon.emc.spreadsheets.excel.dependencies;bundle-version="1.3.0";visibility:=reexport
+Import-Package: org.slf4j;version="1.7.2"
diff --git a/plugins/org.eclipse.epsilon.emc.spreadsheets.google.dt/META-INF/MANIFEST.MF b/plugins/org.eclipse.epsilon.emc.spreadsheets.google.dt/META-INF/MANIFEST.MF
index 440e6fd..9d65ead 100644
--- a/plugins/org.eclipse.epsilon.emc.spreadsheets.google.dt/META-INF/MANIFEST.MF
+++ b/plugins/org.eclipse.epsilon.emc.spreadsheets.google.dt/META-INF/MANIFEST.MF
@@ -11,3 +11,4 @@
 Require-Bundle: org.eclipse.epsilon.common.dt;bundle-version="1.3.0",
  org.eclipse.epsilon.emc.spreadsheets.google;bundle-version="1.3.0",
  org.eclipse.equinox.security;bundle-version="1.2.0"
+Import-Package: org.slf4j;version="1.7.2"
diff --git a/plugins/org.eclipse.epsilon.emc.spreadsheets.google/META-INF/MANIFEST.MF b/plugins/org.eclipse.epsilon.emc.spreadsheets.google/META-INF/MANIFEST.MF
index 9c4f35a..ad270b6 100644
--- a/plugins/org.eclipse.epsilon.emc.spreadsheets.google/META-INF/MANIFEST.MF
+++ b/plugins/org.eclipse.epsilon.emc.spreadsheets.google/META-INF/MANIFEST.MF
@@ -9,3 +9,4 @@
 Require-Bundle: org.eclipse.epsilon.eol.engine;bundle-version="1.3.0",
  org.eclipse.epsilon.emc.spreadsheets;bundle-version="1.3.0";visibility:=reexport,
  org.eclipse.epsilon.emc.spreadsheets.google.dependencies;bundle-version="1.3.0";visibility:=reexport
+Import-Package: org.slf4j;version="1.7.2"
diff --git a/plugins/org.eclipse.epsilon.emc.spreadsheets/META-INF/MANIFEST.MF b/plugins/org.eclipse.epsilon.emc.spreadsheets/META-INF/MANIFEST.MF
index 1d183b5..dbed04f 100644
--- a/plugins/org.eclipse.epsilon.emc.spreadsheets/META-INF/MANIFEST.MF
+++ b/plugins/org.eclipse.epsilon.emc.spreadsheets/META-INF/MANIFEST.MF
@@ -8,3 +8,4 @@
 Bundle-RequiredExecutionEnvironment: JavaSE-1.8
 Require-Bundle: org.eclipse.epsilon.eol.engine;bundle-version="1.3.0",
  org.eclipse.epsilon.emc.spreadsheets.dependencies;bundle-version="1.3.0";visibility:=reexport
+Import-Package: org.slf4j;version="1.7.2"
diff --git a/plugins/org.eclipse.epsilon.emf.dt/plugin.xml b/plugins/org.eclipse.epsilon.emf.dt/plugin.xml
index ef57675..75d0699 100644
--- a/plugins/org.eclipse.epsilon.emf.dt/plugin.xml
+++ b/plugins/org.eclipse.epsilon.emf.dt/plugin.xml
@@ -33,6 +33,17 @@
       <objectContribution

             adaptable="false"

             id="org.eclipse.epsilon.perspective.popups.ecore"

+            nameFilter="*.xcore"

+            objectClass="org.eclipse.core.resources.IFile">

+         <action

+               class="org.eclipse.epsilon.emf.dt.RegisterMetamodelAction"

+               icon="icons/register.gif"

+               id="org.eclipse.epsilon.emf.dt.RegisterMetamodelAction"

+               label="Register EPackages"/>

+      </objectContribution>

+      <objectContribution

+            adaptable="false"

+            id="org.eclipse.epsilon.perspective.popups.ecore"

             nameFilter="*.xsd"

             objectClass="org.eclipse.core.resources.IFile">

          <action

diff --git a/plugins/org.eclipse.epsilon.emf.dt/src/org/eclipse/epsilon/emf/dt/EmfRegistryManager.java b/plugins/org.eclipse.epsilon.emf.dt/src/org/eclipse/epsilon/emf/dt/EmfRegistryManager.java
index a1d87fc..ef65b3c 100644
--- a/plugins/org.eclipse.epsilon.emf.dt/src/org/eclipse/epsilon/emf/dt/EmfRegistryManager.java
+++ b/plugins/org.eclipse.epsilon.emf.dt/src/org/eclipse/epsilon/emf/dt/EmfRegistryManager.java
@@ -32,7 +32,7 @@
 

 	protected static EmfRegistryManager instance = null;

 	protected HashMap<String, List<EPackage>> managedMetamodels = new HashMap<String, List<EPackage>>();

-	

+

 	public static EmfRegistryManager getInstance() {

 		if (instance == null) {

 			instance = new EmfRegistryManager();

@@ -70,15 +70,12 @@
 						// only interested in changed resources (not added or

 						// removed)

 						/*

-						 * if (delta.getKind() != IResourceDelta.CHANGED) return

-						 * true; //only interested in content changes if

-						 * ((delta.getFlags() & IResourceDelta.CONTENT) == 0)

-						 * return true; IResource resource =

-						 * delta.getResource(); //only interested in files with

-						 * the "txt" extension if (resource.getType() ==

-						 * IResource.FILE &&

-						 * "txt".equalsIgnoreCase(resource.getFileExtension())) {

-						 * changed.add(resource); }

+						 * if (delta.getKind() != IResourceDelta.CHANGED) return true; //only interested

+						 * in content changes if ((delta.getFlags() & IResourceDelta.CONTENT) == 0)

+						 * return true; IResource resource = delta.getResource(); //only interested in

+						 * files with the "txt" extension if (resource.getType() == IResource.FILE &&

+						 * "txt".equalsIgnoreCase(resource.getFileExtension())) { changed.add(resource);

+						 * }

 						 */

 						changed.add(delta);

 						return true;

@@ -94,7 +91,7 @@
 					return;

 

 				for (IResourceDelta delta : changed) {

-					

+

 					String metamodel = delta.getResource().getFullPath().toOSString();

 					List<String> metamodels = getMetamodels();

 					if (metamodels.contains(metamodel)) {

@@ -107,12 +104,10 @@
 									LogUtil.log(e);

 								}

 							}

-						}

-						else {

+						} else {

 							try {

 								registerMetamodel(metamodel);

-							}

-							catch (Exception ex) {

+							} catch (Exception ex) {

 								ex.printStackTrace();

 							}

 						}

@@ -123,7 +118,7 @@
 		};

 		workspace.addResourceChangeListener(listener);

 	}

-	

+

 	public void addMetamodel(String fileName) throws Exception {

 		registerMetamodel(fileName);

 		List<String> metamodels = getMetamodels();

@@ -132,41 +127,45 @@
 			setMetamodels(metamodels);

 		}

 	}

-	

-	private void registerMetamodel(String fileName) throws Exception{

-		List<EPackage> ePackages = EmfUtil.register(URI.createPlatformResourceURI(fileName, true), EPackage.Registry.INSTANCE);

+

+	private void registerMetamodel(String fileName) throws Exception {

+		List<EPackage> ePackages;

+		if (fileName.endsWith(".ecore")) {

+			ePackages = EmfUtil.register(URI.createPlatformResourceURI(fileName, true), EPackage.Registry.INSTANCE);

+		} else { // Must be xcore

+			ePackages = EmfUtil.registerXcore(URI.createPlatformResourceURI(fileName, true), EPackage.Registry.INSTANCE, false);

+		}

 		managedMetamodels.put(fileName, ePackages);

 	}

-	

+

 	public void removeMetamodel(String fileName) {

-		

+

 		List<EPackage> ePackages = managedMetamodels.get(fileName);

-		

-		if (ePackages == null) return;

-		

+

+		if (ePackages == null)

+			return;

+

 		for (EPackage ePackage : ePackages) {

 			EPackage.Registry.INSTANCE.remove(ePackage.getNsURI());

 		}

-		

+

 		managedMetamodels.remove(fileName);

 		List<String> metamodels = getMetamodels();

 		metamodels.remove(fileName);

 		setMetamodels(metamodels);

-		

+

 	}

-	

+

 	public List<String> getMetamodels() {

 		List<String> metamodels = new ArrayList<String>();

-		String concat = EmfUtilPlugin.getDefault().getPreferenceStore()

-				.getString("metamodels");

+		String concat = EmfUtilPlugin.getDefault().getPreferenceStore().getString("metamodels");

 		StringTokenizer st = new StringTokenizer(concat, ";");

 		while (st.hasMoreTokens()) {

 			metamodels.add(st.nextToken());

 		}

 		return metamodels;

 	}

-	

-	

+

 	private void setMetamodels(List<String> metamodels) {

 		StringBuffer sb = new StringBuffer();

 		ListIterator<String> li = metamodels.listIterator();

@@ -176,7 +175,6 @@
 				sb.append(";");

 			}

 		}

-		EmfUtilPlugin.getDefault().getPreferenceStore().setValue("metamodels",

-				sb.toString());

+		EmfUtilPlugin.getDefault().getPreferenceStore().setValue("metamodels", sb.toString());

 	}

 }

diff --git a/plugins/org.eclipse.epsilon.targetplatform/org.eclipse.epsilon.targetplatform.target b/plugins/org.eclipse.epsilon.targetplatform/org.eclipse.epsilon.targetplatform.target
index c71d912..a70c447 100644
--- a/plugins/org.eclipse.epsilon.targetplatform/org.eclipse.epsilon.targetplatform.target
+++ b/plugins/org.eclipse.epsilon.targetplatform/org.eclipse.epsilon.targetplatform.target
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<?pde version="3.8"?><target name="Epsilon Target Platform" sequenceNumber="79">
+<?pde version="3.8"?><target name="Epsilon Target Platform" sequenceNumber="89">
 <locations>
 <location includeAllPlatforms="false" includeConfigurePhase="true" includeMode="planner" includeSource="false" type="InstallableUnit">
 <unit id="org.eclipse.sirius.runtime.feature.group" version="4.1.3.201701271256"/>
@@ -24,6 +24,7 @@
 <location includeAllPlatforms="false" includeConfigurePhase="true" includeMode="planner" includeSource="false" type="InstallableUnit">
 <unit id="org.eclipse.emf.compare.ide.ui.feature.group" version="3.2.1.201608311750"/>
 <unit id="org.eclipse.emf.compare.uml2.feature.group" version="3.2.1.201608311750"/>
+<unit id="org.eclipse.emf.ecore.xcore.sdk.feature.group" version="1.4.0.v20160526-0606"/>
 <unit id="org.eclipse.emf.sdk.feature.group" version="2.12.0.v20160526-0356"/>
 <unit id="org.eclipse.emf.transaction.sdk.feature.group" version="1.10.0.201606071900"/>
 <unit id="org.eclipse.emf.validation.sdk.feature.group" version="1.10.0.201606071713"/>
@@ -40,30 +41,30 @@
 <unit id="org.eclipse.ocl.all.sdk.feature.group" version="5.2.0.v20160523-1914"/>
 <unit id="org.eclipse.uml2.sdk.feature.group" version="5.2.2.v20161114-0827"/>
 <unit id="org.eclipse.xsd.sdk.feature.group" version="2.12.0.v20160526-0356"/>
+<unit id="org.eclipse.xtext.sdk.feature.group" version="2.10.0.v201605250459"/>
 <repository location="http://download.eclipse.org/releases/neon/"/>
 </location>
 <location includeAllPlatforms="false" includeConfigurePhase="true" includeMode="planner" includeSource="false" type="InstallableUnit">
-<unit id="org.hamcrest.library.source" version="1.3.0.v201505072020"/>
-<unit id="org.slf4j.log4j" version="1.7.2.v20130115-1340"/>
-<unit id="org.dom4j" version="1.6.1.v201312101416"/>
-<unit id="org.apache.log4j.source" version="1.2.15.v201012070815"/>
-<unit id="org.slf4j.log4j.source" version="1.7.2.v20130115-1340"/>
+<unit id="com.google.guava" version="18.0.0.v20161115-1643"/>
+<unit id="com.google.guava.source" version="18.0.0.v20161115-1643"/>
 <unit id="org.apache.commons.collections" version="3.2.2.v201511171945"/>
-<unit id="org.slf4j.impl.log4j12.source" version="1.7.2.v20131105-2200"/>
-<unit id="com.google.guava" version="21.0.0.v20170206-1425"/>
-<unit id="org.apache.log4j" version="1.2.15.v201012070815"/>
-<unit id="org.slf4j.impl.log4j12" version="1.7.2.v20131105-2200"/>
-<unit id="org.dom4j.source" version="1.6.1.v201312101416"/>
-<unit id="org.slf4j.api" version="1.7.10.v20170224-1220"/>
-<unit id="org.hamcrest.core.source" version="1.3.0.v201303031735"/>
-<unit id="org.apache.commons.lang3" version="3.1.0.v201403281430"/>
-<unit id="org.hamcrest.core" version="1.3.0.v201303031735"/>
-<unit id="org.apache.commons.lang3.source" version="3.1.0.v201403281430"/>
-<unit id="org.apache.commons.math3" version="3.5.0.v20160301-1110"/>
-<unit id="org.slf4j.api.source" version="1.7.10.v20170224-1220"/>
 <unit id="org.apache.commons.collections.source" version="3.2.2.v201511171945"/>
+<unit id="org.apache.commons.lang3" version="3.1.0.v201403281430"/>
+<unit id="org.apache.commons.lang3.source" version="3.1.0.v201403281430"/>
+<unit id="org.apache.commons.logging" version="1.1.1.v201101211721"/>
+<unit id="org.apache.commons.logging.source" version="1.1.1.v201101211721"/>
+<unit id="org.apache.commons.math3" version="3.5.0.v20160301-1110"/>
 <unit id="org.apache.commons.math3.source" version="3.5.0.v20160301-1110"/>
+<unit id="org.dom4j" version="1.6.1.v201312101416"/>
+<unit id="org.dom4j.source" version="1.6.1.v201312101416"/>
+<unit id="org.hamcrest.core" version="1.3.0.v201303031735"/>
+<unit id="org.hamcrest.core.source" version="1.3.0.v201303031735"/>
 <unit id="org.hamcrest.library" version="1.3.0.v201505072020"/>
+<unit id="org.hamcrest.library.source" version="1.3.0.v201505072020"/>
+<unit id="org.slf4j.api" version="1.7.10.v20170224-1220"/>
+<unit id="org.slf4j.api.source" version="1.7.10.v20170224-1220"/>
+<unit id="org.slf4j.impl.log4j12" version="1.7.2.v20131105-2200"/>
+<unit id="org.slf4j.impl.log4j12.source" version="1.7.2.v20131105-2200"/>
 <repository location="http://download.eclipse.org/tools/orbit/downloads/drops/R20170307180635/repository"/>
 </location>
 </locations>
diff --git a/standalone/eutils-maven-plugin/src/main/java/org/eclipse/epsilon/maven/EpsilonStandaloneDeployMojo.java b/standalone/eutils-maven-plugin/src/main/java/org/eclipse/epsilon/maven/EpsilonStandaloneDeployMojo.java
index 7d1c101..a937da9 100644
--- a/standalone/eutils-maven-plugin/src/main/java/org/eclipse/epsilon/maven/EpsilonStandaloneDeployMojo.java
+++ b/standalone/eutils-maven-plugin/src/main/java/org/eclipse/epsilon/maven/EpsilonStandaloneDeployMojo.java
@@ -50,7 +50,7 @@
  *
  * <code>
  *   mvn org.eclipse.epsilon:eutils-maven-plugin:deploy \
- *     -Durl=https://oss.sonatype.org/service/local/staging/deploy/maven2
+ *     -Ddeploy.url=https://oss.sonatype.org/service/local/staging/deploy/maven2
  * </code>
  */
 @Mojo(name = "deploy", defaultPhase = LifecyclePhase.NONE)
diff --git a/standalone/org.eclipse.epsilon.standalone/META-INF/MANIFEST.MF b/standalone/org.eclipse.epsilon.standalone/META-INF/MANIFEST.MF
index a77fd5a..b488707 100644
--- a/standalone/org.eclipse.epsilon.standalone/META-INF/MANIFEST.MF
+++ b/standalone/org.eclipse.epsilon.standalone/META-INF/MANIFEST.MF
@@ -8,6 +8,14 @@
  org.eclipse.emf.common,
  org.eclipse.emf.ecore,
  org.eclipse.emf.ecore.xmi,
+ org.eclipse.emf.ecore.xcore;bundle-version="1.4.0",
+ org.eclipse.xtext;bundle-version="2.10.0",
+ org.eclipse.xtext.xbase;bundle-version="2.10.0",
+ org.eclipse.emf.codegen;bundle-version="2.11.0",
+ org.eclipse.emf.codegen.ecore;bundle-version="2.11.0",
+ org.eclipse.emf.codegen.ecore.xtext;bundle-version="1.2.0",
+ org.eclipse.emf.mwe2.runtime;bundle-version="2.9.0",
+ org.eclipse.core.runtime;bundle-version="3.12.0",
  org.eclipse.xsd,
  org.eclipse.uml2.uml,
  org.eclipse.uml2.common,
diff --git a/standalone/org.eclipse.epsilon.standalone/assembly/core.pom b/standalone/org.eclipse.epsilon.standalone/assembly/core.pom
index e126457..88d971d 100644
--- a/standalone/org.eclipse.epsilon.standalone/assembly/core.pom
+++ b/standalone/org.eclipse.epsilon.standalone/assembly/core.pom
@@ -2,7 +2,8 @@
   <modelVersion>4.0.0</modelVersion>
   <groupId>org.eclipse.epsilon</groupId>
   <artifactId>epsilon-core</artifactId>
-  <version>1.5.0-SNAPSHOT</version>  <name>Epsilon jar component</name>
+  <version>1.5.0-SNAPSHOT</version>
+  <name>Epsilon jar component</name>
   <description>
                		The execution engines of all Epsilon languages,
                		as well as the plain XML and CSV drivers.
diff --git a/standalone/org.eclipse.epsilon.standalone/assembly/emf-deps.xml b/standalone/org.eclipse.epsilon.standalone/assembly/emf-deps.xml
index a48dcc3..98f0ea4 100644
--- a/standalone/org.eclipse.epsilon.standalone/assembly/emf-deps.xml
+++ b/standalone/org.eclipse.epsilon.standalone/assembly/emf-deps.xml
@@ -14,6 +14,15 @@
         <include>org.eclipse.emf.common*.jar</include>
         <include>org.eclipse.emf.ecore*.jar</include>
         <include>org.eclipse.emf.ecore.xmi*.jar</include>
+        <include>org.eclipse.emf.ecore.xcore*.jar</include>
+        <include>org.eclipse.xtext*.jar</include>
+        <include>org.eclipse.xtext.xbase*.jar</include>
+        <include>org.eclipse.xtext.ecore*.jar</include>
+        <include>org.eclipse.emf.mwe2.runtime*.jar</include>
+        <include>org.eclipse.emf.codegen*.jar</include>
+        <include>org.eclipse.emf.codegen.ecore*.jar</include>
+        <include>org.eclipse.emf.codegen.ecore.xtext*.jar</include>
+        <include>org.eclipse.core.runtime*.jar</include>
         <include>org.eclipse.xsd*.jar</include>
       </includes>
     </fileSet>
diff --git a/standalone/org.eclipse.epsilon.standalone/assembly/emf.pom b/standalone/org.eclipse.epsilon.standalone/assembly/emf.pom
index 526720f..5781544 100644
--- a/standalone/org.eclipse.epsilon.standalone/assembly/emf.pom
+++ b/standalone/org.eclipse.epsilon.standalone/assembly/emf.pom
@@ -2,7 +2,26 @@
   <modelVersion>4.0.0</modelVersion>
   <groupId>org.eclipse.epsilon</groupId>
   <artifactId>epsilon-emf</artifactId>
-  <version>1.5.0-SNAPSHOT</version>  <dependencies>
+  <version>1.5.0-SNAPSHOT</version>
+  <repositories>
+    <repository>
+      <snapshots><enabled>false</enabled></snapshots>
+      <releases><enabled>true</enabled></releases>
+      <id>bintray-epsilonlabs-epsilon-standalone</id>
+      <name>epsilon-bintray</name>
+      <url>https://dl.bintray.com/epsilonlabs/epsilon-standalone</url>
+    </repository>
+  </repositories>
+  <pluginRepositories>    
+   <pluginRepository>
+      <snapshots><enabled>false</enabled></snapshots>
+      <releases><enabled>true</enabled></releases>
+      <id>bintray-epsilonlabs-epsilon-standalone</id>
+      <name>epsilon-bintray-plugins</name>
+      <url>https://dl.bintray.com/epsilonlabs/epsilon-standalone</url>
+    </pluginRepository>
+  </pluginRepositories>
+  <dependencies>
     <dependency>
       <groupId>org.eclipse.epsilon</groupId>
       <artifactId>epsilon-core</artifactId>
@@ -11,22 +30,67 @@
    <dependency>
       <groupId>org.eclipse.emf</groupId>
       <artifactId>org.eclipse.emf.common</artifactId>
-      <version>2.11.0-v20150805-0538</version>
+      <version>2.12.0</version>
    </dependency>
    <dependency>
       <groupId>org.eclipse.emf</groupId>
       <artifactId>org.eclipse.emf.ecore</artifactId>
-      <version>2.11.1-v20150805-0538</version>
+      <version>2.12.0</version>
    </dependency>
    <dependency>
       <groupId>org.eclipse.emf</groupId>
       <artifactId>org.eclipse.emf.ecore.xmi</artifactId>
-      <version>2.11.1-v20150805-0538</version>
+      <version>2.12.0</version>
+   </dependency>
+   <dependency>
+      <groupId>org.eclipse.emf</groupId>
+      <artifactId>org.eclipse.emf.ecore.xcore</artifactId>
+      <version>1.4.0</version>
+   </dependency>
+   <dependency>
+      <groupId>org.eclipse.xtext</groupId>
+      <artifactId>org.eclipse.xtext</artifactId>
+      <version>2.10.0</version>
+   </dependency>
+   <dependency>
+      <groupId>org.eclipse.xtext</groupId>
+      <artifactId>org.eclipse.xtext.xbase</artifactId>
+      <version>2.10.0</version>
+   </dependency>
+   <dependency>
+      <groupId>org.eclipse.xtext</groupId>
+      <artifactId>org.eclipse.xtext.ecore</artifactId>
+      <version>2.10.0</version>
+   </dependency>
+   <dependency>
+      <groupId>org.eclipse.emf</groupId>
+      <artifactId>org.eclipse.emf.mwe2.runtime</artifactId>
+      <version>2.9.1.201705291010</version>
+   </dependency>
+   <dependency>
+      <groupId>org.eclipse.emf</groupId>
+      <artifactId>org.eclipse.emf.codegen</artifactId>
+      <version>2.11.0-v20150806-0404</version>
+   </dependency>
+   <dependency>
+      <groupId>org.eclipse.emf</groupId>
+      <artifactId>org.eclipse.emf.codegen.ecore</artifactId>
+      <version>2.11.0</version>
+   </dependency>
+   <dependency>
+      <groupId>org.eclipse.emf</groupId>
+      <artifactId>org.eclipse.emf.codegen.ecore.xtext</artifactId>
+      <version>1.2.0</version>
+   </dependency>
+   <dependency>
+      <groupId>org.eclipse.platform</groupId>
+      <artifactId>org.eclipse.core.runtime</artifactId>
+      <version>3.12.0</version>
    </dependency>
    <dependency>
       <groupId>org.eclipse.xsd</groupId>
       <artifactId>org.eclipse.xsd</artifactId>
-      <version>2.11.0-v20150806-0404</version>
+      <version>2.12.0</version>
    </dependency>
   </dependencies>
   <name>Epsilon jar component</name>
diff --git a/standalone/org.eclipse.epsilon.standalone/assembly/graphml.pom b/standalone/org.eclipse.epsilon.standalone/assembly/graphml.pom
index 2d0e1bc..8137766 100644
--- a/standalone/org.eclipse.epsilon.standalone/assembly/graphml.pom
+++ b/standalone/org.eclipse.epsilon.standalone/assembly/graphml.pom
@@ -2,7 +2,8 @@
   <modelVersion>4.0.0</modelVersion>
   <groupId>org.eclipse.epsilon</groupId>
   <artifactId>epsilon-graphml</artifactId>
-  <version>1.5.0-SNAPSHOT</version>  <dependencies>
+  <version>1.5.0-SNAPSHOT</version>
+  <dependencies>
     <dependency>
       <groupId>org.eclipse.epsilon</groupId>
       <artifactId>epsilon-emf</artifactId>
diff --git a/standalone/org.eclipse.epsilon.standalone/assembly/hutn.pom b/standalone/org.eclipse.epsilon.standalone/assembly/hutn.pom
index 6c523a6..140284f 100644
--- a/standalone/org.eclipse.epsilon.standalone/assembly/hutn.pom
+++ b/standalone/org.eclipse.epsilon.standalone/assembly/hutn.pom
@@ -2,7 +2,8 @@
   <modelVersion>4.0.0</modelVersion>
   <groupId>org.eclipse.epsilon</groupId>
   <artifactId>epsilon-hutn</artifactId>
-  <version>1.5.0-SNAPSHOT</version>  <dependencies>
+  <version>1.5.0-SNAPSHOT</version>
+  <dependencies>
     <dependency>
       <groupId>org.eclipse.epsilon</groupId>
       <artifactId>epsilon-emf</artifactId>
diff --git a/standalone/org.eclipse.epsilon.standalone/assembly/simulink.pom b/standalone/org.eclipse.epsilon.standalone/assembly/simulink.pom
index 1408537..16a1485 100644
--- a/standalone/org.eclipse.epsilon.standalone/assembly/simulink.pom
+++ b/standalone/org.eclipse.epsilon.standalone/assembly/simulink.pom
@@ -2,7 +2,8 @@
   <modelVersion>4.0.0</modelVersion>
   <groupId>org.eclipse.epsilon</groupId>
   <artifactId>epsilon-simulink</artifactId>
-  <version>1.5.0-SNAPSHOT</version>  <dependencies>
+  <version>1.5.0-SNAPSHOT</version>
+  <dependencies>
     <dependency>
       <groupId>org.eclipse.epsilon</groupId>
       <artifactId>epsilon-core</artifactId>
diff --git a/standalone/org.eclipse.epsilon.standalone/assembly/spreadsheets-deps.xml b/standalone/org.eclipse.epsilon.standalone/assembly/spreadsheets-deps.xml
index 4129652..dac5db1 100644
--- a/standalone/org.eclipse.epsilon.standalone/assembly/spreadsheets-deps.xml
+++ b/standalone/org.eclipse.epsilon.standalone/assembly/spreadsheets-deps.xml
@@ -11,9 +11,6 @@
       <directory>target/dependency</directory>
       <outputDirectory></outputDirectory>
       <includes>
-        <include>org.apache.commons.collections_3.2.1*.jar</include>
-        <include>org.slf4j.api_1.7.2*.jar</include>
-        <include>org.apache.commons.lang3_3.1*.jar</include>
         <include>org.apache.poi_3.10.1*.jar</include>
         <include>org.apache.poi.ooxml_3.10.1*.jar</include>
         <include>org.apache.poi.ooxml.schemas_3.10.1*.jar</include>
diff --git a/standalone/org.eclipse.epsilon.standalone/assembly/spreadsheets.pom b/standalone/org.eclipse.epsilon.standalone/assembly/spreadsheets.pom
index 7343523..c41616f 100644
--- a/standalone/org.eclipse.epsilon.standalone/assembly/spreadsheets.pom
+++ b/standalone/org.eclipse.epsilon.standalone/assembly/spreadsheets.pom
@@ -2,28 +2,14 @@
   <modelVersion>4.0.0</modelVersion>
   <groupId>org.eclipse.epsilon</groupId>
   <artifactId>epsilon-spreadsheets</artifactId>
-  <version>1.5.0-SNAPSHOT</version>  <dependencies>
+  <version>1.5.0-SNAPSHOT</version>
+  <dependencies>
     <dependency>
       <groupId>org.eclipse.epsilon</groupId>
       <artifactId>epsilon-core</artifactId>
       <version>1.5.0-SNAPSHOT</version>
     </dependency>
    <dependency>
-      <groupId>commons-collections</groupId>
-      <artifactId>commons-collections</artifactId>
-      <version>3.2.1</version>
-   </dependency>
-   <dependency>
-      <groupId>org.slf4j</groupId>
-      <artifactId>slf4j-api</artifactId>
-      <version>1.7.2</version>
-   </dependency>
-   <dependency>
-      <groupId>org.apache.commons</groupId>
-      <artifactId>commons-lang3</artifactId>
-      <version>3.1</version>
-   </dependency>
-   <dependency>
       <groupId>org.apache.poi</groupId>
       <artifactId>poi</artifactId>
       <version>3.10.1</version>
diff --git a/standalone/org.eclipse.epsilon.standalone/assembly/uml.pom b/standalone/org.eclipse.epsilon.standalone/assembly/uml.pom
index ed8eca7..52441e4 100644
--- a/standalone/org.eclipse.epsilon.standalone/assembly/uml.pom
+++ b/standalone/org.eclipse.epsilon.standalone/assembly/uml.pom
@@ -2,7 +2,8 @@
   <modelVersion>4.0.0</modelVersion>
   <groupId>org.eclipse.epsilon</groupId>
   <artifactId>epsilon-uml</artifactId>
-  <version>1.5.0-SNAPSHOT</version>  <dependencies>
+  <version>1.5.0-SNAPSHOT</version>
+  <dependencies>
     <dependency>
       <groupId>org.eclipse.epsilon</groupId>
       <artifactId>epsilon-emf</artifactId>
diff --git a/standalone/org.eclipse.epsilon.standalone/assembly/workflow-emf.pom b/standalone/org.eclipse.epsilon.standalone/assembly/workflow-emf.pom
index 214b580..1cd4026 100644
--- a/standalone/org.eclipse.epsilon.standalone/assembly/workflow-emf.pom
+++ b/standalone/org.eclipse.epsilon.standalone/assembly/workflow-emf.pom
@@ -2,7 +2,8 @@
   <modelVersion>4.0.0</modelVersion>
   <groupId>org.eclipse.epsilon</groupId>
   <artifactId>epsilon-workflow-emf</artifactId>
-  <version>1.5.0-SNAPSHOT</version>  <dependencies>
+  <version>1.5.0-SNAPSHOT</version>
+  <dependencies>
     <dependency>
       <groupId>org.eclipse.epsilon</groupId>
       <artifactId>epsilon-workflow</artifactId>
diff --git a/standalone/org.eclipse.epsilon.standalone/assembly/workflow.pom b/standalone/org.eclipse.epsilon.standalone/assembly/workflow.pom
index a35a0f2..10e7e61 100644
--- a/standalone/org.eclipse.epsilon.standalone/assembly/workflow.pom
+++ b/standalone/org.eclipse.epsilon.standalone/assembly/workflow.pom
@@ -2,7 +2,8 @@
   <modelVersion>4.0.0</modelVersion>
   <groupId>org.eclipse.epsilon</groupId>
   <artifactId>epsilon-workflow</artifactId>
-  <version>1.5.0-SNAPSHOT</version>  <dependencies>
+  <version>1.5.0-SNAPSHOT</version>
+  <dependencies>
     <dependency>
       <groupId>org.eclipse.epsilon</groupId>
       <artifactId>epsilon-core</artifactId>
diff --git a/standalone/org.eclipse.epsilon.standalone/build-javadoc-jar.sh b/standalone/org.eclipse.epsilon.standalone/build-javadoc-jar.sh
index 187ae1d..38ee713 100755
--- a/standalone/org.eclipse.epsilon.standalone/build-javadoc-jar.sh
+++ b/standalone/org.eclipse.epsilon.standalone/build-javadoc-jar.sh
@@ -16,6 +16,6 @@
     pushd tmpjavadoc
     TARGET="../${srcjar%-sources.jar}-javadoc.jar"
     rm -f "$TARGET"
-    find -mindepth 1 -type d -print0 | xargs -0 zip -r "$TARGET"
+    find . -mindepth 1 -type d -print0 | xargs -0 zip -r "$TARGET"
     popd
 done
diff --git a/standalone/org.eclipse.epsilon.standalone/jarmodel.xml b/standalone/org.eclipse.epsilon.standalone/jarmodel.xml
index b82e4dd..732cd3b 100644
--- a/standalone/org.eclipse.epsilon.standalone/jarmodel.xml
+++ b/standalone/org.eclipse.epsilon.standalone/jarmodel.xml
@@ -39,19 +39,61 @@
 		<plugin name="org.eclipse.emf.common"
 			groupId="org.eclipse.emf"
 			artifactId="org.eclipse.emf.common"
-			version="2.11.0-v20150805-0538" />
+			version="2.12.0" />
 		<plugin name="org.eclipse.emf.ecore"
 			groupId="org.eclipse.emf"
 			artifactId="org.eclipse.emf.ecore"
-			version="2.11.1-v20150805-0538"	/>
+			version="2.12.0"	/>
 		<plugin	name="org.eclipse.emf.ecore.xmi"
 			groupId="org.eclipse.emf"
 			artifactId="org.eclipse.emf.ecore.xmi"
-			version="2.11.1-v20150805-0538" />
+			version="2.12.0" />
+		<plugin name="org.eclipse.emf.ecore.xcore"
+            groupId="org.eclipse.emf"
+            artifactId="org.eclipse.emf.ecore.xcore"
+            version="1.4.0" />
+		<plugin name="org.eclipse.xtext"
+            groupId="org.eclipse.xtext"
+            artifactId="org.eclipse.xtext"
+            version="2.10.0" />
+        <plugin name="org.eclipse.xtext.xbase"
+            groupId="org.eclipse.xtext"
+            artifactId="org.eclipse.xtext.xbase"
+            version="2.10.0" />
+        <plugin name="org.eclipse.xtext.ecore"
+            groupId="org.eclipse.xtext"
+            artifactId="org.eclipse.xtext.ecore"
+            version="2.10.0" />
+        <plugin name="org.eclipse.emf.mwe2.runtime"
+            groupId="org.eclipse.emf"
+            artifactId="org.eclipse.emf.mwe2.runtime"
+            version="2.9.1.201705291010" />
+        <plugin name="org.eclipse.emf.codegen"
+            groupId="org.eclipse.emf"
+            artifactId="org.eclipse.emf.codegen"
+            version="2.11.0-v20150806-0404" />
+        <plugin name="org.eclipse.emf.codegen.ecore"
+            groupId="org.eclipse.emf"
+            artifactId="org.eclipse.emf.codegen.ecore"
+            version="2.11.0" />
+        <plugin name="org.eclipse.emf.codegen.ecore.xtext"
+            groupId="org.eclipse.emf"
+            artifactId="org.eclipse.emf.codegen.ecore.xtext"
+            version="1.2.0" />
+        <plugin name="org.eclipse.core.runtime"
+            groupId="org.eclipse.platform"
+            artifactId="org.eclipse.core.runtime"
+            version="3.12.0" />
 		<plugin name="org.eclipse.xsd"
   			groupId="org.eclipse.xsd"
   			artifactId="org.eclipse.xsd"
-  			version="2.11.0-v20150806-0404" />
+  			version="2.12.0" />
+  		<!-- Additional repositories needed -->
+  		<repository name= "epsilon-bintray"
+  		    snapshots= "false"
+  		    releases= "true"
+            id= "bintray-epsilonlabs-epsilon-standalone"
+            url= "https://dl.bintray.com/epsilonlabs/epsilon-standalone"/>
 	</jar>
 
 	<jar name="uml" requires="emf">
@@ -125,19 +167,6 @@
 		<project name="org.eclipse.epsilon.emc.spreadsheets"/>
 		<project name="org.eclipse.epsilon.emc.spreadsheets.excel"/>
 		<project name="org.eclipse.epsilon.emc.spreadsheets.google"/>
-
-		<plugin name="org.apache.commons.collections_3.2.1"
-			groupId="commons-collections"
-			artifactId="commons-collections"
-			version="3.2.1" />
-		<plugin name="org.slf4j.api_1.7.2"
-			groupId="org.slf4j"
-			artifactId="slf4j-api"
-			version="1.7.2" />
-		<plugin name="org.apache.commons.lang3_3.1"
-			groupId="org.apache.commons"
-			artifactId="commons-lang3"
-			version="3.1" />
 		<plugin name="org.apache.poi_3.10.1"
 			groupId="org.apache.poi"
 			artifactId="poi"
diff --git a/standalone/org.eclipse.epsilon.standalone/jarmodel2mvn.launch b/standalone/org.eclipse.epsilon.standalone/jarmodel2mvn.launch
index ec1b5a1..a59d05d 100644
--- a/standalone/org.eclipse.epsilon.standalone/jarmodel2mvn.launch
+++ b/standalone/org.eclipse.epsilon.standalone/jarmodel2mvn.launch
@@ -2,11 +2,13 @@
 <launchConfiguration type="org.epsilon.egl.eclipse.dt.launching.EglLaunchConfigurationDelegate">
 <booleanAttribute key="appendToFile" value="false"/>
 <listAttribute key="defaultFormatters"/>
+<intAttribute key="egxGenerateTo" value="1"/>
 <booleanAttribute key="fine_grained_profiling" value="false"/>
 <intAttribute key="generateTo" value="1"/>
 <listAttribute key="models">
 <listEntry value="name=JarModel&#10;readOnLoad=true&#10;storeOnDisposal=false&#10;aliases=&#10;uri=&#10;cached=true&#10;file=/org.eclipse.epsilon.standalone/jarmodel.xml&#10;fileBased=true&#10;type=PlainXML"/>
 </listAttribute>
+<stringAttribute key="outputDirPath" value=""/>
 <stringAttribute key="outputFilePath" value=""/>
 <listAttribute key="parameters"/>
 <booleanAttribute key="produceTrace" value="false"/>
diff --git a/standalone/org.eclipse.epsilon.standalone/jarmodel2pom.egl b/standalone/org.eclipse.epsilon.standalone/jarmodel2pom.egl
index b8ec434..f68de00 100644
--- a/standalone/org.eclipse.epsilon.standalone/jarmodel2pom.egl
+++ b/standalone/org.eclipse.epsilon.standalone/jarmodel2pom.egl
@@ -2,7 +2,35 @@
   <modelVersion>4.0.0</modelVersion>
   <groupId>org.eclipse.epsilon</groupId>
   <artifactId>[%=jar.getArtifactId()%]</artifactId>
-  <version>[%=jar.getVersion()%]</version>[%
+  <version>[%=jar.getVersion()%]</version>
+[%
+if (jar.c_repository.size() >0) {
+%]
+  <repositories>
+[% 
+    for (repo in jar.c_repository) { %]
+    <repository>
+      <snapshots><enabled>[%=repo.a_snapshots%]</enabled></snapshots>
+      <releases><enabled>[%=repo.a_releases%]</enabled></releases>
+      <id>[%=repo.a_id%]</id>
+      <name>[%=repo.a_name%]</name>
+      <url>[%=repo.a_url%]</url>
+    </repository>
+[%  }%]
+  </repositories>
+  <pluginRepositories>[% 
+    for (repo in jar.c_repository) { %]    
+   <pluginRepository>
+      <snapshots><enabled>[%=repo.a_snapshots%]</enabled></snapshots>
+      <releases><enabled>[%=repo.a_releases%]</enabled></releases>
+      <id>[%=repo.a_id%]</id>
+      <name>[%=repo.a_name%]-plugins</name>
+      <url>[%=repo.a_url%]</url>
+    </pluginRepository>
+  </pluginRepositories>
+[%
+    }
+}
 if (jar.c_plugin.size() > 0 or jar.a_requires.isDefined()) {
 %]
   <dependencies>
diff --git a/standalone/org.eclipse.epsilon.standalone/pom.xml b/standalone/org.eclipse.epsilon.standalone/pom.xml
index bac2f50..c27cf47 100644
--- a/standalone/org.eclipse.epsilon.standalone/pom.xml
+++ b/standalone/org.eclipse.epsilon.standalone/pom.xml
@@ -33,7 +33,30 @@
 	      <goal>unpack-dependencies</goal>
 	    </goals>
 	    <configuration>
-	      <includeArtifactIds>org.eclipse.emf.common,org.eclipse.emf.ecore,org.eclipse.emf.ecore.xmi,org.eclipse.xsd,org.eclipse.uml2.uml,org.eclipse.uml2.common,org.eclipse.emf.mapping.ecore2xml,org.eclipse.uml2.types,org.apache.commons.collections_3.2.1,org.apache.commons.lang3_3.1,org.apache.poi_3.10.1,org.apache.poi.ooxml_3.10.1,org.apache.poi.ooxml.schemas_3.10.1,org.apache.xmlbeans_2.6.0</includeArtifactIds>
+	      <includeArtifactIds><!-- Match MANIFEST.MF -->
+	        org.apache.ant,
+			org.eclipse.emf.common,
+			org.eclipse.emf.ecore,
+			org.eclipse.emf.ecore.xmi,
+			org.eclipse.emf.ecore.xcore,
+			org.eclipse.xtext,
+			org.eclipse.xtext.xbase,
+			org.eclipse.emf.codegen,
+			org.eclipse.emf.codegen.ecore,
+			org.eclipse.emf.codegen.ecore.xtext,
+			org.eclipse.emf.mwe2.runtime,
+			org.eclipse.core.runtime,
+			org.eclipse.xsd,
+			org.eclipse.uml2.uml,
+			org.eclipse.uml2.common,
+			org.eclipse.emf.mapping.ecore2xml,
+			org.eclipse.uml2.types,
+			org.apache.poi.ooxml.schemas_3.10.1,
+			org.apache.poi.ooxml_3.10.1,
+			org.apache.poi_3.10.1,
+			org.apache.commons.collections,
+			org.apache.commons.lang3
+		    </includeArtifactIds>
 	      <outputDirectory>target/dependency-unpacked</outputDirectory>
 	    </configuration>
 	  </execution>
diff --git a/tests/org.eclipse.epsilon.emc.emf.test/META-INF/MANIFEST.MF b/tests/org.eclipse.epsilon.emc.emf.test/META-INF/MANIFEST.MF
index 1fc746b..a30bf26 100644
--- a/tests/org.eclipse.epsilon.emc.emf.test/META-INF/MANIFEST.MF
+++ b/tests/org.eclipse.epsilon.emc.emf.test/META-INF/MANIFEST.MF
@@ -6,5 +6,8 @@
 Bundle-Vendor: Eclipse.org
 Bundle-RequiredExecutionEnvironment: JavaSE-1.8
 Require-Bundle: org.eclipse.epsilon.test.dependencies,
- org.eclipse.epsilon.common.dt.test
+ org.eclipse.emf.ecore.xcore,
+ org.eclipse.emf.codegen.ecore,
+ org.eclipse.epsilon.common.dt.test,
+ com.google.inject
 Export-Package: org.eclipse.epsilon.emc.emf.test
diff --git a/tests/org.eclipse.epsilon.emc.emf.test/src/org/eclipse/epsilon/emc/emf/EmfModelLoadTests.java b/tests/org.eclipse.epsilon.emc.emf.test/src/org/eclipse/epsilon/emc/emf/EmfModelLoadTests.java
index d2c605e..10f2ecb 100644
--- a/tests/org.eclipse.epsilon.emc.emf.test/src/org/eclipse/epsilon/emc/emf/EmfModelLoadTests.java
+++ b/tests/org.eclipse.epsilon.emc.emf.test/src/org/eclipse/epsilon/emc/emf/EmfModelLoadTests.java
@@ -12,12 +12,22 @@
 
 import static org.junit.Assert.assertEquals;
 
+import com.google.inject.Injector;
 import java.io.File;
+import java.net.URL;
 
+import org.eclipse.emf.codegen.ecore.genmodel.GenModel;
 import org.eclipse.emf.common.util.TreeIterator;
+import org.eclipse.emf.common.util.URI;
+import org.eclipse.emf.ecore.EPackage;
+import org.eclipse.emf.ecore.EcorePackage;
+import org.eclipse.emf.ecore.impl.EPackageImpl;
 import org.eclipse.emf.ecore.util.EcoreUtil;
+import org.eclipse.emf.ecore.xcore.XcoreStandaloneSetup;
 import org.eclipse.epsilon.common.util.FileUtil;
 import org.eclipse.epsilon.eol.exceptions.models.EolModelLoadingException;
+import org.eclipse.xtext.resource.XtextResource;
+import org.eclipse.xtext.resource.XtextResourceSet;
 import org.junit.Test;
 
 public class EmfModelLoadTests {
@@ -98,4 +108,11 @@
 		File fEcore = FileUtil.getFile("Tree.ecore", EmfModelLoadTests.class);
 		return EmfModelFactory.getInstance().createEmfModel("Tree", fXMI, fEcore);
 	}
+	
+	protected EmfModel createTrainModel() {
+		File fXMI = FileUtil.getFile("railway-batch-1.xmi", EmfModelLoadTests.class);
+		File fXcore = FileUtil.getFile("railway.xcore", EmfModelLoadTests.class);
+		return EmfModelFactory.getInstance().createEmfModel("train", fXMI, fXcore);
+	}
+	
 }