diff --git a/org.eclipse.emf.refactor.metrics.henshin/META-INF/MANIFEST.MF b/org.eclipse.emf.refactor.metrics.henshin/META-INF/MANIFEST.MF
index 9576c2a..1c7752f 100644
--- a/org.eclipse.emf.refactor.metrics.henshin/META-INF/MANIFEST.MF
+++ b/org.eclipse.emf.refactor.metrics.henshin/META-INF/MANIFEST.MF
@@ -12,3 +12,4 @@
  org.eclipse.emf.henshin.interpreter;bundle-version="0.9.2"
 Bundle-ActivationPolicy: lazy
 Bundle-RequiredExecutionEnvironment: JavaSE-1.6
+Export-Package: org.eclipse.emf.refactor.metrics.henshin.managers
diff --git a/org.eclipse.emf.refactor.metrics.henshin/src/org/eclipse/emf/refactor/metrics/henshin/HenshinFileManager.java b/org.eclipse.emf.refactor.metrics.henshin/src/org/eclipse/emf/refactor/metrics/henshin/managers/HenshinFileManager.java
similarity index 90%
rename from org.eclipse.emf.refactor.metrics.henshin/src/org/eclipse/emf/refactor/metrics/henshin/HenshinFileManager.java
rename to org.eclipse.emf.refactor.metrics.henshin/src/org/eclipse/emf/refactor/metrics/henshin/managers/HenshinFileManager.java
index 1db18c4..6413d01 100644
--- a/org.eclipse.emf.refactor.metrics.henshin/src/org/eclipse/emf/refactor/metrics/henshin/HenshinFileManager.java
+++ b/org.eclipse.emf.refactor.metrics.henshin/src/org/eclipse/emf/refactor/metrics/henshin/managers/HenshinFileManager.java
@@ -1,4 +1,4 @@
-package org.eclipse.emf.refactor.metrics.henshin;
+package org.eclipse.emf.refactor.metrics.henshin.managers;
 
 import java.io.File;
 import java.io.FileFilter;
diff --git a/org.eclipse.emf.refactor.metrics.henshin/src/org/eclipse/emf/refactor/metrics/henshin/HenshinManager.java b/org.eclipse.emf.refactor.metrics.henshin/src/org/eclipse/emf/refactor/metrics/henshin/managers/HenshinManager.java
similarity index 96%
rename from org.eclipse.emf.refactor.metrics.henshin/src/org/eclipse/emf/refactor/metrics/henshin/HenshinManager.java
rename to org.eclipse.emf.refactor.metrics.henshin/src/org/eclipse/emf/refactor/metrics/henshin/managers/HenshinManager.java
index 610be8f..4d6c1f7 100644
--- a/org.eclipse.emf.refactor.metrics.henshin/src/org/eclipse/emf/refactor/metrics/henshin/HenshinManager.java
+++ b/org.eclipse.emf.refactor.metrics.henshin/src/org/eclipse/emf/refactor/metrics/henshin/managers/HenshinManager.java
@@ -1,4 +1,4 @@
-package org.eclipse.emf.refactor.metrics.henshin;
+package org.eclipse.emf.refactor.metrics.henshin.managers;
 
 import java.util.List;
 
diff --git a/org.eclipse.emf.refactor.metrics.henshin/templates/HenshinCalculateClassTemplate.javajet b/org.eclipse.emf.refactor.metrics.henshin/templates/HenshinCalculateClassTemplate.javajet
new file mode 100644
index 0000000..d14ea83
--- /dev/null
+++ b/org.eclipse.emf.refactor.metrics.henshin/templates/HenshinCalculateClassTemplate.javajet
@@ -0,0 +1,46 @@
+<%@ jet package="org.eclipse.emf.refactor.metrics" class="HenshinCalculateClass"
+imports="org.eclipse.emf.refactor.metrics.henshin.generator.HenshinMetricInfo"%>
+<%HenshinMetricInfo info = (HenshinMetricInfo) argument; %>
+package <%=info.getPackage()%>;
+
+import java.io.IOException;
+import java.net.URL;
+import java.util.Collections;
+import java.util.List;
+
+import org.eclipse.core.runtime.FileLocator;
+import org.eclipse.core.runtime.Path;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.refactor.metrics.henshin.managers.HenshinManager;
+import org.eclipse.emf.refactor.metrics.interfaces.IMetricCalculator;
+
+
+public final class <%=info.getClassName()%> implements IMetricCalculator {
+
+	private String transformationPath = 
+		getFullPath("transformations/<%=info.getTransformationName()%>"); 
+		
+	private EObject context; 
+		
+	@Override
+	public void setContext(List<EObject> context) {
+		this.context = context.get(0);
+	}	
+		
+	@Override
+	public double calculate() {
+		return HenshinManager.run(transformationPath, this.context);
+	}
+	
+	private String getFullPath(String transformationPath){
+		URL url = FileLocator.find(<%=info.getProjectName().toLowerCase()%>.Activator.getDefault().getBundle(), new Path(transformationPath), Collections.EMPTY_MAP);
+		URL fileUrl = null;
+		try {
+			fileUrl = FileLocator.toFileURL(url);
+		}
+		catch (IOException e) {
+			e.printStackTrace();
+		}
+		return 	fileUrl.getPath();
+	}	
+}
\ No newline at end of file
