diff --git a/Klausuren/Sd1/Ws2015/Exam/pom.xml b/Klausuren/Sd1/Ws2015/Exam/pom.xml
index 96765567d4404e130a88f3f2bb698a2dfea5e3d2..b39707ec41bb82b99fa6b1d9e8b6a3664084140e 100644
--- a/Klausuren/Sd1/Ws2015/Exam/pom.xml
+++ b/Klausuren/Sd1/Ws2015/Exam/pom.xml
@@ -3,11 +3,11 @@
 	<modelVersion>4.0.0</modelVersion>
 
 	<groupId>de.hdm-stuttgart.sw1.klausur</groupId>
-	<artifactId>sw1Exam</artifactId>
-	<version>0.8</version>
+	<artifactId>sw1Solution</artifactId>
+	<version>0.9</version>
 	<packaging>jar</packaging>
 
-	<name>sw1ExamWs2016</name>
+	<name>sw1Solution</name>
 	<url>http://maven.apache.org</url>
 
 	<properties>
@@ -15,6 +15,51 @@
 	</properties>
 	<build>
 		<plugins>
+
+			<plugin>
+				<groupId>org.codehaus.mojo</groupId>
+				<artifactId>build-helper-maven-plugin</artifactId>
+				<version>1.9.1</version>
+				<executions>
+
+					<execution>
+						<id>add-source</id>
+						<phase>generate-sources</phase>
+						<goals>
+							<goal>add-source</goal>
+						</goals>
+						<configuration>
+							<sources>
+								<source>${project.basedir}/src/test/java/</source>
+							</sources>
+						</configuration>
+					</execution>
+
+				</executions>
+			</plugin>
+
+			<plugin>
+				<groupId>org.apache.maven.plugins</groupId>
+				<artifactId>maven-shade-plugin</artifactId>
+				<version>2.4.1</version>
+				<executions>
+					<execution>
+						<phase>package</phase>
+						<goals>
+							<goal>shade</goal>
+						</goals>
+						<configuration>
+							<shadeTestJar>true</shadeTestJar>
+							<transformers>
+								<transformer
+									implementation="org.apache.maven.plugins.shade.resource.ManifestResourceTransformer">
+									<mainClass>de.hdm_stuttgart.mi.bitte_ignorieren.Run</mainClass>
+								</transformer>
+							</transformers>
+						</configuration>
+					</execution>
+				</executions>
+			</plugin>
 			<plugin>
 				<groupId>org.apache.maven.plugins</groupId>
 				<artifactId>maven-compiler-plugin</artifactId>
