diff --git a/src/changes/changes.xml b/src/changes/changes.xml
index 3f594729b62c7697929785785c8ab68fd72ac214..3e47bfad5fc22aea16a7ccc09e099d745dfd89e5 100644
--- a/src/changes/changes.xml
+++ b/src/changes/changes.xml
@@ -10,6 +10,10 @@
 			<action dev="ntd" type="add" issue="32">
 				Introduced a generic exception handling for stages.
 			</action>
+			<action dev="ntd" type="update" issue="92">
+				Introduced new method (returns void) in Analysis, which starts the execution of the analysis.
+				Marked old method as deprecated.
+			</action>
 
 		</release>
 		<release version="1.0" date="19.12.2014" description="Initial release">
diff --git a/src/main/java/teetime/framework/AbstractRunnableStage.java b/src/main/java/teetime/framework/AbstractRunnableStage.java
index 1aec986bc2b8e4fabfe6ed0a0e54a2f7d7f5938e..b673d353fe139d6a1a7a0348cc55a80bb45156fe 100644
--- a/src/main/java/teetime/framework/AbstractRunnableStage.java
+++ b/src/main/java/teetime/framework/AbstractRunnableStage.java
@@ -6,6 +6,7 @@ import org.slf4j.LoggerFactory;
 import teetime.framework.exceptionHandling.StageException;
 import teetime.framework.exceptionHandling.StageExceptionHandler;
 import teetime.framework.exceptionHandling.StageExceptionHandler.FurtherExecution;
+import teetime.framework.signal.TerminatingSignal;
 
 abstract class AbstractRunnableStage implements Runnable {
 
@@ -52,6 +53,14 @@ abstract class AbstractRunnableStage implements Runnable {
 
 		this.logger.debug("Finished runnable stage. (" + this.stage.getId() + ")");
 		if (failed) {
+			if (stage.getTerminationStrategy() == TerminationStrategy.BY_SIGNAL) {
+				TerminatingSignal signal = new TerminatingSignal();
+				// TODO: Check if this is really needed... it seems like signals are passed on after their first arrival
+				InputPort<?>[] inputPorts = stage.getInputPorts();
+				for (int i = 0; i < inputPorts.length; i++) {
+					stage.onSignal(signal, inputPorts[i]);
+				}
+			}
 			throw new IllegalStateException("Terminated by StageExceptionListener");
 		}
 	}
diff --git a/src/main/java/teetime/framework/Analysis.java b/src/main/java/teetime/framework/Analysis.java
index 6f7dab0ad1aebb8a51b4ed0684288f8e11239d3d..cc12eb81cdc957b6950d15a45d7e77960385a8e4 100644
--- a/src/main/java/teetime/framework/Analysis.java
+++ b/src/main/java/teetime/framework/Analysis.java
@@ -11,7 +11,6 @@ import org.slf4j.LoggerFactory;
 
 import teetime.framework.exceptionHandling.IgnoringStageListener;
 import teetime.framework.exceptionHandling.StageExceptionHandler;
-import teetime.framework.signal.TerminatingSignal;
 import teetime.framework.signal.ValidatingSignal;
 import teetime.framework.validation.AnalysisNotValidException;
 import teetime.util.Pair;
@@ -140,8 +139,11 @@ public class Analysis implements UncaughtExceptionHandler {
 	 * This method will start the Analysis and all containing stages.
 	 *
 	 * @return a collection of thread/throwable pairs
+	 *
+	 * @deprecated As of release 1.1, replaced by {@link #execute()}
 	 */
-	public void start() {
+	@Deprecated
+	public Collection<Pair<Thread, Throwable>> start() {
 		// start analysis
 		startThreads(this.consumerThreads);
 		startThreads(this.finiteProducerThreads);
@@ -170,10 +172,18 @@ public class Analysis implements UncaughtExceptionHandler {
 		for (Thread thread : this.infiniteProducerThreads) {
 			thread.interrupt();
 		}
+
+		return this.exceptions;
+	}
+
+	/**
+	 * This method will start the Analysis and all containing stages.
+	 */
+	public void execute() {
+		start();
 		if (!exceptions.isEmpty()) {
 			throw new RuntimeException("Errors while running analysis"); // TODO: add exceptions
 		}
-		// return this.exceptions;
 	}
 
 	private void startThreads(final Iterable<Thread> threads) {
@@ -199,15 +209,8 @@ public class Analysis implements UncaughtExceptionHandler {
 			LOGGER.warn("Thread " + thread + " was interrupted. Terminating analysis now.");
 			for (Stage stage : configuration.getThreadableStageJobs()) {
 				if (stage.getOwningThread() != thread) {
-					switch (stage.getTerminationStrategy()) {
-					case BY_SELF_DECISION: {
-						stage.terminate(); // onSignal would also work, but this will execute in its own Thread
-					}
-					case BY_SIGNAL: {
-						final TerminatingSignal terminatingSignal = new TerminatingSignal();
-						stage.onSignal(terminatingSignal, null);
-					}
-					default:
+					if (stage.getTerminationStrategy() == TerminationStrategy.BY_SELF_DECISION) {
+						stage.terminate();
 					}
 				}
 			}
diff --git a/src/site/markdown/wiki b/src/site/markdown/wiki
index 0e4474577e1f49bc96e734c286b2d9e0363895e8..a93581905ef7b0584d52eae1898148ffa6201a31 160000
--- a/src/site/markdown/wiki
+++ b/src/site/markdown/wiki
@@ -1 +1 @@
-Subproject commit 0e4474577e1f49bc96e734c286b2d9e0363895e8
+Subproject commit a93581905ef7b0584d52eae1898148ffa6201a31