diff --git a/plugins/org.eclipse.emf.codegen.ecore/src/org/eclipse/emf/codegen/ecore/genmodel/impl/GenModelImpl.java b/plugins/org.eclipse.emf.codegen.ecore/src/org/eclipse/emf/codegen/ecore/genmodel/impl/GenModelImpl.java
index 58f723a..34ecb98 100644
--- a/plugins/org.eclipse.emf.codegen.ecore/src/org/eclipse/emf/codegen/ecore/genmodel/impl/GenModelImpl.java
+++ b/plugins/org.eclipse.emf.codegen.ecore/src/org/eclipse/emf/codegen/ecore/genmodel/impl/GenModelImpl.java
@@ -9133,9 +9133,9 @@
 
   protected void getMissingPackagesHelper(List<EPackage> ePackages, List<GenPackage> genPackages)
   {
-    for (GenPackage genPackage : genPackages)
+    for (int i = 0; i < genPackages.size(); ++i)
     {
-      EPackage ePackage = genPackage.getEcorePackage();
+      EPackage ePackage = genPackages.get(i).getEcorePackage();
       if (ePackage != null)
       {
         for (Iterator<EObject> j = ePackage.eAllContents(); j.hasNext();)
diff --git a/plugins/org.eclipse.emf.converter/src/org/eclipse/emf/converter/ui/contribution/base/ModelConverterPackagePage.java b/plugins/org.eclipse.emf.converter/src/org/eclipse/emf/converter/ui/contribution/base/ModelConverterPackagePage.java
index 902d1e4..a302c4f 100644
--- a/plugins/org.eclipse.emf.converter/src/org/eclipse/emf/converter/ui/contribution/base/ModelConverterPackagePage.java
+++ b/plugins/org.eclipse.emf.converter/src/org/eclipse/emf/converter/ui/contribution/base/ModelConverterPackagePage.java
@@ -83,6 +83,7 @@
 import org.eclipse.emf.ecore.EStructuralFeature;
 import org.eclipse.emf.ecore.resource.Resource;
 import org.eclipse.emf.ecore.resource.ResourceSet;
+import org.eclipse.emf.ecore.util.EcoreUtil;
 import org.eclipse.emf.edit.provider.ItemProvider;
 import org.eclipse.emf.edit.ui.provider.AdapterFactoryContentProvider;
 import org.eclipse.emf.edit.ui.provider.AdapterFactoryLabelProvider;
@@ -740,7 +741,8 @@
         {
           IFile file = (IFile)element;
           URI uri = URI.createPlatformResourceURI(file.getFullPath().toString(), true);
-          return "genmodel".equals(file.getFileExtension())
+          String fileExtension = file.getFileExtension();
+          return ("genmodel".equals(fileExtension) || "xcore".equals(fileExtension))
             && !file.getFullPath().equals(genModelPath)
             && !genModelURIs.contains(uri);
         }
@@ -762,7 +764,7 @@
       {
         URI genModelURI = URI.createPlatformResourceURI(files[i].getFullPath().toString(), true);
         Resource genModelResource = referencedGenModels.getResource(genModelURI, true);
-        GenModel genModel = (GenModel)genModelResource.getContents().get(0);
+        GenModel genModel = (GenModel)EcoreUtil.getObjectByType(genModelResource.getContents(), GenModelPackage.Literals.GEN_MODEL);
         genModels.add(genModel);
       }
       
diff --git a/plugins/org.eclipse.emf.importer.ecore/src/org/eclipse/emf/importer/ecore/EcoreImporter.java b/plugins/org.eclipse.emf.importer.ecore/src/org/eclipse/emf/importer/ecore/EcoreImporter.java
index 6d1d055..0e57b9e 100644
--- a/plugins/org.eclipse.emf.importer.ecore/src/org/eclipse/emf/importer/ecore/EcoreImporter.java
+++ b/plugins/org.eclipse.emf.importer.ecore/src/org/eclipse/emf/importer/ecore/EcoreImporter.java
@@ -10,6 +10,7 @@
  */
 package org.eclipse.emf.importer.ecore;
 
+import java.util.Iterator;
 import java.util.List;
 
 import org.eclipse.emf.codegen.ecore.genmodel.GenPackage;
@@ -65,9 +66,18 @@
       }
       EcoreUtil.resolveAll(ecoreResourceSet);
 
+      List<EPackage> ePackages = getEPackages();
       for (Resource resource : ecoreResourceSet.getResources())
       {
-        getEPackages().addAll(EcoreUtil.<EPackage>getObjectsByType(resource.getContents(), EcorePackage.Literals.EPACKAGE));
+        ePackages.addAll(EcoreUtil.<EPackage>getObjectsByType(resource.getContents(), EcorePackage.Literals.EPACKAGE));
+      }
+      
+      for (Iterator<EPackage> i = ePackages.iterator(); i.hasNext(); )
+      {
+        if ("xcore.lang".equals(i.next().getNsURI()))
+        {
+          i.remove();
+        }
       }
 
       BasicDiagnostic diagnosticChain = 
@@ -76,7 +86,7 @@
            ConverterUtil.ACTION_MESSAGE_NONE,
            EcoreImporterPlugin.INSTANCE.getString("_UI_ErrorsWereDetectedEcore_message"),
            null);
-      for (EPackage ePackage : getEPackages())
+      for (EPackage ePackage : ePackages)
       {
         Diagnostician.INSTANCE.validate(ePackage, diagnosticChain);
       }