diff --git a/Klausuren/Sd1/Ws2015/Exam/src/test/java/de/hdm_stuttgart/mi/bitte_ignorieren/ResultCollector.java b/Klausuren/Sd1/Ws2015/Exam/src/test/java/de/hdm_stuttgart/mi/bitte_ignorieren/ResultCollector.java
index 63f497581b38077420854d2657e44e705c0e6488..cf5529bdb5c0a2a23e57d4414cd71e71f796b71d 100644
--- a/Klausuren/Sd1/Ws2015/Exam/src/test/java/de/hdm_stuttgart/mi/bitte_ignorieren/ResultCollector.java
+++ b/Klausuren/Sd1/Ws2015/Exam/src/test/java/de/hdm_stuttgart/mi/bitte_ignorieren/ResultCollector.java
@@ -12,146 +12,161 @@ import org.junit.runner.Description;
 
 public class ResultCollector extends TestWatcher {
 
-	public final Map<String, List<TestResult>> 
-	failedByDescription = new HashMap<String,  List<TestResult>>(),
-	successByDescription = new HashMap<String, List<TestResult>>();
-
-	@Override
-	protected void starting(Description description) {
-		MarkingTest.currentTestClass = description;
-	}
-
-	@Override
-	protected void failed(final Throwable e, final Description description) {
-		putAppend(failedByDescription, description.getClassName(), new TestResult(description,
-				getMarking(description), false));
-	}
-
-	@Override
-	protected void succeeded(final Description description) {
-		putAppend(successByDescription, description.getClassName(), new TestResult(description,
-				getMarking(description), true));
-	}
-
-	private static void putAppend(final Map<String, List<TestResult>> map, final String key, final TestResult testresult) {
-		List<TestResult> results = map.get(key);
-		if (null == results) {
-			results = new Vector<TestResult>();
-			map.put(key, results);
-		}
-		results.add(testresult);
-	}
-	private static Marking getMarking(final Description description) {
-
-		final Marking marking = description.getAnnotation(Marking.class);
-		if (null == marking) { // Default values: 1 point
-			return new Marking() {
-
-				@Override
-				public Class<? extends Annotation> annotationType() {
-					return Marking.class;
-				}
-
-				@Override
-				public int points() {
-					return 1;
-				}
-			};
-
-		}
-		return marking;
-	}
-
-	public String currentToString() {
-		
-		final String currentTestClassName = MarkingTest.currentTestClass.getClassName();
-
-		int reachablePoints = 0, reachedPoints = 0, numSuccessfulTests = 0;
-
-		final List<TestResult> successfulTestResults = successByDescription.get(currentTestClassName);
-
-		if (null != successfulTestResults) {
-			for (final TestResult t : successfulTestResults) {
-				reachablePoints += t.marking.points();
-				reachedPoints += t.marking.points();
-				numSuccessfulTests++;
-			}
-		}
-
-		final StringBuffer failBuffer = new StringBuffer();
-
-		final List<TestResult> failedTestResults = failedByDescription.get(currentTestClassName);
-
-		if (null != failedTestResults) {
-			for (final TestResult t : failedTestResults) {
-				reachablePoints += t.marking.points();
-				failBuffer.append("  -" + t.testMethodDisplayName + "\n");
-			}
-		}
-
-		final StringBuffer buffer = new StringBuffer();
-
-		buffer.append(currentTestClassName + ":\nYou have reached " + reachedPoints + " of "
-				+ reachablePoints + " possible points in " + numSuccessfulTests + " successful tests. ");
-
-		if (null != failedTestResults) {
-
-			final int numFailed = failedTestResults.size();
-			if (1 == numFailed) {
-				buffer.append(" The following test still fails:\n");
-			} else if (1 <  numFailed) {
-				buffer.append("\n\nThe following " + numFailed + " tests still fail:\n");
-			}
-			buffer.append(failBuffer + "\n");
-		}
-		buffer.append("\n");
-		return buffer.toString();
-	}
-	public int getReachedPoints() {
-	  int reachedPoints = 0;
-
-    for (final Entry<String, List<TestResult>> successEntries: successByDescription.entrySet()) {
-      for (final TestResult t : successEntries.getValue()) {
-        reachedPoints += t.marking.points();
+   public final Map<String, List<TestResult>> 
+   failedByDescription = new HashMap<String,  List<TestResult>>(),
+   successByDescription = new HashMap<String, List<TestResult>>();
+
+   
+   
+   @Override
+   protected void starting(Description description) {
+      MarkingTest.currentTestClass = description;
+      
+      // Init with empty list: All tests may fail!
+      // Unfortunately there is no better hook in TestWatcher.
+      if (null == failedByDescription.get(description.getClassName())) {
+         failedByDescription.put(description.getClassName(), new Vector<TestResult>());
       }
-    }
-    return reachedPoints;
-	}
-	
-	@Override
-	public String toString() {
-
-		int reachablePoints = 0, reachedPoints = 0, successfulTests = 0, failedTests = 0;
-
-		for (final Entry<String, List<TestResult>> successEntries: successByDescription.entrySet()) {
-			for (final TestResult t : successEntries.getValue()) {
-				successfulTests++;
-				reachablePoints += t.marking.points();
-				reachedPoints += t.marking.points();
-			}
-		}
-
-		final StringBuffer failBuffer = new StringBuffer();
-		for (final Entry<String, List<TestResult>> failEntries: failedByDescription.entrySet()) {
-			for (final TestResult t : failEntries.getValue()) {
-				failedTests++;
-				reachablePoints += t.marking.points();
-				failBuffer.append("  -" + t.testMethodDisplayName + "\n");
-			}
-		}
-
-		final StringBuffer buffer = new StringBuffer();
-
-		buffer.append("You have reached " + reachedPoints + " of "
-				+ reachablePoints + " possible points in "
-				+ successfulTests + " successful tests\n");
-		if (1 == failedTests) {
-			buffer.append("\n\nThe following test still fails:\n");
-		} else if (1 < failedTests) {
-			buffer.append("\n\nThe following " + failedTests
-					+ " tests still fail:\n");
-		}
-		buffer.append(failBuffer + "\n");
-		return buffer.toString();
-	}
+      if (null == successByDescription.get(description.getClassName())) {
+         successByDescription.put(description.getClassName(), new Vector<TestResult>());
+      }
+   }
+
+   @Override
+   protected void failed(final Throwable e, final Description description) {
+      putAppend(failedByDescription, description.getClassName(), new TestResult(description,
+            getMarking(description), false));
+   }
+
+   @Override
+   protected void succeeded(final Description description) {
+      putAppend(successByDescription, description.getClassName(), new TestResult(description,
+            getMarking(description), true));
+   }
+
+   private static void putAppend(final Map<String, List<TestResult>> map, final String key, final TestResult testresult) {
+      List<TestResult> results = map.get(key);
+      if (null == results) {
+         results = new Vector<TestResult>();
+         map.put(key, results);
+      }
+      results.add(testresult);
+   }
+   private static Marking getMarking(final Description description) {
+
+      final Marking marking = description.getAnnotation(Marking.class);
+      if (null == marking) { // Default values: 1 point
+         return new Marking() {
+
+            @Override
+            public Class<? extends Annotation> annotationType() {
+               return Marking.class;
+            }
+
+            @Override
+            public int points() {
+               return 1;
+            }
+         };
+
+      }
+      return marking;
+   }
+
+   public String currentToString() {
+
+      final String currentTestClassName = MarkingTest.currentTestClass.getClassName();
+
+      int reachablePoints = 0, reachedPoints = 0, numSuccessfulTests = 0;
+
+      final List<TestResult> successfulTestResults = successByDescription.get(currentTestClassName);
+
+      if (null != successfulTestResults) {
+         for (final TestResult t : successfulTestResults) {
+            reachablePoints += t.marking.points();
+            reachedPoints += t.marking.points();
+            numSuccessfulTests++;
+         }
+      }
+
+      final StringBuffer failBuffer = new StringBuffer();
+
+      final List<TestResult> failedTestResults = failedByDescription.get(currentTestClassName);
+
+      if (null != failedTestResults) {
+         for (final TestResult t : failedTestResults) {
+            reachablePoints += t.marking.points();
+            failBuffer.append("  -" + t.testMethodDisplayName + "\n");
+         }
+      }
+
+      final StringBuffer buffer = new StringBuffer();
+
+      buffer.append(currentTestClassName + ":\nYou have reached " + reachedPoints + " of "
+            + reachablePoints + " possible points in " + numSuccessfulTests + " successful tests. ");
+
+      if (null != failedTestResults) {
+
+         final int numFailed = failedTestResults.size();
+         if (1 == numFailed) {
+            buffer.append(" The following test still fails:\n");
+         } else if (1 <  numFailed) {
+            buffer.append("\n\nThe following " + numFailed + " tests still fail:\n");
+         }
+         buffer.append(failBuffer + "\n");
+      }
+      buffer.append("\n");
+      return buffer.toString();
+   }
+   
+   public String getReachedPoints() {
+      final StringBuffer ret = new StringBuffer();
+
+      for (final Entry<String, List<TestResult>> successEntries: successByDescription.entrySet()) {
+         int sum = 0;
+         for (final TestResult t : successEntries.getValue()) {
+            sum +=t.marking.points();
+         }
+
+         ret.append(successEntries.getKey() +  "   " + sum + "    ");
+      }
+      return ret.toString();
+   }
+
+   @Override
+   public String toString() {
+
+      int reachablePoints = 0, reachedPoints = 0, successfulTests = 0, failedTests = 0;
+
+      for (final Entry<String, List<TestResult>> successEntries: successByDescription.entrySet()) {
+         for (final TestResult t : successEntries.getValue()) {
+            successfulTests++;
+            reachablePoints += t.marking.points();
+            reachedPoints += t.marking.points();
+         }
+      }
+
+      final StringBuffer failBuffer = new StringBuffer();
+      for (final Entry<String, List<TestResult>> failEntries: failedByDescription.entrySet()) {
+         for (final TestResult t : failEntries.getValue()) {
+            failedTests++;
+            reachablePoints += t.marking.points();
+            failBuffer.append("  -" + t.testMethodDisplayName + "\n");
+         }
+      }
+
+      final StringBuffer buffer = new StringBuffer();
+
+      buffer.append("You have reached " + reachedPoints + " of "
+            + reachablePoints + " possible points in "
+            + successfulTests + " successful tests\n");
+      if (1 == failedTests) {
+         buffer.append("\n\nThe following test still fails:\n");
+      } else if (1 < failedTests) {
+         buffer.append("\n\nThe following " + failedTests
+               + " tests still fail:\n");
+      }
+      buffer.append(failBuffer + "\n");
+      return buffer.toString();
+   }
 }
\ No newline at end of file
diff --git a/Klausuren/Sd1/Ws2015/Exam/src/test/java/de/hdm_stuttgart/mi/bitte_ignorieren/Run.java b/Klausuren/Sd1/Ws2015/Exam/src/test/java/de/hdm_stuttgart/mi/bitte_ignorieren/Run.java
new file mode 100644
index 0000000000000000000000000000000000000000..d46c24a795aa749de1aaeb8f23a3064f942afa29
--- /dev/null
+++ b/Klausuren/Sd1/Ws2015/Exam/src/test/java/de/hdm_stuttgart/mi/bitte_ignorieren/Run.java
@@ -0,0 +1,31 @@
+package de.hdm_stuttgart.mi.bitte_ignorieren;
+
+import java.util.Set;
+
+import org.junit.runner.JUnitCore;
+
+import de.hdm_stuttgart.mi.runtests.ReachedPoints;
+
+public class Run {
+  public static void main(String[] args) {
+    JUnitCore.runClasses(ReachedPoints.class);
+    killStillRunningJUnitTestcaseThreads();
+  }
+  
+  @SuppressWarnings("deprecation")
+  private static void killStillRunningJUnitTestcaseThreads() {
+      Set<Thread> threadSet = Thread.getAllStackTraces().keySet();
+      for (Thread thread : threadSet) {
+          if (!(thread.isDaemon())) {
+              final StackTraceElement[] threadStackTrace = thread.getStackTrace();
+              if (threadStackTrace.length > 1) {
+                  StackTraceElement firstMethodInvocation = threadStackTrace[threadStackTrace.length - 1];
+                  if (firstMethodInvocation.getClassName().startsWith("org.junit")) {
+                      // HACK: must use deprecated method
+                      thread.stop();
+                  }
+              }
+          }
+      }
+  }
+}
diff --git a/Klausuren/Sd1/Ws2015/Exam/src/test/java/de/hdm_stuttgart/mi/runtests/ReachedPoints.java b/Klausuren/Sd1/Ws2015/Exam/src/test/java/de/hdm_stuttgart/mi/runtests/ReachedPoints.java
index 55976ae320a4b866f48229e0d5841dbdab72cee2..02bdb7649e8fcddbbd3e82c06b278adc12a2824d 100644
--- a/Klausuren/Sd1/Ws2015/Exam/src/test/java/de/hdm_stuttgart/mi/runtests/ReachedPoints.java
+++ b/Klausuren/Sd1/Ws2015/Exam/src/test/java/de/hdm_stuttgart/mi/runtests/ReachedPoints.java
@@ -1,5 +1,9 @@
 package de.hdm_stuttgart.mi.runtests;
 
+import java.io.IOException;
+import java.io.OutputStream;
+import java.io.PrintStream;
+
 import org.junit.AfterClass;
 import org.junit.BeforeClass;
 import org.junit.runner.RunWith;
@@ -19,12 +23,29 @@ import de.hdm_stuttgart.sw1.klausur.test.Test_SpielNaechsteRunde;
 })
 
 public class ReachedPoints {
+   
+   
+   static final PrintStream dummyStream = new PrintStream(new OutputStream() {
+
+      @Override
+      public void write(int b) throws IOException {}
+
+      @Override
+      public void write(byte[] b) throws IOException {}
+
+      @Override
+      public void write(byte[] b, int off, int len) throws IOException {}
+   });
+
+   final static PrintStream systemOutStream = System.out;
 	
 	@BeforeClass public static void init() {
+	   System.setOut(dummyStream);
 		MarkingTest.provideExtraInfo = false;
 	}
 	
 	@AfterClass public static void showResults() {
-		System.out.println("myGoikKlausurMarker:" + MarkingTest.globalresultCollector.getReachedPoints());
+	   System.setOut(systemOutStream); 
+		System.out.println(MarkingTest.globalresultCollector.getReachedPoints());
 	}
 }
