diff --git a/org.fortiss.tooling.ext.quality.ui/src/org/fortiss/tooling/ext/quality/ui/ModelQualityExtractionMenu.java b/org.fortiss.tooling.ext.quality.ui/src/org/fortiss/tooling/ext/quality/ui/ModelQualityExtractionMenu.java
index fae5ff921137188465dd443716137f256599b19d..3dcbcbb01735ed393011a70cce6895af674d0080 100644
--- a/org.fortiss.tooling.ext.quality.ui/src/org/fortiss/tooling/ext/quality/ui/ModelQualityExtractionMenu.java
+++ b/org.fortiss.tooling.ext.quality.ui/src/org/fortiss/tooling/ext/quality/ui/ModelQualityExtractionMenu.java
@@ -67,6 +67,7 @@ public class ModelQualityExtractionMenu implements IContextMenuContributor {
 	/** Action for generating the set of . */
 	protected class MetricExtractionAction extends Action {
 
+		/** */
 		private final FileProject fp;
 		/** Constructor. */
 		public MetricExtractionAction(FileProject fp) {
diff --git a/org.fortiss.tooling.ext.quality/src/org/fortiss/tooling/ext/quality/service/HierarchicElementSizeProvider.java b/org.fortiss.tooling.ext.quality/src/org/fortiss/tooling/ext/quality/service/HierarchicElementSizeProvider.java
index 41bc8536d9bf3eed0d7785c0ee4b85714f50c731..350d038e89a71528ba0c13249f209f61f1ed07d2 100644
--- a/org.fortiss.tooling.ext.quality/src/org/fortiss/tooling/ext/quality/service/HierarchicElementSizeProvider.java
+++ b/org.fortiss.tooling.ext.quality/src/org/fortiss/tooling/ext/quality/service/HierarchicElementSizeProvider.java
@@ -38,10 +38,26 @@ public class HierarchicElementSizeProvider implements IModelQualityProvider<IHie
 	 * Number of totalElements in whole tree
 	 * Average SubTree Size
 	 */
+	/* */
+	private final String rootName;
+	/**  */
+	Map<String, Double> sizes = new HashMap<String, Double>();
+
+	/** */
+	public HierarchicElementSizeProvider(String rootName) {
+		super();
+		this.rootName = rootName;
+		// TODO Auto-generated constructor stub
+	}
+
+	/** */
+	public String getName() {
+		return this.rootName;
+	}
 
 	/** {@inheritDoc} */
 	@Override
-	public Map<String, Double> apply(IHierarchicElement ele) {
+	public void apply(IHierarchicElement ele) {
 		Map<String, Double> sizes = new HashMap<String, Double>();
 		sizes.put("numberOfPorts", (double)ele.getConnectors().size());
 		sizes.put("numberOfChildren", (double)ele.getContainedElements().size());
@@ -63,7 +79,7 @@ public class HierarchicElementSizeProvider implements IModelQualityProvider<IHie
 		for(IHierarchicElement child : ele.getContainedElements()) {
 			apply(child);
 		}
-		return sizes;
+		this.sizes = sizes;
 	}
 
 	/**
diff --git a/org.fortiss.tooling.ext.quality/src/org/fortiss/tooling/ext/quality/service/IModelQualityProvider.java b/org.fortiss.tooling.ext.quality/src/org/fortiss/tooling/ext/quality/service/IModelQualityProvider.java
index db893d2a232f236df3cebbf606289751d412dfa7..77c3bf38eeca7aa27f4a675e0acc66d37410244d 100644
--- a/org.fortiss.tooling.ext.quality/src/org/fortiss/tooling/ext/quality/service/IModelQualityProvider.java
+++ b/org.fortiss.tooling.ext.quality/src/org/fortiss/tooling/ext/quality/service/IModelQualityProvider.java
@@ -15,8 +15,6 @@
 +--------------------------------------------------------------------------*/
 package org.fortiss.tooling.ext.quality.service;
 
-import java.util.Map;
-
 import org.eclipse.emf.ecore.EObject;
 import org.fortiss.tooling.kernel.service.base.IEObjectAware;
 
@@ -30,5 +28,5 @@ import org.fortiss.tooling.kernel.service.base.IEObjectAware;
 public interface IModelQualityProvider<C extends EObject> extends IEObjectAware<EObject> {
 
 	/** Applies the IMetricProvider to the given model element. */
-	Map<String, Double> apply(C element);
+	void apply(C element);
 }
diff --git a/org.fortiss.tooling.ext.quality/src/org/fortiss/tooling/ext/quality/service/ModelQualityService.java b/org.fortiss.tooling.ext.quality/src/org/fortiss/tooling/ext/quality/service/ModelQualityService.java
index 6398acae0a252e27b39d39103e60a2ecb9598aa1..2fa1be0c7b06cde84b0e47f24c1aa2a6c7c57f82 100644
--- a/org.fortiss.tooling.ext.quality/src/org/fortiss/tooling/ext/quality/service/ModelQualityService.java
+++ b/org.fortiss.tooling.ext.quality/src/org/fortiss/tooling/ext/quality/service/ModelQualityService.java
@@ -24,7 +24,6 @@ import java.io.IOException;
 import java.text.SimpleDateFormat;
 import java.util.ArrayList;
 import java.util.Date;
-import java.util.HashMap;
 import java.util.LinkedList;
 import java.util.List;
 import java.util.Map;
@@ -36,6 +35,7 @@ import org.fortiss.tooling.base.model.element.IHierarchicElement;
 import org.fortiss.tooling.kernel.introspection.IIntrospectionDetailsItem;
 import org.fortiss.tooling.kernel.introspection.IIntrospectionItem;
 import org.fortiss.tooling.kernel.introspection.IIntrospectiveKernelService;
+import org.fortiss.tooling.kernel.model.IProjectRootElement;
 import org.fortiss.tooling.kernel.service.IKernelIntrospectionSystemService;
 import org.fortiss.tooling.kernel.service.IMigrationService;
 import org.fortiss.tooling.kernel.service.base.EObjectAwareServiceBase;
@@ -47,6 +47,7 @@ import org.fortiss.tooling.kernel.service.base.EObjectAwareServiceBase;
  */
 public class ModelQualityService extends EObjectAwareServiceBase<IModelQualityProvider<?>>
 		implements IIntrospectiveKernelService, IModelQualityService {
+
 	/** The singleton instance. */
 	private static final ModelQualityService INSTANCE = new ModelQualityService();
 
@@ -89,7 +90,6 @@ public class ModelQualityService extends EObjectAwareServiceBase<IModelQualityPr
 	}
 
 	/** Get all suitable {@link IModelQualityProvider} for the given input. */
-	@SuppressWarnings("unused")
 	private List<IModelQualityProvider<?>> getAllMetricProviders(EObject input) {
 		List<IModelQualityProvider<?>> providers = new ArrayList<>();
 		for(Entry<Class<?>, List<IModelQualityProvider<?>>> migEntry : handlerMap.entrySet()) {
@@ -102,18 +102,27 @@ public class ModelQualityService extends EObjectAwareServiceBase<IModelQualityPr
 	}
 
 	/**
-	 * @param modelElement
+	 * @param fp
 	 * @return
 	 */
-	public List<IModelQualityProvider<? extends EObject>>
-			performMetricAnalysis(FileProject modelElement) {
+	public List<IModelQualityProvider<? extends EObject>> performMetricAnalysis(FileProject fp) {
 		List<IModelQualityProvider<? extends EObject>> result =
 				new LinkedList<IModelQualityProvider<? extends EObject>>();
+		for(IProjectRootElement ele : fp.getRootElements()) {
+			if(ele instanceof IHierarchicElement) {
+				HierarchicElementSizeProvider hes =
+						new HierarchicElementSizeProvider(ele.getName());
+				hes.apply((IHierarchicElement)ele);
+				System.out.println("checked in hierarchic metrics for: " + hes.getName());
+				result.add(hes);
+			}
+		}
+
 		// List<IModelQualityProvider<?>> handlers = getRegisteredHandlers(modelElement.getClass());
-		Map<String, Double> qualityData = new HashMap<String, Double>();
-		List<IModelQualityProvider<?>> hierarchicHandlers =
-				getRegisteredHandlers(IHierarchicElement.class);
-		List<IModelQualityProvider<?>> hierarchicHandlers2 = getRegisteredHandlers(EObject.class);
+		// Map<String, Double> qualityData = new HashMap<String, Double>();
+
+		// getRegisteredHandlers(IHierarchicElement.class);
+		// List<IModelQualityProvider<?>> hierarchicHandlers2 = getAllMetricProviders(fp);
 		// if(handlers == null) {
 		// return null;
 		// }