diff --git a/src/main/java/teetime/framework/RunnableStage.java b/src/main/java/teetime/framework/RunnableStage.java
index 3acf6db53542fc8d7244f6d79e9b6ece6973f8e9..4489bc2d794aa39a3aa629271bb55c52698ab613 100644
--- a/src/main/java/teetime/framework/RunnableStage.java
+++ b/src/main/java/teetime/framework/RunnableStage.java
@@ -30,7 +30,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())) {
 						this.stage.terminate();
 					}
 				}
diff --git a/src/main/java/teetime/framework/exceptionHandling/IgnoringStageListener.java b/src/main/java/teetime/framework/exceptionHandling/IgnoringStageListener.java
index c8541006c1951e9b066e3ecf3083e203ada6363d..4aa1feda46c962999b6e7856a7a24672b315bd08 100644
--- a/src/main/java/teetime/framework/exceptionHandling/IgnoringStageListener.java
+++ b/src/main/java/teetime/framework/exceptionHandling/IgnoringStageListener.java
@@ -6,11 +6,10 @@ public class IgnoringStageListener extends StageExceptionListener {
 
 	public IgnoringStageListener() {
 		super();
-		// TODO Auto-generated constructor stub
 	}
 
 	@Override
 	public boolean onStageException(final Exception e, final Stage throwingStage) {
-		return true;
+		return false;
 	}
 }
diff --git a/src/main/java/teetime/framework/exceptionHandling/LoggingStageListener.java b/src/main/java/teetime/framework/exceptionHandling/LoggingStageListener.java
new file mode 100644
index 0000000000000000000000000000000000000000..9b1adaa91d938f1f3a7e1c670015b63391268906
--- /dev/null
+++ b/src/main/java/teetime/framework/exceptionHandling/LoggingStageListener.java
@@ -0,0 +1,13 @@
+package teetime.framework.exceptionHandling;
+
+import teetime.framework.Stage;
+
+public class LoggingStageListener extends StageExceptionListener {
+
+	@Override
+	public boolean onStageException(final Exception e, final Stage throwingStage) {
+		logger.warn("Exception arised from" + throwingStage.getId(), e);
+		return false;
+	}
+
+}
diff --git a/src/main/java/teetime/framework/exceptionHandling/StageExceptionListener.java b/src/main/java/teetime/framework/exceptionHandling/StageExceptionListener.java
index 81e0fd78ec122eac3384c4cf2cb5f002a6aed627..671d9a3792b6a7d8813369738cccb547556ca1b1 100644
--- a/src/main/java/teetime/framework/exceptionHandling/StageExceptionListener.java
+++ b/src/main/java/teetime/framework/exceptionHandling/StageExceptionListener.java
@@ -28,7 +28,7 @@ public abstract class StageExceptionListener {
 	 * @param throwingStage
 	 *            the stage, which has thrown the exception.
 	 * @return
-	 *         true, if the thread can continue with execution or false, if thread should be terminated
+	 *         true, if the thread should be terminated, false otherwise
 	 */
 	public abstract boolean 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
new file mode 100644
index 0000000000000000000000000000000000000000..a174fe8828e1c4a93cce97800fa8317aace6ebf8
--- /dev/null
+++ b/src/main/java/teetime/framework/exceptionHandling/TerminatingStageListener.java
@@ -0,0 +1,13 @@
+package teetime.framework.exceptionHandling;
+
+import teetime.framework.Stage;
+
+public class TerminatingStageListener extends StageExceptionListener {
+
+	@Override
+	public boolean onStageException(final Exception e, final Stage throwingStage) {
+		logger.warn("Exception arised from" + throwingStage.getId(), e);
+		return true;
+	}
+
+}