diff --git a/src/main/java/teetime/framework/Analysis.java b/src/main/java/teetime/framework/Analysis.java
index 450c8f757a657b54db94a6167dbf177b24bc701d..ab75d4b88255e86c36cdabf4d5ebaca58b286bee 100644
--- a/src/main/java/teetime/framework/Analysis.java
+++ b/src/main/java/teetime/framework/Analysis.java
@@ -37,7 +37,7 @@ public class Analysis implements UncaughtExceptionHandler {
 	private final Collection<Pair<Thread, Throwable>> exceptions = new ConcurrentLinkedQueue<Pair<Thread, Throwable>>();
 
 	/**
-	 * Creates a new {@link Analysis} that skips validating the port connections.
+	 * Creates a new {@link Analysis} that skips validating the port connections and uses the default listener.
 	 *
 	 * @param configuration
 	 *            to be used for the analysis
@@ -50,6 +50,14 @@ public class Analysis implements UncaughtExceptionHandler {
 		this(configuration, validationEnabled, new IgnoringStageListener());
 	}
 
+	/**
+	 * Creates a new {@link Analysis} that skips validating the port connections and uses a specific listener.
+	 *
+	 * @param configuration
+	 *            to be used for the analysis
+	 * @param listener
+	 *            specific listener for the exception handling
+	 */
 	public Analysis(final AnalysisConfiguration configuration, final StageExceptionListener listener) {
 		this(configuration, false, listener);
 	}
diff --git a/src/main/java/teetime/framework/RunnableStage.java b/src/main/java/teetime/framework/RunnableStage.java
index 4489bc2d794aa39a3aa629271bb55c52698ab613..229e1d5b32fe1d479d0cf18e744e9fb447f51295 100644
--- a/src/main/java/teetime/framework/RunnableStage.java
+++ b/src/main/java/teetime/framework/RunnableStage.java
@@ -5,6 +5,7 @@ import org.slf4j.LoggerFactory;
 
 import teetime.framework.exceptionHandling.StageException;
 import teetime.framework.exceptionHandling.StageExceptionListener;
+import teetime.framework.exceptionHandling.StageExceptionListener.FurtherExecution;
 
 abstract class RunnableStage implements Runnable {
 
@@ -30,7 +31,7 @@ abstract class RunnableStage implements Runnable {
 				try {
 					executeStage();
 				} catch (StageException e) {
-					if (this.listener.onStageException(e, e.getThrowingStage())) {
+					if (this.listener.onStageException(e, e.getThrowingStage()) == FurtherExecution.TERMINATE) {
 						this.stage.terminate();
 					}
 				}
diff --git a/src/main/java/teetime/framework/exceptionHandling/IgnoringStageListener.java b/src/main/java/teetime/framework/exceptionHandling/IgnoringStageListener.java
index 4aa1feda46c962999b6e7856a7a24672b315bd08..cf6fb4e2f961bc50f4c473bbf4b7a3a7819ac1ff 100644
--- a/src/main/java/teetime/framework/exceptionHandling/IgnoringStageListener.java
+++ b/src/main/java/teetime/framework/exceptionHandling/IgnoringStageListener.java
@@ -9,7 +9,7 @@ public class IgnoringStageListener extends StageExceptionListener {
 	}
 
 	@Override
-	public boolean onStageException(final Exception e, final Stage throwingStage) {
-		return false;
+	public FurtherExecution onStageException(final Exception e, final Stage throwingStage) {
+		return FurtherExecution.CONTINUE;
 	}
 }
diff --git a/src/main/java/teetime/framework/exceptionHandling/LoggingStageListener.java b/src/main/java/teetime/framework/exceptionHandling/LoggingStageListener.java
index 9b1adaa91d938f1f3a7e1c670015b63391268906..f6c622f6f5555ad6bdd9a7d45be7a65e2ee3bae6 100644
--- a/src/main/java/teetime/framework/exceptionHandling/LoggingStageListener.java
+++ b/src/main/java/teetime/framework/exceptionHandling/LoggingStageListener.java
@@ -5,9 +5,9 @@ import teetime.framework.Stage;
 public class LoggingStageListener extends StageExceptionListener {
 
 	@Override
-	public boolean onStageException(final Exception e, final Stage throwingStage) {
+	public FurtherExecution onStageException(final Exception e, final Stage throwingStage) {
 		logger.warn("Exception arised from" + throwingStage.getId(), e);
-		return false;
+		return FurtherExecution.CONTINUE;
 	}
 
 }
diff --git a/src/main/java/teetime/framework/exceptionHandling/StageExceptionListener.java b/src/main/java/teetime/framework/exceptionHandling/StageExceptionListener.java
index 671d9a3792b6a7d8813369738cccb547556ca1b1..68f0f209458b7e858ba30203c309d3c7b12c506a 100644
--- a/src/main/java/teetime/framework/exceptionHandling/StageExceptionListener.java
+++ b/src/main/java/teetime/framework/exceptionHandling/StageExceptionListener.java
@@ -11,6 +11,10 @@ import teetime.framework.Stage;
  */
 public abstract class StageExceptionListener {
 
+	public enum FurtherExecution {
+		CONTINUE, TERMINATE
+	}
+
 	/**
 	 * The default logger, which can be used by all subclasses
 	 */
@@ -30,6 +34,6 @@ public abstract class StageExceptionListener {
 	 * @return
 	 *         true, if the thread should be terminated, false otherwise
 	 */
-	public abstract boolean onStageException(Exception e, Stage throwingStage);
+	public abstract FurtherExecution onStageException(Exception e, Stage throwingStage);
 
 }
diff --git a/src/main/java/teetime/framework/exceptionHandling/TerminatingStageListener.java b/src/main/java/teetime/framework/exceptionHandling/TerminatingStageListener.java
index a174fe8828e1c4a93cce97800fa8317aace6ebf8..810a7d577b4db1e536c1ccf61155adacf89503ea 100644
--- a/src/main/java/teetime/framework/exceptionHandling/TerminatingStageListener.java
+++ b/src/main/java/teetime/framework/exceptionHandling/TerminatingStageListener.java
@@ -5,9 +5,9 @@ import teetime.framework.Stage;
 public class TerminatingStageListener extends StageExceptionListener {
 
 	@Override
-	public boolean onStageException(final Exception e, final Stage throwingStage) {
+	public FurtherExecution onStageException(final Exception e, final Stage throwingStage) {
 		logger.warn("Exception arised from" + throwingStage.getId(), e);
-		return true;
+		return FurtherExecution.TERMINATE;
 	}
 
 }