diff --git a/org.eclipse.emf.refactor.metrics.uml24.compositional/plugin.xml b/org.eclipse.emf.refactor.metrics.uml24.compositional/plugin.xml
index bdd9569..aff7ef3 100644
--- a/org.eclipse.emf.refactor.metrics.uml24.compositional/plugin.xml
+++ b/org.eclipse.emf.refactor.metrics.uml24.compositional/plugin.xml
@@ -160,6 +160,14 @@
             metric_name="MaxDIT">
       </metric>
       <metric
+            id="org.eclipse.emf.refactor.metrics.uml24.maxhagg"
+            metric_calculate_class="org.eclipse.emf.refactor.metrics.uml24.umlmodel.MaxHAgg"
+            metric_context="Model"
+            metric_description="Maximum of aggregation trees"
+            metric_metamodel="http://www.eclipse.org/uml2/4.0.0/UML"
+            metric_name="MaxHAgg">
+      </metric>
+      <metric
             id="org.eclipse.emf.refactor.metrics.uml24.gevsc"
             metric_calculate_class="org.eclipse.emf.refactor.metrics.uml24.umlmodel.GEvsC"
             metric_context="Model"
@@ -184,7 +192,7 @@
             metric_name="OPvsC">
       </metric>
       <metric
-            id="agvsc"
+            id="org.eclipse.emf.refactor.metrics.uml24.agvsc"
             metric_calculate_class="org.eclipse.emf.refactor.metrics.uml24.umlmodel.AGvsC"
             metric_context="Model"
             metric_description="Ratio between number of aggregations and number of classes in the model"
@@ -192,13 +200,37 @@
             metric_name="AGvsC">
       </metric>
       <metric
-            id="asvsc"
+            id="org.eclipse.emf.refactor.metrics.uml24.asvsc"
             metric_calculate_class="org.eclipse.emf.refactor.metrics.uml24.umlmodel.ASvsC"
             metric_context="Model"
             metric_description="Ratio between number of associations and number of classes in the model"
             metric_metamodel="http://www.eclipse.org/uml2/4.0.0/UML"
             metric_name="ASvsC">
       </metric>
+      <metric
+            id="org.eclipse.emf.refactor.metrics.uml24.ntdm"
+            metric_calculate_class="org.eclipse.emf.refactor.metrics.uml24.umlmodel.NTDM"
+            metric_context="Model"
+            metric_description="Number of class type dependencies in the model"
+            metric_metamodel="http://www.eclipse.org/uml2/4.0.0/UML"
+            metric_name="NTDM">
+      </metric>
+      <metric
+            id="org.eclipse.emf.refactor.metrics.uml24.ndepm"
+            metric_calculate_class="org.eclipse.emf.refactor.metrics.uml24.umlmodel.NDEPM"
+            metric_context="Model"
+            metric_description="Number of class dependencies in the model"
+            metric_metamodel="http://www.eclipse.org/uml2/4.0.0/UML"
+            metric_name="NDEPM">
+      </metric>
+      <metric
+            id="org.eclipse.emf.refactor.metrics.uml24.depvsc"
+            metric_calculate_class="org.eclipse.emf.refactor.metrics.uml24.umlmodel.DEPvsC"
+            metric_context="Model"
+            metric_description="Ratio between number of class dependencies and number of classes in the model"
+            metric_metamodel="http://www.eclipse.org/uml2/4.0.0/UML"
+            metric_name="DEPvsC">
+      </metric>
    </extension>
    
    <extension
