diff --git a/org.eclipse.emf.refactor.metrics.henshin/src/org/eclipse/emf/refactor/metrics/henshin/managers/HenshinGenerationManager.java b/org.eclipse.emf.refactor.metrics.henshin/src/org/eclipse/emf/refactor/metrics/henshin/managers/HenshinGenerationManager.java
index a9bf7d2..f277f70 100644
--- a/org.eclipse.emf.refactor.metrics.henshin/src/org/eclipse/emf/refactor/metrics/henshin/managers/HenshinGenerationManager.java
+++ b/org.eclipse.emf.refactor.metrics.henshin/src/org/eclipse/emf/refactor/metrics/henshin/managers/HenshinGenerationManager.java
@@ -1,12 +1,16 @@
 package org.eclipse.emf.refactor.metrics.henshin.managers;
 
+import java.io.IOException;
 import java.util.List;
 
 import org.eclipse.core.resources.IProject;
 import org.eclipse.core.runtime.CoreException;
+import org.eclipse.core.runtime.FileLocator;
 import org.eclipse.core.runtime.IProgressMonitor;
 import org.eclipse.core.runtime.Path;
 import org.eclipse.core.runtime.Platform;
+import org.eclipse.core.runtime.SubProgressMonitor;
+import org.eclipse.emf.codegen.jet.JETEmitter;
 import org.eclipse.emf.codegen.jet.JETException;
 import org.eclipse.emf.refactor.metrics.generator.managers.GenerationManager;
 import org.eclipse.emf.refactor.metrics.generator.managers.XMLPluginFileManager;
@@ -14,6 +18,7 @@
 import org.eclipse.emf.refactor.metrics.henshin.core.HenshinMetricInfo;
 import org.eclipse.jdt.core.IClasspathEntry;
 import org.eclipse.jdt.core.JavaCore;
+import org.eclipse.jface.dialogs.MessageDialog;
 import org.osgi.framework.Bundle;
 
 public class HenshinGenerationManager extends GenerationManager {
@@ -65,13 +70,45 @@
 		String generatedCode = "";
 		String templateName = HENSHIN_TEMPLATE_CLASS_NAME;
 		try {
+//			MessageDialog.openError(null, null, "vor generateCode()");
 			generatedCode = generateCode(monitor, templateName, metricInfo);
+//			MessageDialog.openError(null, null, "nach generateCode()");
 		    saveCode(monitor, generatedCode, metricInfo);
+//		    MessageDialog.openError(null, null, "nach saveCode()");
 		} catch (JETException e) {
+//			MessageDialog.openError(null, null, e.getMessage());
 			e.printStackTrace();
 		} catch (CoreException e) {
+//			MessageDialog.openError(null, null, e.getMessage());
 			e.printStackTrace();
 		}
 	}
+	
+	protected String setTemplateDirectory() {
+		String directory = "";
+		final Bundle bundle = Activator.getDefault().getBundle();
+		try {
+			directory = FileLocator.toFileURL(bundle.getEntry(TEMPLATE_DIR)).getFile();
+		} catch (final IOException e) {
+			e.printStackTrace();
+		}
+		return directory;
+	}
+	
+	protected static String generateCode(IProgressMonitor monitor, String template, HenshinMetricInfo metricInfo) {
+		String templatePath = templateDirectory + template + TEMPLATE_FILE_EXTENSION;
+		ClassLoader classLoader = metricInfo.getClass().getClassLoader();
+		JETEmitter jetEmitter = new JETEmitter(templatePath, classLoader);
+		jetEmitter.getClasspathEntries().addAll(classpathEntries);
+		String result = "";
+		IProgressMonitor subMonitor = new SubProgressMonitor(monitor, 1);
+		try {
+			result = jetEmitter.generate(subMonitor, new Object[] {metricInfo});
+		} catch (JETException e) {
+			e.printStackTrace();
+		}
+		System.out.println(result);
+		return result;
+	}
 
 }
diff --git a/org.eclipse.emf.refactor.metrics.henshin/src/org/eclipse/emf/refactor/metrics/henshin/ui/NewMetricWizardHenshin.java b/org.eclipse.emf.refactor.metrics.henshin/src/org/eclipse/emf/refactor/metrics/henshin/ui/NewMetricWizardHenshin.java
index 610bf74..c9990a0 100644
--- a/org.eclipse.emf.refactor.metrics.henshin/src/org/eclipse/emf/refactor/metrics/henshin/ui/NewMetricWizardHenshin.java
+++ b/org.eclipse.emf.refactor.metrics.henshin/src/org/eclipse/emf/refactor/metrics/henshin/ui/NewMetricWizardHenshin.java
@@ -9,9 +9,9 @@
 import org.eclipse.core.runtime.CoreException;
 import org.eclipse.core.runtime.IProgressMonitor;
 import org.eclipse.emf.refactor.metrics.generator.interfaces.INewMetricWizard;
-import org.eclipse.emf.refactor.metrics.generator.managers.GenerationManager;
 import org.eclipse.emf.refactor.metrics.generator.ui.MetricBasicDataWizardPage;
 import org.eclipse.emf.refactor.metrics.henshin.core.HenshinMetricInfo;
+import org.eclipse.emf.refactor.metrics.henshin.managers.HenshinGenerationManager;
 import org.eclipse.emf.refactor.metrics.managers.MetricManager;
 import org.eclipse.jface.operation.IRunnableWithProgress;
 import org.eclipse.jface.viewers.IStructuredSelection;
@@ -66,8 +66,8 @@
 		try{
 			getContainer().run(true, true, new IRunnableWithProgress(){
 				public void run(IProgressMonitor monitor)throws InvocationTargetException, InterruptedException{
-					GenerationManager.getInstance();
-					GenerationManager.createNewMetric(monitor, getMetricInfo(), targetProject);
+					HenshinGenerationManager.getInstance();
+					HenshinGenerationManager.createNewMetric(monitor, getMetricInfo(), targetProject);
 				}
 			});
 		}
diff --git a/org.eclipse.emf.refactor.metrics.henshin/templates/HenshinCalculateClassTemplate.javajet b/org.eclipse.emf.refactor.metrics.henshin/templates/HenshinCalculateClassTemplate.javajet
index d14ea83..22530e0 100644
--- a/org.eclipse.emf.refactor.metrics.henshin/templates/HenshinCalculateClassTemplate.javajet
+++ b/org.eclipse.emf.refactor.metrics.henshin/templates/HenshinCalculateClassTemplate.javajet
@@ -1,5 +1,5 @@
 <%@ jet package="org.eclipse.emf.refactor.metrics" class="HenshinCalculateClass"
-imports="org.eclipse.emf.refactor.metrics.henshin.generator.HenshinMetricInfo"%>
+imports="org.eclipse.emf.refactor.metrics.henshin.core.HenshinMetricInfo"%>
 <%HenshinMetricInfo info = (HenshinMetricInfo) argument; %>
 package <%=info.getPackage()%>;
 
