diff --git a/src/main/java/teetime/framework/Analysis.java b/src/main/java/teetime/framework/Analysis.java
index 84a8d6f44e694460fb867b7426ee4a97a4b62fbc..22d83a561ba4727bc4c2ebe21d74581de72cede7 100644
--- a/src/main/java/teetime/framework/Analysis.java
+++ b/src/main/java/teetime/framework/Analysis.java
@@ -28,7 +28,7 @@ public class Analysis implements UncaughtExceptionHandler {
 
 	private final AnalysisConfiguration configuration;
 
-	private final StageExceptionHandler listener;
+	private final Class<? extends teetime.framework.exceptionHandling.StageExceptionHandler> listener;
 
 	private boolean executionInterrupted = false;
 
@@ -47,11 +47,11 @@ public class Analysis implements UncaughtExceptionHandler {
 	 *            to be used for the analysis
 	 */
 	public Analysis(final AnalysisConfiguration configuration) {
-		this(configuration, false, new IgnoringStageListener());
+		this(configuration, false, IgnoringStageListener.class);
 	}
 
 	public Analysis(final AnalysisConfiguration configuration, final boolean validationEnabled) {
-		this(configuration, validationEnabled, new IgnoringStageListener());
+		this(configuration, validationEnabled, IgnoringStageListener.class);
 	}
 
 	/**
@@ -62,11 +62,11 @@ public class Analysis implements UncaughtExceptionHandler {
 	 * @param listener
 	 *            specific listener for the exception handling
 	 */
-	public Analysis(final AnalysisConfiguration configuration, final StageExceptionHandler listener) {
+	public Analysis(final AnalysisConfiguration configuration, final Class<? extends StageExceptionHandler> listener) {
 		this(configuration, false, listener);
 	}
 
-	public Analysis(final AnalysisConfiguration configuration, final boolean validationEnabled, final StageExceptionHandler listener) {
+	public Analysis(final AnalysisConfiguration configuration, final boolean validationEnabled, final Class<? extends StageExceptionHandler> listener) {
 		this.configuration = configuration;
 		this.listener = listener;
 		if (validationEnabled) {
@@ -106,7 +106,7 @@ public class Analysis implements UncaughtExceptionHandler {
 		for (Stage stage : threadableStageJobs) {
 			StageExceptionHandler newListener;
 			try {
-				newListener = listener.getClass().newInstance();
+				newListener = listener.newInstance();
 			} catch (InstantiationException e) {
 				throw new IllegalStateException(e);
 			} catch (IllegalAccessException e) {
diff --git a/src/test/java/teetime/framework/ExceptionHandling.java b/src/test/java/teetime/framework/ExceptionHandling.java
index a0e81a17189bd3af3495f2365fde3afe98257988..4029d695efa059ba6dd52c2aa7df95c6ed6d57ba 100644
--- a/src/test/java/teetime/framework/ExceptionHandling.java
+++ b/src/test/java/teetime/framework/ExceptionHandling.java
@@ -10,12 +10,12 @@ import teetime.framework.exceptionHandling.TestListener;
 
 public class ExceptionHandling {
 
-	TestListener listener;
+	Class<TestListener> listener;
 	Analysis analysis;
 
 	@Before
 	public void newInstances() {
-		listener = new TestListener();
+		listener = TestListener.class;
 		analysis = new Analysis(new ExceptionTestConfiguration(), listener);
 	}