diff --git a/org.eclipse.emf.refactor.metrics.uml24.compositional/src/org/eclipse/emf/refactor/metrics/uml24/umlmodel/DEPvsC.java b/org.eclipse.emf.refactor.metrics.uml24.compositional/src/org/eclipse/emf/refactor/metrics/uml24/umlmodel/DEPvsC.java
new file mode 100644
index 0000000..46d4b78
--- /dev/null
+++ b/org.eclipse.emf.refactor.metrics.uml24.compositional/src/org/eclipse/emf/refactor/metrics/uml24/umlmodel/DEPvsC.java
@@ -0,0 +1,37 @@
+package org.eclipse.emf.refactor.metrics.uml24.umlmodel;
+
+import java.util.List;
+
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.refactor.metrics.core.Metric;
+import org.eclipse.emf.refactor.metrics.interfaces.IMetricCalculator;
+import org.eclipse.emf.refactor.metrics.interfaces.IOperation;
+import org.eclipse.emf.refactor.metrics.operations.Operations;
+
+public class DEPvsC implements IMetricCalculator {
+
+	private List<EObject> context;
+	private String metricID1 = "org.eclipse.emf.refactor.metrics.uml24.ndepm";
+	private String metricID2 = "org.eclipse.emf.refactor.metrics.uml24.ncm";
+
+	IOperation operation = Operations.getOperation("Division");
+	
+	@Override
+	public void setContext(List<EObject> context) {
+		this.context = context;	
+	}
+
+	@Override
+	public double calculate() {
+		Metric metric1 = Metric.getMetricInstanceFromId(metricID1);
+		Metric metric2 = Metric.getMetricInstanceFromId(metricID2);
+		
+		IMetricCalculator calc1 = metric1.getCalculateClass();
+		IMetricCalculator calc2 = metric2.getCalculateClass();
+			
+		calc1.setContext(this.context);
+		calc2.setContext(this.context);
+		return operation.calculate(calc1.calculate(),calc2.calculate());
+	}
+
+}
diff --git a/org.eclipse.emf.refactor.metrics.uml24.compositional/src/org/eclipse/emf/refactor/metrics/uml24/umlmodel/MaxHAgg.java b/org.eclipse.emf.refactor.metrics.uml24.compositional/src/org/eclipse/emf/refactor/metrics/uml24/umlmodel/MaxHAgg.java
new file mode 100644
index 0000000..1fa1eb8
--- /dev/null
+++ b/org.eclipse.emf.refactor.metrics.uml24.compositional/src/org/eclipse/emf/refactor/metrics/uml24/umlmodel/MaxHAgg.java
@@ -0,0 +1,52 @@
+package org.eclipse.emf.refactor.metrics.uml24.umlmodel;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import org.eclipse.emf.common.util.BasicEList;
+import org.eclipse.emf.common.util.EList;
+import org.eclipse.emf.common.util.TreeIterator;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.refactor.metrics.core.Metric;
+import org.eclipse.emf.refactor.metrics.interfaces.IMetricCalculator;
+import org.eclipse.uml2.uml.Class;
+
+public class MaxHAgg implements IMetricCalculator {
+
+	private List<EObject> context; 
+	private String metricId = "org.eclipse.emf.refactor.metrics.uml24.hagg";
+		
+	@Override
+	public void setContext(List<EObject> context) {
+		this.context=context;
+	}	
+		
+	@Override
+	public double calculate() {	
+		EList<Double> haggs = new BasicEList<Double>();
+		Metric metric = Metric.getMetricInstanceFromId(metricId);
+		IMetricCalculator calc = metric.getCalculateClass();
+		TreeIterator<EObject> iter = context.get(0).eResource().getAllContents();
+		while (iter.hasNext()) {
+			EObject eObject = iter.next();
+			if (eObject instanceof Class) {
+				ArrayList<EObject> context = new ArrayList<EObject>();
+				context.add(eObject);
+				calc.setContext(context);
+				haggs.add(calc.calculate());
+			}			
+		}
+		return maxHAgg(haggs);
+	}
+
+	private double maxHAgg(EList<Double> doubles) {
+		Double result = 0.0;
+		for (Double d : doubles) {
+			if (d > result) {
+				result = d;
+			}
+		}
+		return result;
+	}
+
+}
diff --git a/org.eclipse.emf.refactor.metrics.uml24.compositional/src/org/eclipse/emf/refactor/metrics/uml24/umlmodel/NDEPM.java b/org.eclipse.emf.refactor.metrics.uml24.compositional/src/org/eclipse/emf/refactor/metrics/uml24/umlmodel/NDEPM.java
new file mode 100644
index 0000000..f59ed10
--- /dev/null
+++ b/org.eclipse.emf.refactor.metrics.uml24.compositional/src/org/eclipse/emf/refactor/metrics/uml24/umlmodel/NDEPM.java
@@ -0,0 +1,37 @@
+package org.eclipse.emf.refactor.metrics.uml24.umlmodel;
+
+import java.util.List;
+
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.refactor.metrics.core.Metric;
+import org.eclipse.emf.refactor.metrics.interfaces.IMetricCalculator;
+import org.eclipse.emf.refactor.metrics.interfaces.IOperation;
+import org.eclipse.emf.refactor.metrics.operations.Operations;
+
+public class NDEPM implements IMetricCalculator {
+
+	private List<EObject> context;
+	private String metricID1 = "org.eclipse.emf.refactor.metrics.uml24.ntdm";
+	private String metricID2 = "org.eclipse.emf.refactor.metrics.uml24.nim";
+
+	IOperation operation = Operations.getOperation("Sum");
+	
+	@Override
+	public void setContext(List<EObject> context) {
+		this.context = context;	
+	}
+
+	@Override
+	public double calculate() {
+		Metric metric1 = Metric.getMetricInstanceFromId(metricID1);
+		Metric metric2 = Metric.getMetricInstanceFromId(metricID2);
+		
+		IMetricCalculator calc1 = metric1.getCalculateClass();
+		IMetricCalculator calc2 = metric2.getCalculateClass();
+			
+		calc1.setContext(this.context);
+		calc2.setContext(this.context);
+		return operation.calculate(calc1.calculate(),calc2.calculate());
+	}
+
+}
diff --git a/org.eclipse.emf.refactor.metrics.uml24.compositional/src/org/eclipse/emf/refactor/metrics/uml24/umlmodel/NTDM.java b/org.eclipse.emf.refactor.metrics.uml24.compositional/src/org/eclipse/emf/refactor/metrics/uml24/umlmodel/NTDM.java
new file mode 100644
index 0000000..ae73e63
--- /dev/null
+++ b/org.eclipse.emf.refactor.metrics.uml24.compositional/src/org/eclipse/emf/refactor/metrics/uml24/umlmodel/NTDM.java
@@ -0,0 +1,37 @@
+package org.eclipse.emf.refactor.metrics.uml24.umlmodel;
+
+import java.util.List;
+
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.refactor.metrics.core.Metric;
+import org.eclipse.emf.refactor.metrics.interfaces.IMetricCalculator;
+import org.eclipse.emf.refactor.metrics.interfaces.IOperation;
+import org.eclipse.emf.refactor.metrics.operations.Operations;
+
+public class NTDM implements IMetricCalculator {
+
+	private List<EObject> context;
+	private String metricID1 = "org.eclipse.emf.refactor.metrics.uml24.nactm";
+	private String metricID2 = "org.eclipse.emf.refactor.metrics.uml24.nnoem";
+
+	IOperation operation = Operations.getOperation("Sum");
+	
+	@Override
+	public void setContext(List<EObject> context) {
+		this.context = context;	
+	}
+
+	@Override
+	public double calculate() {
+		Metric metric1 = Metric.getMetricInstanceFromId(metricID1);
+		Metric metric2 = Metric.getMetricInstanceFromId(metricID2);
+		
+		IMetricCalculator calc1 = metric1.getCalculateClass();
+		IMetricCalculator calc2 = metric2.getCalculateClass();
+			
+		calc1.setContext(this.context);
+		calc2.setContext(this.context);
+		return operation.calculate(calc1.calculate(),calc2.calculate());
+	}
+
+}