diff --git a/Klausuren/Sd1/Ws2015/Exam/src/test/java/de/hdm_stuttgart/sw1/klausur/test/Test_Helper.java b/Klausuren/Sd1/Ws2015/Exam/src/test/java/de/hdm_stuttgart/sw1/klausur/test/Test_Helper.java
index 2a2eda216b50429d9bf32f61ee65c036466cad28..a901e51b8c6cc9b61965f3ac94e7fc34c1ce032e 100644
--- a/Klausuren/Sd1/Ws2015/Exam/src/test/java/de/hdm_stuttgart/sw1/klausur/test/Test_Helper.java
+++ b/Klausuren/Sd1/Ws2015/Exam/src/test/java/de/hdm_stuttgart/sw1/klausur/test/Test_Helper.java
@@ -11,56 +11,56 @@ import static de.hdm_stuttgart.sw1.klausur.Helper.*;
 public class Test_Helper  extends MarkingTest {
 
 	// Abschnitt getHaeufigkeit
-	@Test
+	@Test(timeout=1000)
 	public void test_getHaeufigkeitNullBehandlung () {
 		Assert.assertEquals(
 				0, 
 				getHaeufigkeit(3, null));
 	}
 
-	@Test
+	@Test(timeout=1000)
 	public void test_getHaeufigkeitLeerBehandlung () {
 		Assert.assertEquals(
 				0, 
 				getHaeufigkeit(3, new int[]{}));
 	}
 
-	@Test
+	@Test(timeout=1000)
 	public void test_getHaeufigkeitEinzelnPositiv () {
 		Assert.assertEquals(
 				1, 
 				getHaeufigkeit(3, new int[]{3}));
 	}
 
-	@Test
+	@Test(timeout=1000)
 	public void test_getHaeufigkeitDreiLinks() {
 		Assert.assertEquals(
 				1, 
 				getHaeufigkeit(2, new int[]{2, -1, 5}));
 	}
 
-	@Test
+	@Test(timeout=1000)
 	public void test_getHaeufigkeitDreiMitte() {
 		Assert.assertEquals(
 				1, 
 				getHaeufigkeit(2, new int[]{-1, 2, 15}));
 	}
 
-	@Test
+	@Test(timeout=1000)
 	public void test_getHaeufigkeitDreiRechts() {
 		Assert.assertEquals(
 				1, 
 				getHaeufigkeit(2, new int[]{-1, -1, 2}));
 	}
 
-	@Test
+	@Test(timeout=1000)
 	public void test_getHaeufigkeitDreiAlle() {
 		Assert.assertEquals(
 				3, 
 				getHaeufigkeit(2, new int[]{2, 2, 2}));
 	}
 
-	@Test
+	@Test(timeout=1000)
 	public void test_getHaeufigkeitZehn() {
 		Assert.assertEquals(
 				5, 
@@ -70,32 +70,32 @@ public class Test_Helper  extends MarkingTest {
 	// Abschnitt getErstenPaarIndex
 	
 	
-	@Test
+	@Test(timeout=1000)
 	public void test_getErstenPaarIndexLeer() {
 		Assert.assertTrue(getErstenGruppenIndex( new int[]{}) < 0);
 	}
 
-	@Test
+	@Test(timeout=1000)
 	public void test_getErstenPaarIndexSingle() {
 		Assert.assertTrue(getErstenGruppenIndex( new int[]{3}) < 0);
 	}
 
-	@Test
+	@Test(timeout=1000)
 	public void test_getErstenPaarIndexZweiNegativ() {
 		Assert.assertTrue(getErstenGruppenIndex( new int[]{3, -1}) < 0);
 	}
 
-	@Test
+	@Test(timeout=1000)
 	public void test_getErstenPaarIndexZweiPositiv() {
 		Assert.assertEquals(0, getErstenGruppenIndex( new int[]{-4, -4}));
 	}
 
-	@Test
+	@Test(timeout=1000)
 	public void test_getErstenPaarIndexA() {
 		Assert.assertTrue(getErstenGruppenIndex( new int[]{1, 2, 3, 4, 3, 2, 1}) < 0);
 	}
 
-	@Test
+	@Test(timeout=1000)
 	public void test_getErstenPaarIndexB() {
 		Assert.assertEquals(2, getErstenGruppenIndex( new int[]{-4, 2, 3, 3, 3, -1, 7, 4, 4, 5}));
 	}
@@ -106,49 +106,48 @@ public class Test_Helper  extends MarkingTest {
 		Assert.assertEquals(4, getZeichenHaeufigkeit('b', ""));
 	}
 	
-	@Test
+	@Test(timeout=1000)
 	public void test_getHaeufigkeitEinsPositiv() {
 		Assert.assertEquals(1, getZeichenHaeufigkeit('a', "Ein Anton"));
 	}
 	
-	@Test
+	@Test(timeout=1000)
 	public void test_getHaeufigkeitEinsNegativ() {
 		Assert.assertEquals(0, getZeichenHaeufigkeit('a', "Nix geht!"));
 	}
 	
-	@Test
+	@Test(timeout=1000)
 	public void test_getHaeufigkeitMehrfach() {
 			Assert.assertEquals(4, getZeichenHaeufigkeit('b', "Bald bleibt alles beim Alten!"));
 	}
 	
 	// Abschnitt schnittmenge
-	@Test
+	@Test(timeout=1000)
 	public void test_schnittmengeLeer1() {
 			Assert.assertArrayEquals(
 					new String[]{}, 
 					schnittmenge(new String[]{}, new String[]{}));
 	}
 		
-	@Test
+	@Test(timeout=1000)
 	public void test_schnittmengeLeer2() {
 			Assert.assertArrayEquals(
 					new String[]{}, 
 					schnittmenge(new String[]{"Bau"}, new String[]{"Urlaub", "Klausur", "Haus", "Esel"}));
 	}
 		
-	@Test
+	@Test(timeout=1000)
 	public void test_schnittmenge() {
 			Assert.assertArrayEquals(
 					new String[]{"Haus"}, 
 					schnittmenge(new String[]{"Haus", "laufen"}, new String[]{"Urlaub", "Klausur", "Haus", "Esel"}));
 	}
 		
-	@Test
+	@Test(timeout=1000)
 	public void test_schnittmengeAll() {
 		final String[] menge = new String[]{"eins", "zwei", "drei", "vier"};
 			Assert.assertArrayEquals(
 					menge, 
 					schnittmenge(menge, menge));
-	}
-		
+	}		
 }
\ No newline at end of file
diff --git a/Klausuren/Sd1/Ws2015/Exam/src/test/java/de/hdm_stuttgart/sw1/klausur/test/Test_SpielNaechsteRunde.java b/Klausuren/Sd1/Ws2015/Exam/src/test/java/de/hdm_stuttgart/sw1/klausur/test/Test_SpielNaechsteRunde.java
index 1d76ce21c4389b27ba2afbc49817f2ec2f6a5060..32d9e543229dbfd83dd51a038eecdce988b42b7b 100644
--- a/Klausuren/Sd1/Ws2015/Exam/src/test/java/de/hdm_stuttgart/sw1/klausur/test/Test_SpielNaechsteRunde.java
+++ b/Klausuren/Sd1/Ws2015/Exam/src/test/java/de/hdm_stuttgart/sw1/klausur/test/Test_SpielNaechsteRunde.java
@@ -11,14 +11,14 @@ import static de.hdm_stuttgart.sw1.klausur.Spielen.getTeilnehmerNaechsteRunde;
 @SuppressWarnings({"javadoc"})
 public class Test_SpielNaechsteRunde  extends MarkingTest {
 
-	@Test
+	@Test(timeout=1000)
 	public void nullBehandlung () {
 		Assert.assertEquals(
 				null, 
 				getTeilnehmerNaechsteRunde(null));
 	}
 
-	@Test
+	@Test(timeout=1000)
 	public void einzelnerTeilnehmer () {
 		final int[] punkte= {44};
 		Assert.assertArrayEquals(
@@ -26,7 +26,7 @@ public class Test_SpielNaechsteRunde  extends MarkingTest {
 				getTeilnehmerNaechsteRunde(punkte));
 	}
 	
-	@Test
+	@Test(timeout=1000)
 	public void zweiSpielerGleich () {
 		final int[] punkte= {2, 2};
 		Assert.assertArrayEquals(
@@ -34,7 +34,7 @@ public class Test_SpielNaechsteRunde  extends MarkingTest {
 				getTeilnehmerNaechsteRunde(punkte));
 	}
 	
-	@Test
+	@Test(timeout=1000)
 	public void zweiSpielerUngleich () {
 		final int[] punkte= {2, 1};
 		Assert.assertArrayEquals(
@@ -42,7 +42,7 @@ public class Test_SpielNaechsteRunde  extends MarkingTest {
 				getTeilnehmerNaechsteRunde(punkte));
 	}
 	
-	@Test
+	@Test(timeout=1000)
 	public void identischerPunktstand () {
 		final int[] punkte= {2, 2, 2};
 		Assert.assertArrayEquals(
@@ -50,7 +50,7 @@ public class Test_SpielNaechsteRunde  extends MarkingTest {
 				getTeilnehmerNaechsteRunde(punkte));
 	}
 	
-	@Test
+	@Test(timeout=1000)
 	public void dreiSpielerZweiGewinnerLinks () {
 		final int[] 
 				aktuell = {3, 3, 2},
@@ -58,7 +58,7 @@ public class Test_SpielNaechsteRunde  extends MarkingTest {
 		Assert.assertArrayEquals(naechste, getTeilnehmerNaechsteRunde(aktuell));
 	}
 	
-	@Test
+	@Test(timeout=1000)
 	public void dreiSpielerZweiGewinnerRechts () {
 		final int[] 
 				aktuell = {2, 3, 3},
@@ -66,7 +66,7 @@ public class Test_SpielNaechsteRunde  extends MarkingTest {
 		Assert.assertArrayEquals(naechste, getTeilnehmerNaechsteRunde(aktuell));
 	}
 	
-	@Test
+	@Test(timeout=1000)
 	public void dreiSpielerLinks () {
 		final int[] 
 				aktuell = {3, 2, 2},
@@ -74,7 +74,7 @@ public class Test_SpielNaechsteRunde  extends MarkingTest {
 		Assert.assertArrayEquals(naechste, getTeilnehmerNaechsteRunde(aktuell));
 	}
 	
-	@Test
+	@Test(timeout=1000)
 	public void dreiSpielerMitte () {
 		final int[] 
 				aktuell = {2, 3, 2},
@@ -82,7 +82,7 @@ public class Test_SpielNaechsteRunde  extends MarkingTest {
 		Assert.assertArrayEquals(naechste, getTeilnehmerNaechsteRunde(aktuell));
 	}
 	
-	@Test
+	@Test(timeout=1000)
 	public void dreiSpielerRechts () {
 		final int[] 
 				aktuell = {2, 2, 3},
@@ -90,7 +90,7 @@ public class Test_SpielNaechsteRunde  extends MarkingTest {
 		Assert.assertArrayEquals(naechste, getTeilnehmerNaechsteRunde(aktuell));
 	}
 	
-	@Test
+	@Test(timeout=1000)
 	public void vierSpieler () {
 		final int[] 
 				aktuell = {1,2,3,2},
@@ -98,7 +98,7 @@ public class Test_SpielNaechsteRunde  extends MarkingTest {
 		Assert.assertArrayEquals(naechste, getTeilnehmerNaechsteRunde(aktuell));
 	}
 	
-	@Test
+	@Test(timeout=1000)
 	@Marking(points=2)
 	public void siebenSpielerDreiGewinner () {
 		final int[] 
diff --git a/Klausuren/Sd1/Ws2015/Solution/pom.xml b/Klausuren/Sd1/Ws2015/Solution/pom.xml
index 3d911ddb9a59d52bf74e5d782e68282c3cc95f1e..b39707ec41bb82b99fa6b1d9e8b6a3664084140e 100644
--- a/Klausuren/Sd1/Ws2015/Solution/pom.xml
+++ b/Klausuren/Sd1/Ws2015/Solution/pom.xml
@@ -15,6 +15,51 @@
 	</properties>
 	<build>
 		<plugins>
+
+			<plugin>
+				<groupId>org.codehaus.mojo</groupId>
+				<artifactId>build-helper-maven-plugin</artifactId>
+				<version>1.9.1</version>
+				<executions>
+
+					<execution>
+						<id>add-source</id>
+						<phase>generate-sources</phase>
+						<goals>
+							<goal>add-source</goal>
+						</goals>
+						<configuration>
+							<sources>
+								<source>${project.basedir}/src/test/java/</source>
+							</sources>
+						</configuration>
+					</execution>
+
+				</executions>
+			</plugin>
+
+			<plugin>
+				<groupId>org.apache.maven.plugins</groupId>
+				<artifactId>maven-shade-plugin</artifactId>
+				<version>2.4.1</version>
+				<executions>
+					<execution>
+						<phase>package</phase>
+						<goals>
+							<goal>shade</goal>
+						</goals>
+						<configuration>
+							<shadeTestJar>true</shadeTestJar>
+							<transformers>
+								<transformer
+									implementation="org.apache.maven.plugins.shade.resource.ManifestResourceTransformer">
+									<mainClass>de.hdm_stuttgart.mi.bitte_ignorieren.Run</mainClass>
+								</transformer>
+							</transformers>
+						</configuration>
+					</execution>
+				</executions>
+			</plugin>
 			<plugin>
 				<groupId>org.apache.maven.plugins</groupId>
 				<artifactId>maven-compiler-plugin</artifactId>
diff --git a/Klausuren/Sd1/Ws2015/Solution/src/test/java/de/hdm_stuttgart/mi/bitte_ignorieren/ResultCollector.java b/Klausuren/Sd1/Ws2015/Solution/src/test/java/de/hdm_stuttgart/mi/bitte_ignorieren/ResultCollector.java
index 63f497581b38077420854d2657e44e705c0e6488..cf5529bdb5c0a2a23e57d4414cd71e71f796b71d 100644
--- a/Klausuren/Sd1/Ws2015/Solution/src/test/java/de/hdm_stuttgart/mi/bitte_ignorieren/ResultCollector.java
+++ b/Klausuren/Sd1/Ws2015/Solution/src/test/java/de/hdm_stuttgart/mi/bitte_ignorieren/ResultCollector.java
@@ -12,146 +12,161 @@ import org.junit.runner.Description;
 
 public class ResultCollector extends TestWatcher {
 
-	public final Map<String, List<TestResult>> 
-	failedByDescription = new HashMap<String,  List<TestResult>>(),
-	successByDescription = new HashMap<String, List<TestResult>>();
-
-	@Override
-	protected void starting(Description description) {
-		MarkingTest.currentTestClass = description;
-	}
-
-	@Override
-	protected void failed(final Throwable e, final Description description) {
-		putAppend(failedByDescription, description.getClassName(), new TestResult(description,
-				getMarking(description), false));
-	}
-
-	@Override
-	protected void succeeded(final Description description) {
-		putAppend(successByDescription, description.getClassName(), new TestResult(description,
-				getMarking(description), true));
-	}
-
-	private static void putAppend(final Map<String, List<TestResult>> map, final String key, final TestResult testresult) {
-		List<TestResult> results = map.get(key);
-		if (null == results) {
-			results = new Vector<TestResult>();
-			map.put(key, results);
-		}
-		results.add(testresult);
-	}
-	private static Marking getMarking(final Description description) {
-
-		final Marking marking = description.getAnnotation(Marking.class);
-		if (null == marking) { // Default values: 1 point
-			return new Marking() {
-
-				@Override
-				public Class<? extends Annotation> annotationType() {
-					return Marking.class;
-				}
-
-				@Override
-				public int points() {
-					return 1;
-				}
-			};
-
-		}
-		return marking;
-	}
-
-	public String currentToString() {
-		
-		final String currentTestClassName = MarkingTest.currentTestClass.getClassName();
-
-		int reachablePoints = 0, reachedPoints = 0, numSuccessfulTests = 0;
-
-		final List<TestResult> successfulTestResults = successByDescription.get(currentTestClassName);
-
-		if (null != successfulTestResults) {
-			for (final TestResult t : successfulTestResults) {
-				reachablePoints += t.marking.points();
-				reachedPoints += t.marking.points();
-				numSuccessfulTests++;
-			}
-		}
-
-		final StringBuffer failBuffer = new StringBuffer();
-
-		final List<TestResult> failedTestResults = failedByDescription.get(currentTestClassName);
-
-		if (null != failedTestResults) {
-			for (final TestResult t : failedTestResults) {
-				reachablePoints += t.marking.points();
-				failBuffer.append("  -" + t.testMethodDisplayName + "\n");
-			}
-		}
-
-		final StringBuffer buffer = new StringBuffer();
-
-		buffer.append(currentTestClassName + ":\nYou have reached " + reachedPoints + " of "
-				+ reachablePoints + " possible points in " + numSuccessfulTests + " successful tests. ");
-
-		if (null != failedTestResults) {
-
-			final int numFailed = failedTestResults.size();
-			if (1 == numFailed) {
-				buffer.append(" The following test still fails:\n");
-			} else if (1 <  numFailed) {
-				buffer.append("\n\nThe following " + numFailed + " tests still fail:\n");
-			}
-			buffer.append(failBuffer + "\n");
-		}
-		buffer.append("\n");
-		return buffer.toString();
-	}
-	public int getReachedPoints() {
-	  int reachedPoints = 0;
-
-    for (final Entry<String, List<TestResult>> successEntries: successByDescription.entrySet()) {
-      for (final TestResult t : successEntries.getValue()) {
-        reachedPoints += t.marking.points();
+   public final Map<String, List<TestResult>> 
+   failedByDescription = new HashMap<String,  List<TestResult>>(),
+   successByDescription = new HashMap<String, List<TestResult>>();
+
+   
+   
+   @Override
+   protected void starting(Description description) {
+      MarkingTest.currentTestClass = description;
+      
+      // Init with empty list: All tests may fail!
+      // Unfortunately there is no better hook in TestWatcher.
+      if (null == failedByDescription.get(description.getClassName())) {
+         failedByDescription.put(description.getClassName(), new Vector<TestResult>());
       }
-    }
-    return reachedPoints;
-	}
-	
-	@Override
-	public String toString() {
-
-		int reachablePoints = 0, reachedPoints = 0, successfulTests = 0, failedTests = 0;
-
-		for (final Entry<String, List<TestResult>> successEntries: successByDescription.entrySet()) {
-			for (final TestResult t : successEntries.getValue()) {
-				successfulTests++;
-				reachablePoints += t.marking.points();
-				reachedPoints += t.marking.points();
-			}
-		}
-
-		final StringBuffer failBuffer = new StringBuffer();
-		for (final Entry<String, List<TestResult>> failEntries: failedByDescription.entrySet()) {
-			for (final TestResult t : failEntries.getValue()) {
-				failedTests++;
-				reachablePoints += t.marking.points();
-				failBuffer.append("  -" + t.testMethodDisplayName + "\n");
-			}
-		}
-
-		final StringBuffer buffer = new StringBuffer();
-
-		buffer.append("You have reached " + reachedPoints + " of "
-				+ reachablePoints + " possible points in "
-				+ successfulTests + " successful tests\n");
-		if (1 == failedTests) {
-			buffer.append("\n\nThe following test still fails:\n");
-		} else if (1 < failedTests) {
-			buffer.append("\n\nThe following " + failedTests
-					+ " tests still fail:\n");
-		}
-		buffer.append(failBuffer + "\n");
-		return buffer.toString();
-	}
+      if (null == successByDescription.get(description.getClassName())) {
+         successByDescription.put(description.getClassName(), new Vector<TestResult>());
+      }
+   }
+
+   @Override
+   protected void failed(final Throwable e, final Description description) {
+      putAppend(failedByDescription, description.getClassName(), new TestResult(description,
+            getMarking(description), false));
+   }
+
+   @Override
+   protected void succeeded(final Description description) {
+      putAppend(successByDescription, description.getClassName(), new TestResult(description,
+            getMarking(description), true));
+   }
+
+   private static void putAppend(final Map<String, List<TestResult>> map, final String key, final TestResult testresult) {
+      List<TestResult> results = map.get(key);
+      if (null == results) {
+         results = new Vector<TestResult>();
+         map.put(key, results);
+      }
+      results.add(testresult);
+   }
+   private static Marking getMarking(final Description description) {
+
+      final Marking marking = description.getAnnotation(Marking.class);
+      if (null == marking) { // Default values: 1 point
+         return new Marking() {
+
+            @Override
+            public Class<? extends Annotation> annotationType() {
+               return Marking.class;
+            }
+
+            @Override
+            public int points() {
+               return 1;
+            }
+         };
+
+      }
+      return marking;
+   }
+
+   public String currentToString() {
+
+      final String currentTestClassName = MarkingTest.currentTestClass.getClassName();
+
+      int reachablePoints = 0, reachedPoints = 0, numSuccessfulTests = 0;
+
+      final List<TestResult> successfulTestResults = successByDescription.get(currentTestClassName);
+
+      if (null != successfulTestResults) {
+         for (final TestResult t : successfulTestResults) {
+            reachablePoints += t.marking.points();
+            reachedPoints += t.marking.points();
+            numSuccessfulTests++;
+         }
+      }
+
+      final StringBuffer failBuffer = new StringBuffer();
+
+      final List<TestResult> failedTestResults = failedByDescription.get(currentTestClassName);
+
+      if (null != failedTestResults) {
+         for (final TestResult t : failedTestResults) {
+            reachablePoints += t.marking.points();
+            failBuffer.append("  -" + t.testMethodDisplayName + "\n");
+         }
+      }
+
+      final StringBuffer buffer = new StringBuffer();
+
+      buffer.append(currentTestClassName + ":\nYou have reached " + reachedPoints + " of "
+            + reachablePoints + " possible points in " + numSuccessfulTests + " successful tests. ");
+
+      if (null != failedTestResults) {
+
+         final int numFailed = failedTestResults.size();
+         if (1 == numFailed) {
+            buffer.append(" The following test still fails:\n");
+         } else if (1 <  numFailed) {
+            buffer.append("\n\nThe following " + numFailed + " tests still fail:\n");
+         }
+         buffer.append(failBuffer + "\n");
+      }
+      buffer.append("\n");
+      return buffer.toString();
+   }
+   
+   public String getReachedPoints() {
+      final StringBuffer ret = new StringBuffer();
+
+      for (final Entry<String, List<TestResult>> successEntries: successByDescription.entrySet()) {
+         int sum = 0;
+         for (final TestResult t : successEntries.getValue()) {
+            sum +=t.marking.points();
+         }
+
+         ret.append(successEntries.getKey() +  "   " + sum + "    ");
+      }
+      return ret.toString();
+   }
+
+   @Override
+   public String toString() {
+
+      int reachablePoints = 0, reachedPoints = 0, successfulTests = 0, failedTests = 0;
+
+      for (final Entry<String, List<TestResult>> successEntries: successByDescription.entrySet()) {
+         for (final TestResult t : successEntries.getValue()) {
+            successfulTests++;
+            reachablePoints += t.marking.points();
+            reachedPoints += t.marking.points();
+         }
+      }
+
+      final StringBuffer failBuffer = new StringBuffer();
+      for (final Entry<String, List<TestResult>> failEntries: failedByDescription.entrySet()) {
+         for (final TestResult t : failEntries.getValue()) {
+            failedTests++;
+            reachablePoints += t.marking.points();
+            failBuffer.append("  -" + t.testMethodDisplayName + "\n");
+         }
+      }
+
+      final StringBuffer buffer = new StringBuffer();
+
+      buffer.append("You have reached " + reachedPoints + " of "
+            + reachablePoints + " possible points in "
+            + successfulTests + " successful tests\n");
+      if (1 == failedTests) {
+         buffer.append("\n\nThe following test still fails:\n");
+      } else if (1 < failedTests) {
+         buffer.append("\n\nThe following " + failedTests
+               + " tests still fail:\n");
+      }
+      buffer.append(failBuffer + "\n");
+      return buffer.toString();
+   }
 }
\ No newline at end of file
diff --git a/Klausuren/Sd1/Ws2015/Solution/src/test/java/de/hdm_stuttgart/mi/bitte_ignorieren/Run.java b/Klausuren/Sd1/Ws2015/Solution/src/test/java/de/hdm_stuttgart/mi/bitte_ignorieren/Run.java
new file mode 100644
index 0000000000000000000000000000000000000000..d46c24a795aa749de1aaeb8f23a3064f942afa29
--- /dev/null
+++ b/Klausuren/Sd1/Ws2015/Solution/src/test/java/de/hdm_stuttgart/mi/bitte_ignorieren/Run.java
@@ -0,0 +1,31 @@
+package de.hdm_stuttgart.mi.bitte_ignorieren;
+
+import java.util.Set;
+
+import org.junit.runner.JUnitCore;
+
+import de.hdm_stuttgart.mi.runtests.ReachedPoints;
+
+public class Run {
+  public static void main(String[] args) {
+    JUnitCore.runClasses(ReachedPoints.class);
+    killStillRunningJUnitTestcaseThreads();
+  }
+  
+  @SuppressWarnings("deprecation")
+  private static void killStillRunningJUnitTestcaseThreads() {
+      Set<Thread> threadSet = Thread.getAllStackTraces().keySet();
+      for (Thread thread : threadSet) {
+          if (!(thread.isDaemon())) {
+              final StackTraceElement[] threadStackTrace = thread.getStackTrace();
+              if (threadStackTrace.length > 1) {
+                  StackTraceElement firstMethodInvocation = threadStackTrace[threadStackTrace.length - 1];
+                  if (firstMethodInvocation.getClassName().startsWith("org.junit")) {
+                      // HACK: must use deprecated method
+                      thread.stop();
+                  }
+              }
+          }
+      }
+  }
+}
diff --git a/Klausuren/Sd1/Ws2015/Solution/src/test/java/de/hdm_stuttgart/mi/runtests/ReachedPoints.java b/Klausuren/Sd1/Ws2015/Solution/src/test/java/de/hdm_stuttgart/mi/runtests/ReachedPoints.java
index 55976ae320a4b866f48229e0d5841dbdab72cee2..02bdb7649e8fcddbbd3e82c06b278adc12a2824d 100644
--- a/Klausuren/Sd1/Ws2015/Solution/src/test/java/de/hdm_stuttgart/mi/runtests/ReachedPoints.java
+++ b/Klausuren/Sd1/Ws2015/Solution/src/test/java/de/hdm_stuttgart/mi/runtests/ReachedPoints.java
@@ -1,5 +1,9 @@
 package de.hdm_stuttgart.mi.runtests;
 
+import java.io.IOException;
+import java.io.OutputStream;
+import java.io.PrintStream;
+
 import org.junit.AfterClass;
 import org.junit.BeforeClass;
 import org.junit.runner.RunWith;
@@ -19,12 +23,29 @@ import de.hdm_stuttgart.sw1.klausur.test.Test_SpielNaechsteRunde;
 })
 
 public class ReachedPoints {
+   
+   
+   static final PrintStream dummyStream = new PrintStream(new OutputStream() {
+
+      @Override
+      public void write(int b) throws IOException {}
+
+      @Override
+      public void write(byte[] b) throws IOException {}
+
+      @Override
+      public void write(byte[] b, int off, int len) throws IOException {}
+   });
+
+   final static PrintStream systemOutStream = System.out;
 	
 	@BeforeClass public static void init() {
+	   System.setOut(dummyStream);
 		MarkingTest.provideExtraInfo = false;
 	}
 	
 	@AfterClass public static void showResults() {
-		System.out.println("myGoikKlausurMarker:" + MarkingTest.globalresultCollector.getReachedPoints());
+	   System.setOut(systemOutStream); 
+		System.out.println(MarkingTest.globalresultCollector.getReachedPoints());
 	}
 }
diff --git a/Klausuren/Sd1/Ws2015/Solution/src/test/java/de/hdm_stuttgart/sw1/klausur/test/Test_Helper.java b/Klausuren/Sd1/Ws2015/Solution/src/test/java/de/hdm_stuttgart/sw1/klausur/test/Test_Helper.java
index 2a2eda216b50429d9bf32f61ee65c036466cad28..a901e51b8c6cc9b61965f3ac94e7fc34c1ce032e 100644
--- a/Klausuren/Sd1/Ws2015/Solution/src/test/java/de/hdm_stuttgart/sw1/klausur/test/Test_Helper.java
+++ b/Klausuren/Sd1/Ws2015/Solution/src/test/java/de/hdm_stuttgart/sw1/klausur/test/Test_Helper.java
@@ -11,56 +11,56 @@ import static de.hdm_stuttgart.sw1.klausur.Helper.*;
 public class Test_Helper  extends MarkingTest {
 
 	// Abschnitt getHaeufigkeit
-	@Test
+	@Test(timeout=1000)
 	public void test_getHaeufigkeitNullBehandlung () {
 		Assert.assertEquals(
 				0, 
 				getHaeufigkeit(3, null));
 	}
 
-	@Test
+	@Test(timeout=1000)
 	public void test_getHaeufigkeitLeerBehandlung () {
 		Assert.assertEquals(
 				0, 
 				getHaeufigkeit(3, new int[]{}));
 	}
 
-	@Test
+	@Test(timeout=1000)
 	public void test_getHaeufigkeitEinzelnPositiv () {
 		Assert.assertEquals(
 				1, 
 				getHaeufigkeit(3, new int[]{3}));
 	}
 
-	@Test
+	@Test(timeout=1000)
 	public void test_getHaeufigkeitDreiLinks() {
 		Assert.assertEquals(
 				1, 
 				getHaeufigkeit(2, new int[]{2, -1, 5}));
 	}
 
-	@Test
+	@Test(timeout=1000)
 	public void test_getHaeufigkeitDreiMitte() {
 		Assert.assertEquals(
 				1, 
 				getHaeufigkeit(2, new int[]{-1, 2, 15}));
 	}
 
-	@Test
+	@Test(timeout=1000)
 	public void test_getHaeufigkeitDreiRechts() {
 		Assert.assertEquals(
 				1, 
 				getHaeufigkeit(2, new int[]{-1, -1, 2}));
 	}
 
-	@Test
+	@Test(timeout=1000)
 	public void test_getHaeufigkeitDreiAlle() {
 		Assert.assertEquals(
 				3, 
 				getHaeufigkeit(2, new int[]{2, 2, 2}));
 	}
 
-	@Test
+	@Test(timeout=1000)
 	public void test_getHaeufigkeitZehn() {
 		Assert.assertEquals(
 				5, 
@@ -70,32 +70,32 @@ public class Test_Helper  extends MarkingTest {
 	// Abschnitt getErstenPaarIndex
 	
 	
-	@Test
+	@Test(timeout=1000)
 	public void test_getErstenPaarIndexLeer() {
 		Assert.assertTrue(getErstenGruppenIndex( new int[]{}) < 0);
 	}
 
-	@Test
+	@Test(timeout=1000)
 	public void test_getErstenPaarIndexSingle() {
 		Assert.assertTrue(getErstenGruppenIndex( new int[]{3}) < 0);
 	}
 
-	@Test
+	@Test(timeout=1000)
 	public void test_getErstenPaarIndexZweiNegativ() {
 		Assert.assertTrue(getErstenGruppenIndex( new int[]{3, -1}) < 0);
 	}
 
-	@Test
+	@Test(timeout=1000)
 	public void test_getErstenPaarIndexZweiPositiv() {
 		Assert.assertEquals(0, getErstenGruppenIndex( new int[]{-4, -4}));
 	}
 
-	@Test
+	@Test(timeout=1000)
 	public void test_getErstenPaarIndexA() {
 		Assert.assertTrue(getErstenGruppenIndex( new int[]{1, 2, 3, 4, 3, 2, 1}) < 0);
 	}
 
-	@Test
+	@Test(timeout=1000)
 	public void test_getErstenPaarIndexB() {
 		Assert.assertEquals(2, getErstenGruppenIndex( new int[]{-4, 2, 3, 3, 3, -1, 7, 4, 4, 5}));
 	}
@@ -106,49 +106,48 @@ public class Test_Helper  extends MarkingTest {
 		Assert.assertEquals(4, getZeichenHaeufigkeit('b', ""));
 	}
 	
-	@Test
+	@Test(timeout=1000)
 	public void test_getHaeufigkeitEinsPositiv() {
 		Assert.assertEquals(1, getZeichenHaeufigkeit('a', "Ein Anton"));
 	}
 	
-	@Test
+	@Test(timeout=1000)
 	public void test_getHaeufigkeitEinsNegativ() {
 		Assert.assertEquals(0, getZeichenHaeufigkeit('a', "Nix geht!"));
 	}
 	
-	@Test
+	@Test(timeout=1000)
 	public void test_getHaeufigkeitMehrfach() {
 			Assert.assertEquals(4, getZeichenHaeufigkeit('b', "Bald bleibt alles beim Alten!"));
 	}
 	
 	// Abschnitt schnittmenge
-	@Test
+	@Test(timeout=1000)
 	public void test_schnittmengeLeer1() {
 			Assert.assertArrayEquals(
 					new String[]{}, 
 					schnittmenge(new String[]{}, new String[]{}));
 	}
 		
-	@Test
+	@Test(timeout=1000)
 	public void test_schnittmengeLeer2() {
 			Assert.assertArrayEquals(
 					new String[]{}, 
 					schnittmenge(new String[]{"Bau"}, new String[]{"Urlaub", "Klausur", "Haus", "Esel"}));
 	}
 		
-	@Test
+	@Test(timeout=1000)
 	public void test_schnittmenge() {
 			Assert.assertArrayEquals(
 					new String[]{"Haus"}, 
 					schnittmenge(new String[]{"Haus", "laufen"}, new String[]{"Urlaub", "Klausur", "Haus", "Esel"}));
 	}
 		
-	@Test
+	@Test(timeout=1000)
 	public void test_schnittmengeAll() {
 		final String[] menge = new String[]{"eins", "zwei", "drei", "vier"};
 			Assert.assertArrayEquals(
 					menge, 
 					schnittmenge(menge, menge));
-	}
-		
+	}		
 }
\ No newline at end of file
diff --git a/Klausuren/Sd1/Ws2015/Solution/src/test/java/de/hdm_stuttgart/sw1/klausur/test/Test_SpielNaechsteRunde.java b/Klausuren/Sd1/Ws2015/Solution/src/test/java/de/hdm_stuttgart/sw1/klausur/test/Test_SpielNaechsteRunde.java
index 1d76ce21c4389b27ba2afbc49817f2ec2f6a5060..32d9e543229dbfd83dd51a038eecdce988b42b7b 100644
--- a/Klausuren/Sd1/Ws2015/Solution/src/test/java/de/hdm_stuttgart/sw1/klausur/test/Test_SpielNaechsteRunde.java
+++ b/Klausuren/Sd1/Ws2015/Solution/src/test/java/de/hdm_stuttgart/sw1/klausur/test/Test_SpielNaechsteRunde.java
@@ -11,14 +11,14 @@ import static de.hdm_stuttgart.sw1.klausur.Spielen.getTeilnehmerNaechsteRunde;
 @SuppressWarnings({"javadoc"})
 public class Test_SpielNaechsteRunde  extends MarkingTest {
 
-	@Test
+	@Test(timeout=1000)
 	public void nullBehandlung () {
 		Assert.assertEquals(
 				null, 
 				getTeilnehmerNaechsteRunde(null));
 	}
 
-	@Test
+	@Test(timeout=1000)
 	public void einzelnerTeilnehmer () {
 		final int[] punkte= {44};
 		Assert.assertArrayEquals(
@@ -26,7 +26,7 @@ public class Test_SpielNaechsteRunde  extends MarkingTest {
 				getTeilnehmerNaechsteRunde(punkte));
 	}
 	
-	@Test
+	@Test(timeout=1000)
 	public void zweiSpielerGleich () {
 		final int[] punkte= {2, 2};
 		Assert.assertArrayEquals(
@@ -34,7 +34,7 @@ public class Test_SpielNaechsteRunde  extends MarkingTest {
 				getTeilnehmerNaechsteRunde(punkte));
 	}
 	
-	@Test
+	@Test(timeout=1000)
 	public void zweiSpielerUngleich () {
 		final int[] punkte= {2, 1};
 		Assert.assertArrayEquals(
@@ -42,7 +42,7 @@ public class Test_SpielNaechsteRunde  extends MarkingTest {
 				getTeilnehmerNaechsteRunde(punkte));
 	}
 	
-	@Test
+	@Test(timeout=1000)
 	public void identischerPunktstand () {
 		final int[] punkte= {2, 2, 2};
 		Assert.assertArrayEquals(
@@ -50,7 +50,7 @@ public class Test_SpielNaechsteRunde  extends MarkingTest {
 				getTeilnehmerNaechsteRunde(punkte));
 	}
 	
-	@Test
+	@Test(timeout=1000)
 	public void dreiSpielerZweiGewinnerLinks () {
 		final int[] 
 				aktuell = {3, 3, 2},
@@ -58,7 +58,7 @@ public class Test_SpielNaechsteRunde  extends MarkingTest {
 		Assert.assertArrayEquals(naechste, getTeilnehmerNaechsteRunde(aktuell));
 	}
 	
-	@Test
+	@Test(timeout=1000)
 	public void dreiSpielerZweiGewinnerRechts () {
 		final int[] 
 				aktuell = {2, 3, 3},
@@ -66,7 +66,7 @@ public class Test_SpielNaechsteRunde  extends MarkingTest {
 		Assert.assertArrayEquals(naechste, getTeilnehmerNaechsteRunde(aktuell));
 	}
 	
-	@Test
+	@Test(timeout=1000)
 	public void dreiSpielerLinks () {
 		final int[] 
 				aktuell = {3, 2, 2},
@@ -74,7 +74,7 @@ public class Test_SpielNaechsteRunde  extends MarkingTest {
 		Assert.assertArrayEquals(naechste, getTeilnehmerNaechsteRunde(aktuell));
 	}
 	
-	@Test
+	@Test(timeout=1000)
 	public void dreiSpielerMitte () {
 		final int[] 
 				aktuell = {2, 3, 2},
@@ -82,7 +82,7 @@ public class Test_SpielNaechsteRunde  extends MarkingTest {
 		Assert.assertArrayEquals(naechste, getTeilnehmerNaechsteRunde(aktuell));
 	}
 	
-	@Test
+	@Test(timeout=1000)
 	public void dreiSpielerRechts () {
 		final int[] 
 				aktuell = {2, 2, 3},
@@ -90,7 +90,7 @@ public class Test_SpielNaechsteRunde  extends MarkingTest {
 		Assert.assertArrayEquals(naechste, getTeilnehmerNaechsteRunde(aktuell));
 	}
 	
-	@Test
+	@Test(timeout=1000)
 	public void vierSpieler () {
 		final int[] 
 				aktuell = {1,2,3,2},
@@ -98,7 +98,7 @@ public class Test_SpielNaechsteRunde  extends MarkingTest {
 		Assert.assertArrayEquals(naechste, getTeilnehmerNaechsteRunde(aktuell));
 	}
 	
-	@Test
+	@Test(timeout=1000)
 	@Marking(points=2)
 	public void siebenSpielerDreiGewinner () {
 		final int[]