diff --git a/core/tools.descartes.dql.core.engine/src/tools/descartes/dql/core/engine/interpreter/DefaultProvider.java b/core/tools.descartes.dql.core.engine/src/tools/descartes/dql/core/engine/interpreter/DefaultProvider.java
index 5371e7a4bcf558d89336be35c6c1f40bf1d6ecab..dc440462d0cc3fbd76a94a93a0d936dc46c73644 100644
--- a/core/tools.descartes.dql.core.engine/src/tools/descartes/dql/core/engine/interpreter/DefaultProvider.java
+++ b/core/tools.descartes.dql.core.engine/src/tools/descartes/dql/core/engine/interpreter/DefaultProvider.java
@@ -1,7 +1,5 @@
 package tools.descartes.dql.core.engine.interpreter;
 
-import org.eclipse.emf.ecore.util.EcoreUtil;
-
 import tools.descartes.dql.core.engine.query.QueryExecutionEngine;
 import tools.descartes.dql.core.engine.query.QueryExecutionEngineImpl;
 import tools.descartes.dql.lang.descartesQL.DescartesQL;
@@ -19,13 +17,23 @@ import tools.descartes.dql.models.mapping.mapping.EntityMapping;
 
 public class DefaultProvider {
 
-	private SelectQuery query;
 	private DescartesQLFactory dqlFactory = DescartesQLFactory.eINSTANCE;
 	private EntityMapping statTypes;
 	private EntityMapping entityTypes;
-
-	public DefaultProvider(SelectQuery query) {
-		this.query = query;
+	private UsingClause usingClause;
+	private ForClause forClause;
+
+	/*
+	 * Since SelectQuery and ListQuery don't have a common ancestor, we need to
+	 * use a little workaround
+	 */
+	public DefaultProvider(SelectQuery selectQuery, ListQuery listQuery) {
+		if (selectQuery != null) {
+			this.usingClause = selectQuery.getUsingClause();
+			this.forClause = selectQuery.getForClause();
+		} else {
+			this.usingClause = listQuery.getUsingClause();
+		}
 	}
 
 	public String getDefaultStatType(String entityRef, String metricRef2) {
@@ -42,17 +50,15 @@ public class DefaultProvider {
 
 	private EntityMapping getEntityTypes() {
 		if (entityTypes == null)
-			initializeEntityTypes(query);
+			initializeEntityTypes();
 		return entityTypes;
 	}
 
-	private void initializeEntityTypes(SelectQuery selectQuery) {
-		UsingClause uc = EcoreUtil.copy(selectQuery.getUsingClause());
-
+	private void initializeEntityTypes() {
 		DescartesQL entityQuery = dqlFactory.createDescartesQL();
 		ListQuery listQuery = dqlFactory.createListQuery();
 		entityQuery.setQuery(listQuery);
-		listQuery.setUsingClause(uc);
+		listQuery.setUsingClause(usingClause);
 		ListEntitiesQuery listMetricsQuery = dqlFactory.createListEntitiesQuery();
 		listQuery.setQueryType(listMetricsQuery);
 		listMetricsQuery.setMode("LIST ENTITIES");
@@ -63,22 +69,19 @@ public class DefaultProvider {
 
 	private EntityMapping getStatTypes() {
 		if (statTypes == null)
-			initializeStatTypes(query);
+			initializeStatTypes();
 		return statTypes;
 	}
 
-	private void initializeStatTypes(SelectQuery selectQuery) {
-		UsingClause uc = EcoreUtil.copy(selectQuery.getUsingClause());
-		ForClause fc = selectQuery.getForClause();
-
+	private void initializeStatTypes() {
 		DescartesQL metricsQuery = dqlFactory.createDescartesQL();
 		ListQuery listQuery = dqlFactory.createListQuery();
 		metricsQuery.setQuery(listQuery);
-		listQuery.setUsingClause(uc);
+		listQuery.setUsingClause(usingClause);
 		ListMetricsQuery listMetricsQuery = dqlFactory.createListMetricsQuery();
 		listQuery.setQueryType(listMetricsQuery);
 		listMetricsQuery.setMode("LIST METRICS");
-		listMetricsQuery.setEntityReferenceClause(fc.getEntityReferenceClause());
+		listMetricsQuery.setEntityReferenceClause(forClause.getEntityReferenceClause());
 
 		QueryExecutionEngine qee = new QueryExecutionEngineImpl();
 		this.statTypes = qee.execute(metricsQuery).get(0);
diff --git a/core/tools.descartes.dql.core.engine/src/tools/descartes/dql/core/engine/interpreter/ModelStructureQueryInterpreter.java b/core/tools.descartes.dql.core.engine/src/tools/descartes/dql/core/engine/interpreter/ModelStructureQueryInterpreter.java
index 23a81dfcdbf76d48ffcf4eb45cc49a313adfc23b..1785402464cc7bd7230d158476d014d41680e156 100644
--- a/core/tools.descartes.dql.core.engine/src/tools/descartes/dql/core/engine/interpreter/ModelStructureQueryInterpreter.java
+++ b/core/tools.descartes.dql.core.engine/src/tools/descartes/dql/core/engine/interpreter/ModelStructureQueryInterpreter.java
@@ -147,6 +147,7 @@ public class ModelStructureQueryInterpreter
 	private boolean interpretListMetricsQuery(final ListQuery query) {
 		// TODO: Implement
 		// FilterClause filterClause = ((ListQuery) query).getFilterClause();
+		DefaultProvider defaultProvider = new DefaultProvider(null, query);
 		final ListQuery listQuery = query;
 		final ListMetricsQuery listMetricsQuery = (ListMetricsQuery) query.getQueryType();
 
@@ -173,9 +174,11 @@ public class ModelStructureQueryInterpreter
 		final EList<EntityReference> refClause = entityReferenceClause.getEntityReferences();
 		for (final EntityReference ref : refClause) {
 			Entity entity = domainFactory.createEntity();
-			entity.setEntityType(ref.getType());
+			if (ref.getType() != null)
+				entity.setEntityType(ref.getType());
+			else
+				entity.setEntityType(defaultProvider.lookUpEntityType(ref));
 			entity.setIdentifier(ref.getIdentifier());
-
 			if (ref.getAlias() != null) {
 				entity.setAlias(ref.getAlias().getAlias());
 			}
diff --git a/core/tools.descartes.dql.core.engine/src/tools/descartes/dql/core/engine/interpreter/PerformanceMetricsQueryInterpreter.java b/core/tools.descartes.dql.core.engine/src/tools/descartes/dql/core/engine/interpreter/PerformanceMetricsQueryInterpreter.java
index c7039d3409ed9e8ce587bf35fbfae0ffbbdea336..db9a413bc047a417340a26587ad10c966d4a389b 100644
--- a/core/tools.descartes.dql.core.engine/src/tools/descartes/dql/core/engine/interpreter/PerformanceMetricsQueryInterpreter.java
+++ b/core/tools.descartes.dql.core.engine/src/tools/descartes/dql/core/engine/interpreter/PerformanceMetricsQueryInterpreter.java
@@ -106,7 +106,7 @@ public class PerformanceMetricsQueryInterpreter extends
 
 		if (getQuery() instanceof SelectQuery) {
 			selectQuery = (SelectQuery) getQuery();
-			this.defaultProvider = new DefaultProvider(selectQuery);
+			this.defaultProvider = new DefaultProvider(selectQuery, null);
 			final UsingClause usingClause = selectQuery.getUsingClause();
 			final ModelReferenceClause modelReference = usingClause.getModelReference();
 			final ModelFamily family = modelReference.getFamily();