diff --git a/Klausuren/Sd1/2018winter/Exam/pom.xml b/Klausuren/Sd1/2018winter/Exam/pom.xml
index 1f3182dc770de4b392e847fe7608258a29c611a6..cbab63b6df66fbce7044a2f9ce22fc87ba498f22 100644
--- a/Klausuren/Sd1/2018winter/Exam/pom.xml
+++ b/Klausuren/Sd1/2018winter/Exam/pom.xml
@@ -68,6 +68,10 @@
                 <artifactId>maven-javadoc-plugin</artifactId>
                 <version>3.1.0</version>
                 <configuration>
+                    <additionalOptions>
+                        <additionalOption>-html5 --allow-script-in-comments -header
+                            <![CDATA['<script type="text/javascript" src="https://freedocs.mi.hdm-stuttgart.de/mathjax/MathJax.js?config=TeX-AMS-MML_HTMLorMML"></script>']]></additionalOption>
+                    </additionalOptions>
                     <javaApiLinks>
                         <property>
                             <name>api_11</name>
diff --git a/Klausuren/Sd1/2018winter/Exam/src/main/java/de/hdm_stuttgart/mi/sd1/aufgabe1/Helper.java b/Klausuren/Sd1/2018winter/Exam/src/main/java/de/hdm_stuttgart/mi/sd1/aufgabe1/_1_Helper.java
similarity index 99%
rename from Klausuren/Sd1/2018winter/Exam/src/main/java/de/hdm_stuttgart/mi/sd1/aufgabe1/Helper.java
rename to Klausuren/Sd1/2018winter/Exam/src/main/java/de/hdm_stuttgart/mi/sd1/aufgabe1/_1_Helper.java
index 2cb72260baac3b58981f03544f70cca76e9e0b74..249c66f228a976394a2d60791ebc54f82a049f80 100644
--- a/Klausuren/Sd1/2018winter/Exam/src/main/java/de/hdm_stuttgart/mi/sd1/aufgabe1/Helper.java
+++ b/Klausuren/Sd1/2018winter/Exam/src/main/java/de/hdm_stuttgart/mi/sd1/aufgabe1/_1_Helper.java
@@ -3,7 +3,7 @@ package de.hdm_stuttgart.mi.sd1.aufgabe1;
 /**
  * Hilfsmethoden.
  */
-public class Helper {
+public class _1_Helper {
 
   /**
    * Sind alle drei Strings von <code>null</code> verschieden?
diff --git a/Klausuren/Sd1/2018winter/Exam/src/main/java/de/hdm_stuttgart/mi/sd1/aufgabe1/Person.java b/Klausuren/Sd1/2018winter/Exam/src/main/java/de/hdm_stuttgart/mi/sd1/aufgabe1/_2_Person.java
similarity index 93%
rename from Klausuren/Sd1/2018winter/Exam/src/main/java/de/hdm_stuttgart/mi/sd1/aufgabe1/Person.java
rename to Klausuren/Sd1/2018winter/Exam/src/main/java/de/hdm_stuttgart/mi/sd1/aufgabe1/_2_Person.java
index d0dcac3e82f2bdca1999cb4e17ee62aa182310b0..b85b1b7dfb446c051930c9ec8a4a633ba4ada4e1 100644
--- a/Klausuren/Sd1/2018winter/Exam/src/main/java/de/hdm_stuttgart/mi/sd1/aufgabe1/Person.java
+++ b/Klausuren/Sd1/2018winter/Exam/src/main/java/de/hdm_stuttgart/mi/sd1/aufgabe1/_2_Person.java
@@ -11,7 +11,7 @@ package de.hdm_stuttgart.mi.sd1.aufgabe1;
  *
  * System.out.println(ute); <b style="color:red;">// Ausgabe: "Ute Kurz (w)"</b></pre>
  */
-public class Person {
+public class _2_Person {
 
   /**
    * Geschlechtsangabe »weiblich«
@@ -36,7 +36,7 @@ public class Person {
    * @param nachname Nachname der Person
    * @param geschlecht Geschlechtsangabe der Person.
    */
-  public Person(final String vorname, final String nachname, final char geschlecht) {
+  public _2_Person(final String vorname, final String nachname, final char geschlecht) {
     // TODO: Implementiere mich!
   }
 
diff --git a/Klausuren/Sd1/2018winter/Exam/src/main/java/de/hdm_stuttgart/mi/sd1/aufgabe1/ArrayHelper.java b/Klausuren/Sd1/2018winter/Exam/src/main/java/de/hdm_stuttgart/mi/sd1/aufgabe1/_3_ArrayHelper.java
similarity index 98%
rename from Klausuren/Sd1/2018winter/Exam/src/main/java/de/hdm_stuttgart/mi/sd1/aufgabe1/ArrayHelper.java
rename to Klausuren/Sd1/2018winter/Exam/src/main/java/de/hdm_stuttgart/mi/sd1/aufgabe1/_3_ArrayHelper.java
index 09cfd169da0bb38af1b4a68430331b1b32dff8f1..50b66f97425e92b5f416c8b0a7161db6d3e557e9 100644
--- a/Klausuren/Sd1/2018winter/Exam/src/main/java/de/hdm_stuttgart/mi/sd1/aufgabe1/ArrayHelper.java
+++ b/Klausuren/Sd1/2018winter/Exam/src/main/java/de/hdm_stuttgart/mi/sd1/aufgabe1/_3_ArrayHelper.java
@@ -5,7 +5,7 @@ import java.util.Arrays;
 /**
  * Hilfsmethoden für Arrays.
  */
-public class ArrayHelper {
+public class _3_ArrayHelper {
 
   /**
    * <p>Gesamtlänge aller in einem Array enthaltenen Strings.</p>
diff --git a/Klausuren/Sd1/2018winter/Exam/src/main/java/de/hdm_stuttgart/mi/sd1/aufgabe2/Geo.java b/Klausuren/Sd1/2018winter/Exam/src/main/java/de/hdm_stuttgart/mi/sd1/aufgabe2/Geo.java
index a01764bdcf5abad21433c35844089149d0983714..e9381af0413c8a8e9cc9341f09e9eaeb1a1d7e7c 100644
--- a/Klausuren/Sd1/2018winter/Exam/src/main/java/de/hdm_stuttgart/mi/sd1/aufgabe2/Geo.java
+++ b/Klausuren/Sd1/2018winter/Exam/src/main/java/de/hdm_stuttgart/mi/sd1/aufgabe2/Geo.java
@@ -1,7 +1,9 @@
 package de.hdm_stuttgart.mi.sd1.aufgabe2;
 
 /**
- * <p>Längen- oder Breitenangaben in Grad, Winkelminuten und Winkelsekunden. Dabei gilt:</p>
+ * Umrechnung zweier verschiedener Darstellungen von Breitenangaben.
+ *
+ * <p>Längen- oder Breitenangaben können in Grad, Winkelminuten und Winkelsekunden angegeben werden. Dabei gilt:</p>
  *
  * <ul>
  *   <li>360° Grad entsprechen dem Vollkreis.</li>
@@ -10,16 +12,156 @@ package de.hdm_stuttgart.mi.sd1.aufgabe2;
  * </ul>
  *
  * <p>Beispiel: Die geographische Breitenangabe von Stuttgart lautet <b style="color: red;">48°</b>
- * <b style="color: green;">46′</b> <b style="color: blue;">56″</b> (Nord, wird in dieser Aufgabe ignoriert). Diese
- * Darstellung als Grad, Bogenminuten und Bogensekunden kann in die dezimale Grad-Darstellung umgerechnet werden:</p>
+ * <b style="color: green;">46′</b> <b style="color: blue;">56″</b> (Nord, wird in dieser Aufgabe ignoriert).</p>
+ *
+ * <p>Alternativ gibt es auch eine dezimale Graddarstellung: Diese geht ebenfalls von einem Vollkreis zu 360° aus.
+ * Allerdings werden die Minuten- und Sekundenanteile als Dezimalbruch angegeben. Die geographische Breite
+ * <b style="color: red;">48°</b> <b style="color: green;">46′</b> <b style="color: blue;">56″</b> von Stuttgart
+ * beispielsweise ergibt sich in dieser Darstellung zu:</p>
+ *
+ * \[\color{red}{48} + {\color{green}{46}\over 60} + {\color{blue}{56} \over {60 \times 60}} = 48.782222\dots \]
+ *
+ * <p>Instanzen von {@link Geo} können aus beiden Darstellungen erzeugt werden:</p>
+ *
+ * <pre>final Geo stuttartBreite1 = new Geo(48, 46, 56),
+ *          stuttartBreite2 = new Geo(48.782222); // Identische Breite bis auf Rundungsfehler</pre>
+ *
+ * <section class="implementationHints">
+ *     <h3>Hinweis:</h3>
+ *
+ *     <p>Verwenden Sie als Interndarstellung die Angabe in Grad, Winkelminuten und -sekunden. Sie müssen dann
+ *     für den Konstruktor aus einer dezimalen <code>double</code> Gradangabe zunächst Werte wie 48.782222 in den
+ *     ganzzahligen Gradanteil 48 und den gebrochenen Anteil 0.782222 zerlegen. Dazu kann die Methode
+ *     {@link Math#floor(double)} in Zusammenarbeit mit einer cast Operation verwendet werden.</p>
+ * </section>
+ *
+ * <p>Eine Instanz von {@link Geo} stellt beide Darstellungen bereit:</p>
+ *
+ * <pre>final Geo  breite = ... ;
+ *
+ * final int grad = breite.grad,
+ *        minuten = breite.minuten,
+ *       sekunden = breite.sekunden;
+ *
+ * final double breiteDezimal = breite.getDezimal();
+ *
+ * </pre>
+ *
+ * <p>Instanzen von {@link Geo} werden im Standard wie folgt ausgegeben:</p>
+ *
+ * <table class="goikTableDefaults">
+ *     <tr>
+ *         <td>
+ *             <pre>final Geo stuttartBreite = new Geo(48.782222);
+ *System.out.println(stuttartBreite);</pre>
+ *         </td>
+ *         <td>48° 46´ 56´´</td>
+ *     </tr>
+ * </table>
+ *
+ * <p>Das Format der Ausgabe kann zur Laufzeit global für alle Instanzen gewechselt werden. Dabei werden für die
+ * Dezimaldarstellung genau sechs Nachkommastellen ausgegeben:</p>
+ *
+ * <table class="goikTableDefaults">
+ *     <tr>
+ *         <td>
+ *             <pre> ...
+ * Geo.nutzeDezimalStandard(true);
+ * System.out.println(stuttartBreite);</pre>
+ *         </td>
+ *         <td>48.782222</td>
+ *     </tr>
+ * </table>
+ *
+ * <section class="implementationHints">
+ *     <h3>Hinweis:</h3>
+ *
+ *     <p>Nutzen Sie {@link java.text.DecimalFormat} und verwenden Sie
+ *     {@link java.text.DecimalFormat#setMaximumIntegerDigits(int)} und
+ *     {@link java.text.DecimalFormat#setMaximumFractionDigits(int)}.</p>
+ * </section>
+ *
+ * <p>Instanzen von Geo sollen auf Wertgleichheit geprüft werden können:</p>
+ *
+ * <table class="goikTableDefaults">
+ *     <tr>
+ *         <td>
+ *             <pre> final Geo
+ *   g1 =      new Geo(33, 53, 19),
+ *   g2 =      new Geo(45, 22, 13),
+ *   g1_klon = new Geo(33, 53, 19);
+ *
+ * System.out.println(g1.equals(g2));
+ * System.out.println(g1.equals(g1_klon));</pre>
+ *         </td>
+ *         <td>
+ *             <pre> false
+ * true</pre>
+ *         </td>
+ *     </tr>
+ * </table>
+ *
+ * <p>Winkelangaben sollen aufsteigend sortierbar sein:</p>
+ *
+ * <table class="goikTableDefaults">
+ *     <tr>
+ *         <td>
+ *             <pre> final Geo
+ *   stuttartBreite = new Geo(48, 46, 56),
+ *   beirutBreite = new Geo(33, 53, 19),
+ *   atlantaBreite = new Geo(33, 44, 56);
+ *
+ * final Geo[] breitenAngaben =
+ *   {stuttartBreite, beirutBreite, atlantaBreite};
+ *
+ * Arrays.sort(breitenAngaben);
+ *
+ * System.out.println("Breitengrade Stuttgart, Beirut und Atlanta"
+ *     + "\naufsteigend sortiert:");
+ *
+ * for (final Geo g: breitenAngaben) {
+ *   System.out.println(g);
+ * }</pre>
+ *         </td>
+ *         <td>
+ *             <pre> Breitengrade Stuttgart, Beirut und Atlanta
+ * aufsteigend sortiert:
+ * 41° 53´ 30´´
+ * 48° 46´ 56´´
+ * 51° 28´ 38´´</pre>
+ *         </td>
+ *     </tr>
+ * </table>
+ *
+ * <section class="implementationHints">
+ *     <h3>Hinweis:</h3>
+ *
+ *     <p>Beachten Sie {@link java.lang.Comparable}.</p>
+ *
+ * </section>
+ *
+ * <p>Instanzen von {@link Geo} sind unveränderbar (immutable). Der folgende Code führt beispielsweise zu einem Compile
+ * time Fehler:</p>
+ *
+ * <table class="goikTableDefaults">
+ *     <tr>
+ *         <td>
+ *             <pre> final Geo g = new Geo(22);
+ * g.sekunden = 44;</pre>
+ *         </td>
+ *         <td style="color: red;">Cannot assign a value to final variable 'sekunden'</td>
+ *     </tr>
+ * </table>
+ *
+ * <section class="implementationHints">
+ *     <h3>Hinweis:</h3>
  *
- * <p><b style="color: red;">48</b> + <b style="color: green;">46</b>/60 + <b style="color: blue;">56</b> / 3600
- * == 48.78222222222...</p>
+ *     <p>Die Klasse {@link GeoUsageSample} enthält auskommentierten Code, welcher Ihnen als Leitlinie für die
+ *       Verwendung von {@link Geo} dienen kann.</p>
  *
- * <p>Die Klasse {@link Geo (double)} kann zur Umwandlung von Grad/Minuten/Sekundenangaben in
- * Dezimalkoordinaten und umgekehrt verwendet werden:</p>
+ * </section>
  *
  */
 public class Geo {
   // TODO: Implementiere mich!
-}
\ No newline at end of file
+}
diff --git a/Klausuren/Sd1/2018winter/Exam/src/main/java/de/hdm_stuttgart/mi/sd1/aufgabe2/extra/GeoUsageSample.java b/Klausuren/Sd1/2018winter/Exam/src/main/java/de/hdm_stuttgart/mi/sd1/aufgabe2/GeoUsageSample.java
similarity index 90%
rename from Klausuren/Sd1/2018winter/Exam/src/main/java/de/hdm_stuttgart/mi/sd1/aufgabe2/extra/GeoUsageSample.java
rename to Klausuren/Sd1/2018winter/Exam/src/main/java/de/hdm_stuttgart/mi/sd1/aufgabe2/GeoUsageSample.java
index 2e57cc9ed62cf39355bb5c9fae572d5f834095a7..e5cf6c907d22a8254f8d92878652c4fb6f896190 100644
--- a/Klausuren/Sd1/2018winter/Exam/src/main/java/de/hdm_stuttgart/mi/sd1/aufgabe2/extra/GeoUsageSample.java
+++ b/Klausuren/Sd1/2018winter/Exam/src/main/java/de/hdm_stuttgart/mi/sd1/aufgabe2/GeoUsageSample.java
@@ -1,4 +1,4 @@
-package de.hdm_stuttgart.mi.sd1.aufgabe2.extra;
+package de.hdm_stuttgart.mi.sd1.aufgabe2;
 
 
 import de.hdm_stuttgart.mi.sd1.aufgabe2.Geo;
@@ -7,6 +7,9 @@ import java.util.Arrays;
 
 /**
  * Diese Klasse dient lediglich als Beispiel zur Verwendung von {@link Geo}.
+ *
+ * <p>Sobald Sie Ihre Implementierung fertiggestellt haben, können Sie die main() Methode einkommentieren und
+ *    ausführen.</p>
  */
 public class GeoUsageSample {
 
diff --git a/Klausuren/Sd1/2018winter/Exam/src/test/java/de/hdm_stuttgart/mi/sd1/test/ShowReachedPoints.java b/Klausuren/Sd1/2018winter/Exam/src/test/java/de/hdm_stuttgart/mi/sd1/test/ShowReachedPoints.java
index 9311840ddd21fd5c375a6e59946cc6544959eb77..6bf261cfbdc3d8abeceac484c6d4f178bc8da3ae 100644
--- a/Klausuren/Sd1/2018winter/Exam/src/test/java/de/hdm_stuttgart/mi/sd1/test/ShowReachedPoints.java
+++ b/Klausuren/Sd1/2018winter/Exam/src/test/java/de/hdm_stuttgart/mi/sd1/test/ShowReachedPoints.java
@@ -1,9 +1,9 @@
 package de.hdm_stuttgart.mi.sd1.test;
 
 import de.hdm_stuttgart.mi.exam.unitmarking.RunTests;
-import de.hdm_stuttgart.mi.sd1.test.aufgabe1.Test_ArrayHelper;
-import de.hdm_stuttgart.mi.sd1.test.aufgabe1.Test_Helper;
-import de.hdm_stuttgart.mi.sd1.test.aufgabe1.Test_Person;
+import de.hdm_stuttgart.mi.sd1.test.aufgabe1.Test_3_ArrayHelper;
+import de.hdm_stuttgart.mi.sd1.test.aufgabe1.Test_1_Helper;
+import de.hdm_stuttgart.mi.sd1.test.aufgabe1.Test_2_Person;
 import de.hdm_stuttgart.mi.sd1.test.aufgabe2.Test_Geo;
 
 public class ShowReachedPoints {
@@ -15,7 +15,7 @@ public class ShowReachedPoints {
    */
   public static void main(String[] args) {
     RunTests.exec(
-      "Aufgabe 1", Test_Helper.class, Test_Person.class, Test_ArrayHelper.class
+      "Aufgabe 1", Test_1_Helper.class, Test_2_Person.class, Test_3_ArrayHelper.class
       );
     RunTests.exec("Aufgabe 2", Test_Geo.class);
   }
diff --git a/Klausuren/Sd1/2018winter/Exam/src/test/java/de/hdm_stuttgart/mi/sd1/test/aufgabe1/Test_1_Helper.java b/Klausuren/Sd1/2018winter/Exam/src/test/java/de/hdm_stuttgart/mi/sd1/test/aufgabe1/Test_1_Helper.java
new file mode 100644
index 0000000000000000000000000000000000000000..a071cc674591333272a5117b1a0ce39430d112ae
--- /dev/null
+++ b/Klausuren/Sd1/2018winter/Exam/src/test/java/de/hdm_stuttgart/mi/sd1/test/aufgabe1/Test_1_Helper.java
@@ -0,0 +1,104 @@
+package de.hdm_stuttgart.mi.sd1.test.aufgabe1;
+
+import de.hdm_stuttgart.mi.exam.unitmarking.ExaminationTestDefaults;
+import de.hdm_stuttgart.mi.exam.unitmarking.Marking;
+import de.hdm_stuttgart.mi.sd1.aufgabe1._1_Helper;
+import org.junit.Assert;
+import org.junit.FixMethodOrder;
+import org.junit.Test;
+import org.junit.runners.MethodSorters;
+
+@FixMethodOrder(MethodSorters.NAME_ASCENDING)
+@SuppressWarnings({"UnusedDeclaration"})
+public class Test_1_Helper extends ExaminationTestDefaults {
+
+  /**
+   * Abschnitt 1: 3 Strings null?
+   */
+  @Test @Marking(points = 5) public void test_100_stringsAllNull() {
+    Assert.assertTrue(_1_Helper.keinStringIstNull("", "", ""));
+    Assert.assertTrue(_1_Helper.keinStringIstNull("A", "BB", "CC"));
+
+    Assert.assertFalse(_1_Helper.keinStringIstNull(null, "XY", "Z"));
+    Assert.assertFalse(_1_Helper.keinStringIstNull("XYZ", null, "Z"));
+    Assert.assertFalse(_1_Helper.keinStringIstNull(null, null, "Z"));
+    Assert.assertFalse(_1_Helper.keinStringIstNull("XYZ", "XY", null));
+    Assert.assertFalse(_1_Helper.keinStringIstNull(null, "XY", null));
+    Assert.assertFalse(_1_Helper.keinStringIstNull("XYZ", null, null));
+    Assert.assertFalse(_1_Helper.keinStringIstNull(null, null, null));
+  }
+
+  /**
+   * Abschnitt 2: 3 Strings mit Mindestlänge 1?
+   */
+  @Test  @Marking(points = 4) public void test_200_stringsMindestLaenge() {
+    Assert.assertFalse(_1_Helper.alleMindestlaengeEins("", "", ""));
+    Assert.assertFalse(_1_Helper.alleMindestlaengeEins(null, "As", "Ass"));
+    Assert.assertFalse(_1_Helper.alleMindestlaengeEins("Nicht Null", null, "Null"));
+    Assert.assertFalse(_1_Helper.alleMindestlaengeEins("a", "b", null));
+    Assert.assertFalse(_1_Helper.alleMindestlaengeEins("", "Ces", "Def"));
+    Assert.assertFalse(_1_Helper.alleMindestlaengeEins("Ces", "", "Def"));
+    Assert.assertFalse(_1_Helper.alleMindestlaengeEins("Def", "Ces", ""));
+
+    Assert.assertTrue(_1_Helper.alleMindestlaengeEins("A", "B", "C"));
+    Assert.assertTrue(_1_Helper.alleMindestlaengeEins("A", "Brett", "Caesar"));
+  }
+
+
+  /**
+   * Abschnitt 3: Irgendwie teilbar?
+   */
+  @Test @Marking(points = 4)
+  public void test_300_teilbar() {
+    Assert.assertTrue(_1_Helper.istIrgendwieTeilbar(18, 3));
+    Assert.assertTrue(_1_Helper.istIrgendwieTeilbar(3, 18));
+    Assert.assertTrue(_1_Helper.istIrgendwieTeilbar(18, -3));
+    Assert.assertTrue(_1_Helper.istIrgendwieTeilbar(-3, 18));
+    Assert.assertTrue(_1_Helper.istIrgendwieTeilbar(-18, 3));
+    Assert.assertTrue(_1_Helper.istIrgendwieTeilbar(3, -18));
+    Assert.assertTrue(_1_Helper.istIrgendwieTeilbar(-64, -16));
+    Assert.assertTrue(_1_Helper.istIrgendwieTeilbar(-16, -64));
+  }
+  /**
+   * Sonderfall einfache 0 ist immer teilbar.
+   */
+  @Test @Marking(points = 4) public void test_320_nullIstTeilbar() {
+    Assert.assertTrue(_1_Helper.istIrgendwieTeilbar(1, 0));
+    Assert.assertTrue(_1_Helper.istIrgendwieTeilbar(0, 1));
+    Assert.assertTrue(_1_Helper.istIrgendwieTeilbar(0, 987));
+    Assert.assertTrue(_1_Helper.istIrgendwieTeilbar(-987, 0));
+  }
+  /**
+   * Sonderfall doppelte 0 ist nicht teilbar.
+   */
+  @Test public void test_340_nichtTeilbar() {
+    Assert.assertFalse(_1_Helper.istIrgendwieTeilbar(0, 0));
+    Assert.assertTrue(_1_Helper.istIrgendwieTeilbar(0, 1));
+  }
+
+
+  /**
+   * Abschnitt 4: Zeige Leerzeichen
+   */
+
+  @Test @Marking(points = 2) public void test_400_empty() {
+    Assert.assertEquals("", _1_Helper.markiereLeerzeichen(""));
+  }
+  @Test @Marking(points = 2) public void test_420_single() {
+    Assert.assertEquals("a", _1_Helper.markiereLeerzeichen("a"));
+  }
+  @Test @Marking(points = 2) public void test_430_einmalLeer() {
+    Assert.assertEquals("_a", _1_Helper.markiereLeerzeichen(" a"));
+    Assert.assertEquals("a_", _1_Helper.markiereLeerzeichen("a "));
+  }
+  @Test @Marking(points = 2) public void test_440_einmalLeer() {
+    Assert.assertEquals("abc_def", _1_Helper.markiereLeerzeichen("abc def"));
+    Assert.assertEquals("_abcdef", _1_Helper.markiereLeerzeichen(" abcdef"));
+    Assert.assertEquals("abcdef_", _1_Helper.markiereLeerzeichen("abcdef "));
+  }
+
+  @Test @Marking(points = 2) public void test_460_einmalLeer() {
+    Assert.assertEquals("__abc_def___", _1_Helper.markiereLeerzeichen("  abc def   "));
+    Assert.assertEquals("_abc___def", _1_Helper.markiereLeerzeichen(" abc   def"));
+  }
+}
\ No newline at end of file
diff --git a/Klausuren/Sd1/2018winter/Exam/src/test/java/de/hdm_stuttgart/mi/sd1/test/aufgabe1/Test_Person.java b/Klausuren/Sd1/2018winter/Exam/src/test/java/de/hdm_stuttgart/mi/sd1/test/aufgabe1/Test_2_Person.java
similarity index 59%
rename from Klausuren/Sd1/2018winter/Exam/src/test/java/de/hdm_stuttgart/mi/sd1/test/aufgabe1/Test_Person.java
rename to Klausuren/Sd1/2018winter/Exam/src/test/java/de/hdm_stuttgart/mi/sd1/test/aufgabe1/Test_2_Person.java
index 7165b09492a841b1709dce6ef6d7cc5925a7d1c5..bf3ad8b00328a10430caaa5e3a75f0771b8a4163 100644
--- a/Klausuren/Sd1/2018winter/Exam/src/test/java/de/hdm_stuttgart/mi/sd1/test/aufgabe1/Test_Person.java
+++ b/Klausuren/Sd1/2018winter/Exam/src/test/java/de/hdm_stuttgart/mi/sd1/test/aufgabe1/Test_2_Person.java
@@ -1,22 +1,22 @@
 package de.hdm_stuttgart.mi.sd1.test.aufgabe1;
 
 import de.hdm_stuttgart.mi.exam.unitmarking.Marking;
-import de.hdm_stuttgart.mi.sd1.aufgabe1.Person;
+import de.hdm_stuttgart.mi.sd1.aufgabe1._2_Person;
 import org.junit.Assert;
 import org.junit.Test;
 
-public class Test_Person {
+public class Test_2_Person {
 
   @Test @Marking(points = 7)
   public void test_100_anrede() {
 
     {
-      final Person renate = new Person("Renate", "Schulz", Person.WEIBLICH);
+      final _2_Person renate = new _2_Person("Renate", "Schulz", _2_Person.WEIBLICH);
       Assert.assertEquals("Sehr geehrte Frau Schulz", renate.getAnrede());
     }
 
     {
-      final Person uwe = new Person("Uwe", "Schick", Person.MAENNLICH);
+      final _2_Person uwe = new _2_Person("Uwe", "Schick", _2_Person.MAENNLICH);
       Assert.assertEquals("Sehr geehrter Herr Schick", uwe.getAnrede());
     }
   }
@@ -25,12 +25,12 @@ public class Test_Person {
   public void test_120_print() {
 
     {
-      final Person renate = new Person("Renate", "Schulz", Person.WEIBLICH);
+      final _2_Person renate = new _2_Person("Renate", "Schulz", _2_Person.WEIBLICH);
       Assert.assertEquals("Renate Schulz (w)", renate.toString());
     }
 
     {
-      final Person uwe = new Person("Uwe", "Schick", Person.MAENNLICH);
+      final _2_Person uwe = new _2_Person("Uwe", "Schick", _2_Person.MAENNLICH);
       Assert.assertEquals("Uwe Schick (m)", uwe.toString());
     }
   }
diff --git a/Klausuren/Sd1/2018winter/Exam/src/test/java/de/hdm_stuttgart/mi/sd1/test/aufgabe1/Test_3_ArrayHelper.java b/Klausuren/Sd1/2018winter/Exam/src/test/java/de/hdm_stuttgart/mi/sd1/test/aufgabe1/Test_3_ArrayHelper.java
new file mode 100644
index 0000000000000000000000000000000000000000..a2ec5b7ca35e6c5a84ce3cb9c229500fc671b5e4
--- /dev/null
+++ b/Klausuren/Sd1/2018winter/Exam/src/test/java/de/hdm_stuttgart/mi/sd1/test/aufgabe1/Test_3_ArrayHelper.java
@@ -0,0 +1,97 @@
+package de.hdm_stuttgart.mi.sd1.test.aufgabe1;
+
+import de.hdm_stuttgart.mi.exam.unitmarking.ExaminationTestDefaults;
+import de.hdm_stuttgart.mi.sd1.aufgabe1._3_ArrayHelper;
+import org.junit.Assert;
+import org.junit.FixMethodOrder;
+import org.junit.Test;
+import org.junit.runners.MethodSorters;
+
+@FixMethodOrder(MethodSorters.NAME_ASCENDING)
+public class Test_3_ArrayHelper extends ExaminationTestDefaults {
+
+  /**
+   * Abschnitt 1: Summe Stringlängen
+   */
+  @Test
+  public void test_100_null() {
+    Assert.assertEquals("Für null anstelle eines Arrays wird die Länge 0 erwartet",
+        0, _3_ArrayHelper.getGesamtLaenge(null));
+  }
+  @Test
+  public void test_110_arrayContentNull() {
+    Assert.assertEquals(0, _3_ArrayHelper.getGesamtLaenge(new String[]{null}));
+    Assert.assertEquals(0, _3_ArrayHelper.getGesamtLaenge(new String[]{null, null}));
+  }
+  @Test
+  public void test_112_arrayContentEmpty() {
+    Assert.assertEquals(0, _3_ArrayHelper.getGesamtLaenge(new String[]{}));
+  }
+
+  @Test
+  public void test_110_standard() {
+    Assert.assertEquals(8, _3_ArrayHelper.getGesamtLaenge(new String[]{"1", "234", "5678"}));
+  }
+
+  @Test
+  public void test_120_MixedNull() {
+    Assert.assertEquals(9, _3_ArrayHelper.getGesamtLaenge(new String[]{null, "1", null, "234", null, "56789"}));
+  }
+
+  /**
+   * Abschnitt 2: Summe Höhenanstiege
+   */
+
+  @Test public void test_200_ein() {
+    Assert.assertEquals(0, _3_ArrayHelper.getHoehenAnstieg(new int[]{111}));
+  }
+  @Test public void test_220_zwei() {
+    Assert.assertEquals(1, _3_ArrayHelper.getHoehenAnstieg(new int[]{111, 112}));
+    Assert.assertEquals(487, _3_ArrayHelper.getHoehenAnstieg(new int[]{-428, 59})); // Totes Meer / Masada
+  }
+  @Test public void test_240_standard() {
+    Assert.assertEquals(380, _3_ArrayHelper.getHoehenAnstieg(new int[]{320, 400, 530, 200, 370}));
+  }
+  @Test public void test_260_Null() {
+    Assert.assertEquals(0, _3_ArrayHelper.getHoehenAnstieg(new int[]{111, 111}));
+    Assert.assertEquals(0, _3_ArrayHelper.getHoehenAnstieg(new int[]{10, 0}));
+    Assert.assertEquals(0, _3_ArrayHelper.getHoehenAnstieg(new int[]{500, 400, 400, 300, 200, 0, -30}));
+  }
+
+  /**
+   * Abschnitt 3: Wertefolge in Array
+   */
+
+  @Test
+  public void test_300_common() {
+    Assert.assertTrue(_3_ArrayHelper.contains(new int[]{5}, new int[]{1, 5, 6, 2}));
+    Assert.assertTrue(_3_ArrayHelper.contains(new int[]{6}, new int[]{1, 5, 6, 2}));
+    Assert.assertFalse(_3_ArrayHelper.contains(new int[]{7}, new int[]{1, 5, 6, 2}));
+
+    Assert.assertTrue(_3_ArrayHelper.contains(new int[]{5, 6}, new int[]{1, 5, 6, 2}));
+    Assert.assertFalse(_3_ArrayHelper.contains(new int[]{6, 5}, new int[]{1, 5, 6, 2}));
+  }
+  @Test
+  public void test_320_limits() {
+    Assert.assertTrue(_3_ArrayHelper.contains(new int[]{1}, new int[]{1, 5, 6, 2}));
+    Assert.assertTrue(_3_ArrayHelper.contains(new int[]{1, 5}, new int[]{1, 5, 6, 2}));
+    Assert.assertTrue(_3_ArrayHelper.contains(new int[]{1, 5, 6}, new int[]{1, 5, 6, 2}));
+
+    Assert.assertTrue(_3_ArrayHelper.contains(new int[]{5, 6, 2}, new int[]{1, 5, 6, 2}));
+    Assert.assertTrue(_3_ArrayHelper.contains(new int[]{6, 2}, new int[]{1, 5, 6, 2}));
+    Assert.assertTrue(_3_ArrayHelper.contains(new int[]{2}, new int[]{1, 5, 6, 2}));
+
+    Assert.assertTrue(_3_ArrayHelper.contains(new int[]{55}, new int[]{55}));
+    Assert.assertTrue(_3_ArrayHelper.contains(new int[]{5, 6, -1, 2}, new int[]{5, 6, -1, 2}));
+
+    Assert.assertFalse(_3_ArrayHelper.contains(new int[]{6}, new int[]{1}));
+  }
+  @Test
+  public void test_340_emptyOrOversize() {
+    Assert.assertTrue(_3_ArrayHelper.contains(new int[]{}, new int[]{}));
+    Assert.assertTrue(_3_ArrayHelper.contains(new int[]{}, new int[]{1, 5, 6, 2}));
+
+    Assert.assertFalse(_3_ArrayHelper.contains(new int[]{1, 5, 6, 2}, new int[]{}));
+    Assert.assertFalse(_3_ArrayHelper.contains(new int[]{1, 5, 6, 2}, new int[]{5, 6}));
+  }
+}
\ No newline at end of file
diff --git a/Klausuren/Sd1/2018winter/Exam/src/test/java/de/hdm_stuttgart/mi/sd1/test/aufgabe1/Test_ArrayHelper.java b/Klausuren/Sd1/2018winter/Exam/src/test/java/de/hdm_stuttgart/mi/sd1/test/aufgabe1/Test_ArrayHelper.java
deleted file mode 100644
index f579daa9a8dbbadb3feb09b6ea7bd7acd349c997..0000000000000000000000000000000000000000
--- a/Klausuren/Sd1/2018winter/Exam/src/test/java/de/hdm_stuttgart/mi/sd1/test/aufgabe1/Test_ArrayHelper.java
+++ /dev/null
@@ -1,97 +0,0 @@
-package de.hdm_stuttgart.mi.sd1.test.aufgabe1;
-
-import de.hdm_stuttgart.mi.exam.unitmarking.ExaminationTestDefaults;
-import de.hdm_stuttgart.mi.sd1.aufgabe1.ArrayHelper;
-import org.junit.Assert;
-import org.junit.FixMethodOrder;
-import org.junit.Test;
-import org.junit.runners.MethodSorters;
-
-@FixMethodOrder(MethodSorters.NAME_ASCENDING)
-public class Test_ArrayHelper extends ExaminationTestDefaults {
-
-  /**
-   * Abschnitt 1: Summe Stringlängen
-   */
-  @Test
-  public void test_100_null() {
-    Assert.assertEquals("Für null anstelle eines Arrays wird die Länge 0 erwartet",
-        0, ArrayHelper.getGesamtLaenge(null));
-  }
-  @Test
-  public void test_110_arrayContentNull() {
-    Assert.assertEquals(0, ArrayHelper.getGesamtLaenge(new String[]{null}));
-    Assert.assertEquals(0, ArrayHelper.getGesamtLaenge(new String[]{null, null}));
-  }
-  @Test
-  public void test_112_arrayContentEmpty() {
-    Assert.assertEquals(0, ArrayHelper.getGesamtLaenge(new String[]{}));
-  }
-
-  @Test
-  public void test_110_standard() {
-    Assert.assertEquals(8, ArrayHelper.getGesamtLaenge(new String[]{"1", "234", "5678"}));
-  }
-
-  @Test
-  public void test_120_MixedNull() {
-    Assert.assertEquals(9, ArrayHelper.getGesamtLaenge(new String[]{null, "1", null, "234", null, "56789"}));
-  }
-
-  /**
-   * Abschnitt 2: Summe Höhenanstiege
-   */
-
-  @Test public void test_200_ein() {
-    Assert.assertEquals(0, ArrayHelper.getHoehenAnstieg(new int[]{111}));
-  }
-  @Test public void test_220_zwei() {
-    Assert.assertEquals(1, ArrayHelper.getHoehenAnstieg(new int[]{111, 112}));
-    Assert.assertEquals(487, ArrayHelper.getHoehenAnstieg(new int[]{-428, 59})); // Totes Meer / Masada
-  }
-  @Test public void test_240_standard() {
-    Assert.assertEquals(380, ArrayHelper.getHoehenAnstieg(new int[]{320, 400, 530, 200, 370}));
-  }
-  @Test public void test_260_Null() {
-    Assert.assertEquals(0, ArrayHelper.getHoehenAnstieg(new int[]{111, 111}));
-    Assert.assertEquals(0, ArrayHelper.getHoehenAnstieg(new int[]{10, 0}));
-    Assert.assertEquals(0, ArrayHelper.getHoehenAnstieg(new int[]{500, 400, 400, 300, 200, 0, -30}));
-  }
-
-  /**
-   * Abschnitt 3: Wertefolge in Array
-   */
-
-  @Test
-  public void test_300_common() {
-    Assert.assertTrue(ArrayHelper.contains(new int[]{5}, new int[]{1, 5, 6, 2}));
-    Assert.assertTrue(ArrayHelper.contains(new int[]{6}, new int[]{1, 5, 6, 2}));
-    Assert.assertFalse(ArrayHelper.contains(new int[]{7}, new int[]{1, 5, 6, 2}));
-
-    Assert.assertTrue(ArrayHelper.contains(new int[]{5, 6}, new int[]{1, 5, 6, 2}));
-    Assert.assertFalse(ArrayHelper.contains(new int[]{6, 5}, new int[]{1, 5, 6, 2}));
-  }
-  @Test
-  public void test_320_limits() {
-    Assert.assertTrue(ArrayHelper.contains(new int[]{1}, new int[]{1, 5, 6, 2}));
-    Assert.assertTrue(ArrayHelper.contains(new int[]{1, 5}, new int[]{1, 5, 6, 2}));
-    Assert.assertTrue(ArrayHelper.contains(new int[]{1, 5, 6}, new int[]{1, 5, 6, 2}));
-
-    Assert.assertTrue(ArrayHelper.contains(new int[]{5, 6, 2}, new int[]{1, 5, 6, 2}));
-    Assert.assertTrue(ArrayHelper.contains(new int[]{6, 2}, new int[]{1, 5, 6, 2}));
-    Assert.assertTrue(ArrayHelper.contains(new int[]{2}, new int[]{1, 5, 6, 2}));
-
-    Assert.assertTrue(ArrayHelper.contains(new int[]{55}, new int[]{55}));
-    Assert.assertTrue(ArrayHelper.contains(new int[]{5, 6, -1, 2}, new int[]{5, 6, -1, 2}));
-
-    Assert.assertFalse(ArrayHelper.contains(new int[]{6}, new int[]{1}));
-  }
-  @Test
-  public void test_340_emptyOrOversize() {
-    Assert.assertTrue(ArrayHelper.contains(new int[]{}, new int[]{}));
-    Assert.assertTrue(ArrayHelper.contains(new int[]{}, new int[]{1, 5, 6, 2}));
-
-    Assert.assertFalse(ArrayHelper.contains(new int[]{1, 5, 6, 2}, new int[]{}));
-    Assert.assertFalse(ArrayHelper.contains(new int[]{1, 5, 6, 2}, new int[]{5, 6}));
-  }
-}
\ No newline at end of file
diff --git a/Klausuren/Sd1/2018winter/Exam/src/test/java/de/hdm_stuttgart/mi/sd1/test/aufgabe1/Test_Helper.java b/Klausuren/Sd1/2018winter/Exam/src/test/java/de/hdm_stuttgart/mi/sd1/test/aufgabe1/Test_Helper.java
deleted file mode 100644
index 6f5090cb32e037bb32c16524835fe51b58fa810c..0000000000000000000000000000000000000000
--- a/Klausuren/Sd1/2018winter/Exam/src/test/java/de/hdm_stuttgart/mi/sd1/test/aufgabe1/Test_Helper.java
+++ /dev/null
@@ -1,104 +0,0 @@
-package de.hdm_stuttgart.mi.sd1.test.aufgabe1;
-
-import de.hdm_stuttgart.mi.exam.unitmarking.ExaminationTestDefaults;
-import de.hdm_stuttgart.mi.exam.unitmarking.Marking;
-import de.hdm_stuttgart.mi.sd1.aufgabe1.Helper;
-import org.junit.Assert;
-import org.junit.FixMethodOrder;
-import org.junit.Test;
-import org.junit.runners.MethodSorters;
-
-@FixMethodOrder(MethodSorters.NAME_ASCENDING)
-@SuppressWarnings({"UnusedDeclaration"})
-public class Test_Helper extends ExaminationTestDefaults {
-
-  /**
-   * Abschnitt 1: 3 Strings null?
-   */
-  @Test @Marking(points = 5) public void test_100_stringsAllNull() {
-    Assert.assertTrue(Helper.keinStringIstNull("", "", ""));
-    Assert.assertTrue(Helper.keinStringIstNull("A", "BB", "CC"));
-
-    Assert.assertFalse(Helper.keinStringIstNull(null, "XY", "Z"));
-    Assert.assertFalse(Helper.keinStringIstNull("XYZ", null, "Z"));
-    Assert.assertFalse(Helper.keinStringIstNull(null, null, "Z"));
-    Assert.assertFalse(Helper.keinStringIstNull("XYZ", "XY", null));
-    Assert.assertFalse(Helper.keinStringIstNull(null, "XY", null));
-    Assert.assertFalse(Helper.keinStringIstNull("XYZ", null, null));
-    Assert.assertFalse(Helper.keinStringIstNull(null, null, null));
-  }
-
-  /**
-   * Abschnitt 2: 3 Strings mit Mindestlänge 1?
-   */
-  @Test  @Marking(points = 4) public void test_200_stringsMindestLaenge() {
-    Assert.assertFalse(Helper.alleMindestlaengeEins("", "", ""));
-    Assert.assertFalse(Helper.alleMindestlaengeEins(null, "As", "Ass"));
-    Assert.assertFalse(Helper.alleMindestlaengeEins("Nicht Null", null, "Null"));
-    Assert.assertFalse(Helper.alleMindestlaengeEins("a", "b", null));
-    Assert.assertFalse(Helper.alleMindestlaengeEins("", "Ces", "Def"));
-    Assert.assertFalse(Helper.alleMindestlaengeEins("Ces", "", "Def"));
-    Assert.assertFalse(Helper.alleMindestlaengeEins("Def", "Ces", ""));
-
-    Assert.assertTrue(Helper.alleMindestlaengeEins("A", "B", "C"));
-    Assert.assertTrue(Helper.alleMindestlaengeEins("A", "Brett", "Caesar"));
-  }
-
-
-  /**
-   * Abschnitt 3: Irgendwie teilbar?
-   */
-  @Test @Marking(points = 4)
-  public void test_300_teilbar() {
-    Assert.assertTrue(Helper.istIrgendwieTeilbar(18, 3));
-    Assert.assertTrue(Helper.istIrgendwieTeilbar(3, 18));
-    Assert.assertTrue(Helper.istIrgendwieTeilbar(18, -3));
-    Assert.assertTrue(Helper.istIrgendwieTeilbar(-3, 18));
-    Assert.assertTrue(Helper.istIrgendwieTeilbar(-18, 3));
-    Assert.assertTrue(Helper.istIrgendwieTeilbar(3, -18));
-    Assert.assertTrue(Helper.istIrgendwieTeilbar(-64, -16));
-    Assert.assertTrue(Helper.istIrgendwieTeilbar(-16, -64));
-  }
-  /**
-   * Sonderfall einfache 0 ist immer teilbar.
-   */
-  @Test @Marking(points = 4) public void test_320_nullIstTeilbar() {
-    Assert.assertTrue(Helper.istIrgendwieTeilbar(1, 0));
-    Assert.assertTrue(Helper.istIrgendwieTeilbar(0, 1));
-    Assert.assertTrue(Helper.istIrgendwieTeilbar(0, 987));
-    Assert.assertTrue(Helper.istIrgendwieTeilbar(-987, 0));
-  }
-  /**
-   * Sonderfall doppelte 0 ist nicht teilbar.
-   */
-  @Test public void test_340_nichtTeilbar() {
-    Assert.assertFalse(Helper.istIrgendwieTeilbar(0, 0));
-    Assert.assertTrue(Helper.istIrgendwieTeilbar(0, 1));
-  }
-
-
-  /**
-   * Abschnitt 4: Zeige Leerzeichen
-   */
-
-  @Test @Marking(points = 2) public void test_400_empty() {
-    Assert.assertEquals("", Helper.markiereLeerzeichen(""));
-  }
-  @Test @Marking(points = 2) public void test_420_single() {
-    Assert.assertEquals("a", Helper.markiereLeerzeichen("a"));
-  }
-  @Test @Marking(points = 2) public void test_430_einmalLeer() {
-    Assert.assertEquals("_a", Helper.markiereLeerzeichen(" a"));
-    Assert.assertEquals("a_", Helper.markiereLeerzeichen("a "));
-  }
-  @Test @Marking(points = 2) public void test_440_einmalLeer() {
-    Assert.assertEquals("abc_def", Helper.markiereLeerzeichen("abc def"));
-    Assert.assertEquals("_abcdef", Helper.markiereLeerzeichen(" abcdef"));
-    Assert.assertEquals("abcdef_", Helper.markiereLeerzeichen("abcdef "));
-  }
-
-  @Test @Marking(points = 2) public void test_460_einmalLeer() {
-    Assert.assertEquals("__abc_def___", Helper.markiereLeerzeichen("  abc def   "));
-    Assert.assertEquals("_abc___def", Helper.markiereLeerzeichen(" abc   def"));
-  }
-}
\ No newline at end of file
diff --git a/Klausuren/Sd1/2018winter/Solve/pom.xml b/Klausuren/Sd1/2018winter/Solve/pom.xml
index 35581d84aeea269887bddd8037bedef0a9a9f6ef..9d337c4676dbd809864f73156c7b2a962c0946af 100644
--- a/Klausuren/Sd1/2018winter/Solve/pom.xml
+++ b/Klausuren/Sd1/2018winter/Solve/pom.xml
@@ -68,6 +68,11 @@
                 <artifactId>maven-javadoc-plugin</artifactId>
                 <version>3.1.0</version>
                 <configuration>
+                    <additionalOptions>
+                        <additionalOption>-html5 --allow-script-in-comments -header
+                            <![CDATA['<script type="text/javascript" src="https://freedocs.mi.hdm-stuttgart.de/mathjax/MathJax.js?config=TeX-AMS-MML_HTMLorMML"></script>']]></additionalOption>
+                    </additionalOptions>
+
                     <javaApiLinks>
                         <property>
                             <name>api_11</name>
diff --git a/Klausuren/Sd1/2018winter/Solve/src/main/java/de/hdm_stuttgart/mi/sd1/aufgabe1/Helper.java b/Klausuren/Sd1/2018winter/Solve/src/main/java/de/hdm_stuttgart/mi/sd1/aufgabe1/_1_Helper.java
similarity index 99%
rename from Klausuren/Sd1/2018winter/Solve/src/main/java/de/hdm_stuttgart/mi/sd1/aufgabe1/Helper.java
rename to Klausuren/Sd1/2018winter/Solve/src/main/java/de/hdm_stuttgart/mi/sd1/aufgabe1/_1_Helper.java
index e393ed9811e3340ce21a6ff9233bc49d9966e1d6..1da1d050b6560fd27ddc2665f68109c5ab4c6186 100644
--- a/Klausuren/Sd1/2018winter/Solve/src/main/java/de/hdm_stuttgart/mi/sd1/aufgabe1/Helper.java
+++ b/Klausuren/Sd1/2018winter/Solve/src/main/java/de/hdm_stuttgart/mi/sd1/aufgabe1/_1_Helper.java
@@ -3,7 +3,7 @@ package de.hdm_stuttgart.mi.sd1.aufgabe1;
 /**
  * Hilfsmethoden.
  */
-public class Helper {
+public class _1_Helper {
 
   /**
    * Sind alle drei Strings von <code>null</code> verschieden?
@@ -98,4 +98,4 @@ public class Helper {
   public static String markiereLeerzeichen(final String s) {
     return s.replace(' ', '_');
   }
-}
\ No newline at end of file
+}
diff --git a/Klausuren/Sd1/2018winter/Solve/src/main/java/de/hdm_stuttgart/mi/sd1/aufgabe1/Person.java b/Klausuren/Sd1/2018winter/Solve/src/main/java/de/hdm_stuttgart/mi/sd1/aufgabe1/_2_Person.java
similarity index 94%
rename from Klausuren/Sd1/2018winter/Solve/src/main/java/de/hdm_stuttgart/mi/sd1/aufgabe1/Person.java
rename to Klausuren/Sd1/2018winter/Solve/src/main/java/de/hdm_stuttgart/mi/sd1/aufgabe1/_2_Person.java
index 690a529adf16984effa4e4b532e32a177b989f77..d2e4cdf622efa1a6ec8f05fbd361568300edbed8 100644
--- a/Klausuren/Sd1/2018winter/Solve/src/main/java/de/hdm_stuttgart/mi/sd1/aufgabe1/Person.java
+++ b/Klausuren/Sd1/2018winter/Solve/src/main/java/de/hdm_stuttgart/mi/sd1/aufgabe1/_2_Person.java
@@ -11,7 +11,7 @@ package de.hdm_stuttgart.mi.sd1.aufgabe1;
  *
  * System.out.println(ute); <b style="color:red;">// Ausgabe: "Ute Kurz (w)"</b></pre>
  */
-public class Person {
+public class _2_Person {
 
   /**
    * Geschlechtsangabe »weiblich«
@@ -39,7 +39,7 @@ public class Person {
    * @param nachname Nachname der Person
    * @param geschlecht Geschlechtsangabe der Person.
    */
-  public Person(final String vorname, final String nachname, final char geschlecht) {
+  public _2_Person(final String vorname, final String nachname, final char geschlecht) {
     this.vorname = vorname;
     this.nachname = nachname;
     this.geschlecht = geschlecht;
@@ -63,4 +63,4 @@ public class Person {
   public String toString() {
     return vorname + " " + nachname + " (" + geschlecht + ")";
   }
-}
\ No newline at end of file
+}
diff --git a/Klausuren/Sd1/2018winter/Solve/src/main/java/de/hdm_stuttgart/mi/sd1/aufgabe1/ArrayHelper.java b/Klausuren/Sd1/2018winter/Solve/src/main/java/de/hdm_stuttgart/mi/sd1/aufgabe1/_3_ArrayHelper.java
similarity index 99%
rename from Klausuren/Sd1/2018winter/Solve/src/main/java/de/hdm_stuttgart/mi/sd1/aufgabe1/ArrayHelper.java
rename to Klausuren/Sd1/2018winter/Solve/src/main/java/de/hdm_stuttgart/mi/sd1/aufgabe1/_3_ArrayHelper.java
index a5d3fb33437c13204a692d08532d32912ebe08fc..6629b974c7155bda6c1933ac93008952df8580b4 100644
--- a/Klausuren/Sd1/2018winter/Solve/src/main/java/de/hdm_stuttgart/mi/sd1/aufgabe1/ArrayHelper.java
+++ b/Klausuren/Sd1/2018winter/Solve/src/main/java/de/hdm_stuttgart/mi/sd1/aufgabe1/_3_ArrayHelper.java
@@ -5,7 +5,7 @@ import java.util.Arrays;
 /**
  * Hilfsmethoden für Arrays.
  */
-public class ArrayHelper {
+public class _3_ArrayHelper {
 
   /**
    * <p>Gesamtlänge aller in einem Array enthaltenen Strings.</p>
@@ -84,4 +84,4 @@ public class ArrayHelper {
     }
     return false;
   }
-}
\ No newline at end of file
+}
diff --git a/Klausuren/Sd1/2018winter/Solve/src/main/java/de/hdm_stuttgart/mi/sd1/aufgabe1/package-info.java b/Klausuren/Sd1/2018winter/Solve/src/main/java/de/hdm_stuttgart/mi/sd1/aufgabe1/package-info.java
new file mode 100644
index 0000000000000000000000000000000000000000..e0285e2abc668f8285317f1c31b5b137e7d4ef70
--- /dev/null
+++ b/Klausuren/Sd1/2018winter/Solve/src/main/java/de/hdm_stuttgart/mi/sd1/aufgabe1/package-info.java
@@ -0,0 +1,15 @@
+/**
+ * Dieser Aufgabenteil enthält im Wesentlichen statische Methoden, deren Implementierung noch korrigiert werden muss.
+ *
+ * <p>Hinweise:</p>
+ *
+ * <ul>
+ *     <li><code>mvn javadoc:javadoc</code> entweder in der Shell oder über die IDE ausführen.</li>
+ *
+ *     <li>Korrespondierende Unit Tests sowie die Klasse <code>de.hdm_stuttgart.mi.sd1.test.ShowReachedPoints</code>
+ *         aus dem Test Zweig des Projekts ausführen.</li>
+ *
+ * </ul>
+ *
+ */
+package de.hdm_stuttgart.mi.sd1.aufgabe1;
\ No newline at end of file
diff --git a/Klausuren/Sd1/2018winter/Solve/src/main/java/de/hdm_stuttgart/mi/sd1/aufgabe2/Geo.java b/Klausuren/Sd1/2018winter/Solve/src/main/java/de/hdm_stuttgart/mi/sd1/aufgabe2/Geo.java
index 9fafe92496a8a0de981bddb98e2d1739e641bd83..2ebc85e076751a17a8f48ff687aa65eb7761abe2 100644
--- a/Klausuren/Sd1/2018winter/Solve/src/main/java/de/hdm_stuttgart/mi/sd1/aufgabe2/Geo.java
+++ b/Klausuren/Sd1/2018winter/Solve/src/main/java/de/hdm_stuttgart/mi/sd1/aufgabe2/Geo.java
@@ -1,9 +1,10 @@
 package de.hdm_stuttgart.mi.sd1.aufgabe2;
 
 import java.text.DecimalFormat;
-
 /**
- * <p>Längen- oder Breitenangaben in Grad, Winkelminuten und Winkelsekunden. Dabei gilt:</p>
+ * Umrechnung zweier verschiedener Darstellungen von Breitenangaben.
+ *
+ * <p>Längen- oder Breitenangaben können in Grad, Winkelminuten und Winkelsekunden angegeben werden. Dabei gilt:</p>
  *
  * <ul>
  *   <li>360° Grad entsprechen dem Vollkreis.</li>
@@ -12,14 +13,122 @@ import java.text.DecimalFormat;
  * </ul>
  *
  * <p>Beispiel: Die geographische Breitenangabe von Stuttgart lautet <b style="color: red;">48°</b>
- * <b style="color: green;">46′</b> <b style="color: blue;">56″</b> (Nord, wird in dieser Aufgabe ignoriert). Diese
- * Darstellung als Grad, Bogenminuten und Bogensekunden kann in die dezimale Grad-Darstellung umgerechnet werden:</p>
+ * <b style="color: green;">46′</b> <b style="color: blue;">56″</b> (Nord, wird in dieser Aufgabe ignoriert).</p>
+ *
+ * <p>Alternativ gibt es auch eine dezimale Graddarstellung: Diese geht ebenfalls von einem Vollkreis zu 360° aus.
+ * Allerdings werden die Minuten- und Sekundenanteile als Dezimalbruch angegeben. Die geographische Breite
+ * <b style="color: red;">48°</b> <b style="color: green;">46′</b> <b style="color: blue;">56″</b> von Stuttgart
+ * beispielsweise ergibt sich in dieser Darstellung zu:</p>
+ *
+ * \[\color{red}{48} + {\color{green}{46}\over 60} + {\color{blue}{56} \over {60 \times 60}} = 48.782222\dots \]
+ *
+ * <p>Instanzen von {@link Geo} können aus beiden Darstellungen erzeugt werden:</p>
+ *
+ * <pre>final Geo stuttartBreite1 = new Geo(48, 46, 56),
+ *          stuttartBreite2 = new Geo(48.782222); // Identische Breite bis auf Rundungsfehler</pre>
+ *
+ * <p>Eine Instanz von {@link Geo} stellt beide Darstellungen bereit:</p>
+ *
+ * <pre>final Geo  breite = ... ;
+ *
+ * final int grad = breite.grad,
+ *        minuten = breite.minuten,
+ *       sekunden = breite.sekunden;
+ *
+ * final double breiteDezimal = breite.getDezimal();
+ *
+ * </pre>
+ *
+ * <p>Instanzen von {@link Geo} werden im Standard wie folgt ausgegeben:</p>
+ *
+ * <table class="goikTableDefaults">
+ *     <tr>
+ *         <td>
+ *             <pre>final Geo stuttartBreite = new Geo(48.782222);
+ *System.out.println(stuttartBreite);</pre>
+ *         </td>
+ *         <td>48° 46´ 56´´</td>
+ *     </tr>
+ * </table>
+ *
+ * <p>Das Format der Ausgabe kann zur Laufzeit global für alle Instanzen gewechselt werden. Dabei werden für die
+ * Dezimaldarstellung genau sechs Nachkommastellen ausgegeben:</p>
+ *
+ * <table class="goikTableDefaults">
+ *     <tr>
+ *         <td>
+ *             <pre> ...
+ * Geo.nutzeDezimalStandard(true);
+ * System.out.println(stuttartBreite);</pre>
+ *         </td>
+ *         <td>48.782222</td>
+ *     </tr>
+ * </table>
+ *
+ * <p>Instanzen von Geo sollen auf Wertgleichheit geprüft werden können:</p>
+ *
+ * <table class="goikTableDefaults">
+ *     <tr>
+ *         <td>
+ *             <pre> final Geo
+ *   g1 =      new Geo(33, 53, 19),
+ *   g2 =      new Geo(45, 22, 13),
+ *   g1_klon = new Geo(33, 53, 19);
+ *
+ * System.out.println(g1.equals(g2));
+ * System.out.println(g1.equals(g1_klon));</pre>
+ *         </td>
+ *         <td>
+ *             <pre> false
+ * true</pre>
+ *         </td>
+ *     </tr>
+ * </table>
+ *
+ * <p>Winkelangaben sollen aufsteigend sortierbar sein:</p>
+ *
+ * <table class="goikTableDefaults">
+ *     <tr>
+ *         <td>
+ *             <pre> final Geo
+ *   stuttartBreite = new Geo(48, 46, 56),
+ *   beirutBreite = new Geo(33, 53, 19),
+ *   atlantaBreite = new Geo(33, 44, 56);
+ *
+ * final Geo[] breitenAngaben =
+ *   {stuttartBreite, beirutBreite, atlantaBreite};
+ *
+ * Arrays.sort(breitenAngaben);
+ *
+ * System.out.println("Breitengrade Stuttgart, Beirut und Atlanta"
+ *     + "\naufsteigend sortiert:");
+ *
+ * for (final Geo g: breitenAngaben) {
+ *   System.out.println(g);
+ * }</pre>
+ *         </td>
+ *         <td>
+ *             <pre> Breitengrade Stuttgart, Beirut und Atlanta
+ * aufsteigend sortiert:
+ * 41° 53´ 30´´
+ * 48° 46´ 56´´
+ * 51° 28´ 38´´</pre>
+ *         </td>
+ *     </tr>
+ * </table>
  *
- * <p><b style="color: red;">48</b> + <b style="color: green;">46</b>/60 + <b style="color: blue;">56</b> / 3600
- * == 48.78222222222...</p>
+ * <p>Instanzen von {@link Geo} sind unveränderbar (immutable). Der folgende Code führt beispielsweise zu einem Compile
+ * time Fehler:</p>
  *
- * <p>Die Klasse {@link Geo (double)} kann zur Umwandlung von Grad/Minuten/Sekundenangaben in
- * Dezimalkoordinaten und umgekehrt verwendet werden:</p>
+ * <table class="goikTableDefaults">
+ *     <tr>
+ *         <td>
+ *             <pre> final Geo g = new Geo(22);
+ * g.sekunden = 44;</pre>
+ *         </td>
+ *         <td>Cannot assign a value to final variable 'sekunden'</td>
+ *     </tr>
+ * </table>
  *
  */
 public class Geo implements Comparable<Geo> {
@@ -131,4 +240,4 @@ public class Geo implements Comparable<Geo> {
   public int hashCode() {
     return 3600 * grad + 60 * minuten + sekunden;
   }
-}
\ No newline at end of file
+}
diff --git a/Klausuren/Sd1/2018winter/Solve/src/main/java/de/hdm_stuttgart/mi/sd1/aufgabe2/extra/GeoUsageSample.java b/Klausuren/Sd1/2018winter/Solve/src/main/java/de/hdm_stuttgart/mi/sd1/aufgabe2/GeoUsageSample.java
similarity index 89%
rename from Klausuren/Sd1/2018winter/Solve/src/main/java/de/hdm_stuttgart/mi/sd1/aufgabe2/extra/GeoUsageSample.java
rename to Klausuren/Sd1/2018winter/Solve/src/main/java/de/hdm_stuttgart/mi/sd1/aufgabe2/GeoUsageSample.java
index a85d4a25c4c6f379fe740c65d72f7bd1a1a826f0..381bc8a9de7344b6dcfd35cc462b7527bf47656e 100644
--- a/Klausuren/Sd1/2018winter/Solve/src/main/java/de/hdm_stuttgart/mi/sd1/aufgabe2/extra/GeoUsageSample.java
+++ b/Klausuren/Sd1/2018winter/Solve/src/main/java/de/hdm_stuttgart/mi/sd1/aufgabe2/GeoUsageSample.java
@@ -1,4 +1,4 @@
-package de.hdm_stuttgart.mi.sd1.aufgabe2.extra;
+package de.hdm_stuttgart.mi.sd1.aufgabe2;
 
 
 import de.hdm_stuttgart.mi.sd1.aufgabe2.Geo;
@@ -7,13 +7,14 @@ import java.util.Arrays;
 
 /**
  * Diese Klasse dient lediglich als Beispiel zur Verwendung von {@link Geo}.
+ *
+ * <p>Sobald Sie Ihre Implementierung fertiggestellt haben, können Sie die main() Methode einkommentieren und
+ *    ausführen.</p>
  */
 public class GeoUsageSample {
 
   public static void main(String[] args) {
 
-    /*
-
     final Geo stuttartBreite = new Geo(48, 46, 56);
 
     final int breiteGrad = stuttartBreite.grad,
@@ -54,6 +55,5 @@ public class GeoUsageSample {
     // Nutze Dezimaldarstellung auf 6 Nachkommastellen
     Geo.nutzeDezimalStandard(true);
     System.out.println("Dezimaldarstellung Breite Stuttgart:" + stuttartBreite);
-     */
   }
-}
\ No newline at end of file
+}
diff --git a/Klausuren/Sd1/2018winter/Solve/src/main/java/de/hdm_stuttgart/mi/sd1/aufgabe2/package-info.java b/Klausuren/Sd1/2018winter/Solve/src/main/java/de/hdm_stuttgart/mi/sd1/aufgabe2/package-info.java
new file mode 100644
index 0000000000000000000000000000000000000000..a7e5ca8d51c63e90abbd7b239d662d86db9d6e17
--- /dev/null
+++ b/Klausuren/Sd1/2018winter/Solve/src/main/java/de/hdm_stuttgart/mi/sd1/aufgabe2/package-info.java
@@ -0,0 +1,15 @@
+/**
+ * Weitere gemäß Dokumentation zu implementierende Skelettklassen.
+ *
+ * <p>Hinweise:</p>
+ *
+ * <ul>
+ *     <li><code>mvn javadoc:javadoc</code> entweder in der Shell oder über die IDE ausführen.</li>
+ *
+ *     <li>Korrespondierende Unit Tests sowie die Klasse <code>de.hdm_stuttgart.mi.sd1.test.ShowReachedPoints</code>
+ *         aus dem Test Zweig des Projekts ausführen.</li>
+ *
+ * </ul>
+ *
+ */
+package de.hdm_stuttgart.mi.sd1.aufgabe2;
\ No newline at end of file
diff --git a/Klausuren/Sd1/2018winter/Solve/src/main/java/de/hdm_stuttgart/mi/sd1/extra/ZeitDauer.java b/Klausuren/Sd1/2018winter/Solve/src/main/java/de/hdm_stuttgart/mi/sd1/extra/ZeitDauer.java
deleted file mode 100644
index d403a178ed2b3a55f9f6c47a3432f92e76ccce8b..0000000000000000000000000000000000000000
--- a/Klausuren/Sd1/2018winter/Solve/src/main/java/de/hdm_stuttgart/mi/sd1/extra/ZeitDauer.java
+++ /dev/null
@@ -1,36 +0,0 @@
-package de.hdm_stuttgart.mi.sd1.extra;
-
-public class ZeitDauer {
-  final int stunden, minuten, sekunden;
-
-  /**
-   * Zeitangabe kleiner als 1 Tag
-   *
-   * @param stunden Werte von 0 bis 23
-   * @param minuten Werte von 0 bis 59
-   * @param sekunden Werte von 0 bis 59
-   */
-  public ZeitDauer(final int stunden, final int minuten, final int sekunden) {
-    this.stunden = stunden;
-    this.minuten = minuten;
-    this.sekunden = sekunden;
-  }
-
-  @Override
-  public boolean equals(Object o) {
-    if (o instanceof ZeitDauer) {
-      return sekunden == ((ZeitDauer) o).sekunden &&
-          minuten == ((ZeitDauer) o).minuten &&
-          stunden == ((ZeitDauer) o).stunden;
-    } else {
-      return false;
-    }
-  }
-
-  @Override public int hashCode() {
-    return sekunden + 60 * minuten + 3600 * stunden;
-  }
-  public int hashCode2() {
-    return sekunden + minuten + stunden;
-  }
-}
diff --git a/Klausuren/Sd1/2018winter/Solve/src/test/java/de/hdm_stuttgart/mi/sd1/test/ShowReachedPoints.java b/Klausuren/Sd1/2018winter/Solve/src/test/java/de/hdm_stuttgart/mi/sd1/test/ShowReachedPoints.java
index 9311840ddd21fd5c375a6e59946cc6544959eb77..1cfa2ca4e3b57583924a645e2d97eff6c1fae582 100644
--- a/Klausuren/Sd1/2018winter/Solve/src/test/java/de/hdm_stuttgart/mi/sd1/test/ShowReachedPoints.java
+++ b/Klausuren/Sd1/2018winter/Solve/src/test/java/de/hdm_stuttgart/mi/sd1/test/ShowReachedPoints.java
@@ -1,9 +1,9 @@
 package de.hdm_stuttgart.mi.sd1.test;
 
 import de.hdm_stuttgart.mi.exam.unitmarking.RunTests;
-import de.hdm_stuttgart.mi.sd1.test.aufgabe1.Test_ArrayHelper;
-import de.hdm_stuttgart.mi.sd1.test.aufgabe1.Test_Helper;
-import de.hdm_stuttgart.mi.sd1.test.aufgabe1.Test_Person;
+import de.hdm_stuttgart.mi.sd1.test.aufgabe1.Test_3_ArrayHelper;
+import de.hdm_stuttgart.mi.sd1.test.aufgabe1.Test_1_Helper;
+import de.hdm_stuttgart.mi.sd1.test.aufgabe1.Test_2_Person;
 import de.hdm_stuttgart.mi.sd1.test.aufgabe2.Test_Geo;
 
 public class ShowReachedPoints {
@@ -15,8 +15,12 @@ public class ShowReachedPoints {
    */
   public static void main(String[] args) {
     RunTests.exec(
-      "Aufgabe 1", Test_Helper.class, Test_Person.class, Test_ArrayHelper.class
+      "Aufgabe 1",
+            Test_1_Helper.class,
+            Test_2_Person.class,
+            Test_3_ArrayHelper.class
       );
-    RunTests.exec("Aufgabe 2", Test_Geo.class);
+    RunTests.exec("Aufgabe 2",
+            Test_Geo.class);
   }
-}
\ No newline at end of file
+}
diff --git a/Klausuren/Sd1/2018winter/Solve/src/test/java/de/hdm_stuttgart/mi/sd1/test/aufgabe1/Test_1_Helper.java b/Klausuren/Sd1/2018winter/Solve/src/test/java/de/hdm_stuttgart/mi/sd1/test/aufgabe1/Test_1_Helper.java
new file mode 100644
index 0000000000000000000000000000000000000000..a071cc674591333272a5117b1a0ce39430d112ae
--- /dev/null
+++ b/Klausuren/Sd1/2018winter/Solve/src/test/java/de/hdm_stuttgart/mi/sd1/test/aufgabe1/Test_1_Helper.java
@@ -0,0 +1,104 @@
+package de.hdm_stuttgart.mi.sd1.test.aufgabe1;
+
+import de.hdm_stuttgart.mi.exam.unitmarking.ExaminationTestDefaults;
+import de.hdm_stuttgart.mi.exam.unitmarking.Marking;
+import de.hdm_stuttgart.mi.sd1.aufgabe1._1_Helper;
+import org.junit.Assert;
+import org.junit.FixMethodOrder;
+import org.junit.Test;
+import org.junit.runners.MethodSorters;
+
+@FixMethodOrder(MethodSorters.NAME_ASCENDING)
+@SuppressWarnings({"UnusedDeclaration"})
+public class Test_1_Helper extends ExaminationTestDefaults {
+
+  /**
+   * Abschnitt 1: 3 Strings null?
+   */
+  @Test @Marking(points = 5) public void test_100_stringsAllNull() {
+    Assert.assertTrue(_1_Helper.keinStringIstNull("", "", ""));
+    Assert.assertTrue(_1_Helper.keinStringIstNull("A", "BB", "CC"));
+
+    Assert.assertFalse(_1_Helper.keinStringIstNull(null, "XY", "Z"));
+    Assert.assertFalse(_1_Helper.keinStringIstNull("XYZ", null, "Z"));
+    Assert.assertFalse(_1_Helper.keinStringIstNull(null, null, "Z"));
+    Assert.assertFalse(_1_Helper.keinStringIstNull("XYZ", "XY", null));
+    Assert.assertFalse(_1_Helper.keinStringIstNull(null, "XY", null));
+    Assert.assertFalse(_1_Helper.keinStringIstNull("XYZ", null, null));
+    Assert.assertFalse(_1_Helper.keinStringIstNull(null, null, null));
+  }
+
+  /**
+   * Abschnitt 2: 3 Strings mit Mindestlänge 1?
+   */
+  @Test  @Marking(points = 4) public void test_200_stringsMindestLaenge() {
+    Assert.assertFalse(_1_Helper.alleMindestlaengeEins("", "", ""));
+    Assert.assertFalse(_1_Helper.alleMindestlaengeEins(null, "As", "Ass"));
+    Assert.assertFalse(_1_Helper.alleMindestlaengeEins("Nicht Null", null, "Null"));
+    Assert.assertFalse(_1_Helper.alleMindestlaengeEins("a", "b", null));
+    Assert.assertFalse(_1_Helper.alleMindestlaengeEins("", "Ces", "Def"));
+    Assert.assertFalse(_1_Helper.alleMindestlaengeEins("Ces", "", "Def"));
+    Assert.assertFalse(_1_Helper.alleMindestlaengeEins("Def", "Ces", ""));
+
+    Assert.assertTrue(_1_Helper.alleMindestlaengeEins("A", "B", "C"));
+    Assert.assertTrue(_1_Helper.alleMindestlaengeEins("A", "Brett", "Caesar"));
+  }
+
+
+  /**
+   * Abschnitt 3: Irgendwie teilbar?
+   */
+  @Test @Marking(points = 4)
+  public void test_300_teilbar() {
+    Assert.assertTrue(_1_Helper.istIrgendwieTeilbar(18, 3));
+    Assert.assertTrue(_1_Helper.istIrgendwieTeilbar(3, 18));
+    Assert.assertTrue(_1_Helper.istIrgendwieTeilbar(18, -3));
+    Assert.assertTrue(_1_Helper.istIrgendwieTeilbar(-3, 18));
+    Assert.assertTrue(_1_Helper.istIrgendwieTeilbar(-18, 3));
+    Assert.assertTrue(_1_Helper.istIrgendwieTeilbar(3, -18));
+    Assert.assertTrue(_1_Helper.istIrgendwieTeilbar(-64, -16));
+    Assert.assertTrue(_1_Helper.istIrgendwieTeilbar(-16, -64));
+  }
+  /**
+   * Sonderfall einfache 0 ist immer teilbar.
+   */
+  @Test @Marking(points = 4) public void test_320_nullIstTeilbar() {
+    Assert.assertTrue(_1_Helper.istIrgendwieTeilbar(1, 0));
+    Assert.assertTrue(_1_Helper.istIrgendwieTeilbar(0, 1));
+    Assert.assertTrue(_1_Helper.istIrgendwieTeilbar(0, 987));
+    Assert.assertTrue(_1_Helper.istIrgendwieTeilbar(-987, 0));
+  }
+  /**
+   * Sonderfall doppelte 0 ist nicht teilbar.
+   */
+  @Test public void test_340_nichtTeilbar() {
+    Assert.assertFalse(_1_Helper.istIrgendwieTeilbar(0, 0));
+    Assert.assertTrue(_1_Helper.istIrgendwieTeilbar(0, 1));
+  }
+
+
+  /**
+   * Abschnitt 4: Zeige Leerzeichen
+   */
+
+  @Test @Marking(points = 2) public void test_400_empty() {
+    Assert.assertEquals("", _1_Helper.markiereLeerzeichen(""));
+  }
+  @Test @Marking(points = 2) public void test_420_single() {
+    Assert.assertEquals("a", _1_Helper.markiereLeerzeichen("a"));
+  }
+  @Test @Marking(points = 2) public void test_430_einmalLeer() {
+    Assert.assertEquals("_a", _1_Helper.markiereLeerzeichen(" a"));
+    Assert.assertEquals("a_", _1_Helper.markiereLeerzeichen("a "));
+  }
+  @Test @Marking(points = 2) public void test_440_einmalLeer() {
+    Assert.assertEquals("abc_def", _1_Helper.markiereLeerzeichen("abc def"));
+    Assert.assertEquals("_abcdef", _1_Helper.markiereLeerzeichen(" abcdef"));
+    Assert.assertEquals("abcdef_", _1_Helper.markiereLeerzeichen("abcdef "));
+  }
+
+  @Test @Marking(points = 2) public void test_460_einmalLeer() {
+    Assert.assertEquals("__abc_def___", _1_Helper.markiereLeerzeichen("  abc def   "));
+    Assert.assertEquals("_abc___def", _1_Helper.markiereLeerzeichen(" abc   def"));
+  }
+}
\ No newline at end of file
diff --git a/Klausuren/Sd1/2018winter/Solve/src/test/java/de/hdm_stuttgart/mi/sd1/test/aufgabe1/Test_Person.java b/Klausuren/Sd1/2018winter/Solve/src/test/java/de/hdm_stuttgart/mi/sd1/test/aufgabe1/Test_2_Person.java
similarity index 59%
rename from Klausuren/Sd1/2018winter/Solve/src/test/java/de/hdm_stuttgart/mi/sd1/test/aufgabe1/Test_Person.java
rename to Klausuren/Sd1/2018winter/Solve/src/test/java/de/hdm_stuttgart/mi/sd1/test/aufgabe1/Test_2_Person.java
index 7165b09492a841b1709dce6ef6d7cc5925a7d1c5..bf3ad8b00328a10430caaa5e3a75f0771b8a4163 100644
--- a/Klausuren/Sd1/2018winter/Solve/src/test/java/de/hdm_stuttgart/mi/sd1/test/aufgabe1/Test_Person.java
+++ b/Klausuren/Sd1/2018winter/Solve/src/test/java/de/hdm_stuttgart/mi/sd1/test/aufgabe1/Test_2_Person.java
@@ -1,22 +1,22 @@
 package de.hdm_stuttgart.mi.sd1.test.aufgabe1;
 
 import de.hdm_stuttgart.mi.exam.unitmarking.Marking;
-import de.hdm_stuttgart.mi.sd1.aufgabe1.Person;
+import de.hdm_stuttgart.mi.sd1.aufgabe1._2_Person;
 import org.junit.Assert;
 import org.junit.Test;
 
-public class Test_Person {
+public class Test_2_Person {
 
   @Test @Marking(points = 7)
   public void test_100_anrede() {
 
     {
-      final Person renate = new Person("Renate", "Schulz", Person.WEIBLICH);
+      final _2_Person renate = new _2_Person("Renate", "Schulz", _2_Person.WEIBLICH);
       Assert.assertEquals("Sehr geehrte Frau Schulz", renate.getAnrede());
     }
 
     {
-      final Person uwe = new Person("Uwe", "Schick", Person.MAENNLICH);
+      final _2_Person uwe = new _2_Person("Uwe", "Schick", _2_Person.MAENNLICH);
       Assert.assertEquals("Sehr geehrter Herr Schick", uwe.getAnrede());
     }
   }
@@ -25,12 +25,12 @@ public class Test_Person {
   public void test_120_print() {
 
     {
-      final Person renate = new Person("Renate", "Schulz", Person.WEIBLICH);
+      final _2_Person renate = new _2_Person("Renate", "Schulz", _2_Person.WEIBLICH);
       Assert.assertEquals("Renate Schulz (w)", renate.toString());
     }
 
     {
-      final Person uwe = new Person("Uwe", "Schick", Person.MAENNLICH);
+      final _2_Person uwe = new _2_Person("Uwe", "Schick", _2_Person.MAENNLICH);
       Assert.assertEquals("Uwe Schick (m)", uwe.toString());
     }
   }
diff --git a/Klausuren/Sd1/2018winter/Solve/src/test/java/de/hdm_stuttgart/mi/sd1/test/aufgabe1/Test_3_ArrayHelper.java b/Klausuren/Sd1/2018winter/Solve/src/test/java/de/hdm_stuttgart/mi/sd1/test/aufgabe1/Test_3_ArrayHelper.java
new file mode 100644
index 0000000000000000000000000000000000000000..c8a662e95dca8e5ee4fdc882f1486989ccba1e4e
--- /dev/null
+++ b/Klausuren/Sd1/2018winter/Solve/src/test/java/de/hdm_stuttgart/mi/sd1/test/aufgabe1/Test_3_ArrayHelper.java
@@ -0,0 +1,95 @@
+package de.hdm_stuttgart.mi.sd1.test.aufgabe1;
+
+import de.hdm_stuttgart.mi.exam.unitmarking.ExaminationTestDefaults;
+import de.hdm_stuttgart.mi.sd1.aufgabe1._3_ArrayHelper;
+import org.junit.Assert;
+import org.junit.FixMethodOrder;
+import org.junit.Test;
+import org.junit.runners.MethodSorters;
+
+@FixMethodOrder(MethodSorters.NAME_ASCENDING)
+public class Test_3_ArrayHelper extends ExaminationTestDefaults {
+
+  /**
+   * Abschnitt 1: Summe Stringlängen
+   */
+  @Test
+  public void test_100_null() {
+    Assert.assertEquals("Für null anstelle eines Arrays wird die Länge 0 erwartet",
+        0, _3_ArrayHelper.getGesamtLaenge(null));
+  }
+  @Test
+  public void test_110_arrayContentNull() {
+    Assert.assertEquals(0, _3_ArrayHelper.getGesamtLaenge(new String[]{null}));
+    Assert.assertEquals(0, _3_ArrayHelper.getGesamtLaenge(new String[]{null, null}));
+  }
+  @Test
+  public void test_112_arrayContentEmpty() {
+    Assert.assertEquals(0, _3_ArrayHelper.getGesamtLaenge(new String[]{}));
+  }
+
+  @Test
+  public void test_110_standard() {
+    Assert.assertEquals(8, _3_ArrayHelper.getGesamtLaenge(new String[]{"1", "234", "5678"}));
+  }
+
+  @Test
+  public void test_120_MixedNull() {
+    Assert.assertEquals(9, _3_ArrayHelper.getGesamtLaenge(new String[]{null, "1", null, "234", null, "56789"}));
+  }
+
+  /**
+   * Abschnitt 2: Summe Höhenanstiege
+   */
+
+  @Test public void test_200_ein() {
+    Assert.assertEquals(0, _3_ArrayHelper.getHoehenAnstieg(new int[]{111}));
+  }
+  @Test public void test_220_zwei() {
+    Assert.assertEquals(1, _3_ArrayHelper.getHoehenAnstieg(new int[]{111, 112}));
+    Assert.assertEquals(487, _3_ArrayHelper.getHoehenAnstieg(new int[]{-428, 59})); // Totes Meer / Masada
+  }
+  @Test public void test_240_standard() {
+    Assert.assertEquals(380, _3_ArrayHelper.getHoehenAnstieg(new int[]{320, 400, 530, 200, 370}));
+  }
+  @Test public void test_260_Null() {
+    Assert.assertEquals(0, _3_ArrayHelper.getHoehenAnstieg(new int[]{111, 111}));
+    Assert.assertEquals(0, _3_ArrayHelper.getHoehenAnstieg(new int[]{10, 0}));
+    Assert.assertEquals(0, _3_ArrayHelper.getHoehenAnstieg(new int[]{500, 400, 400, 300, 200, 0, -30}));
+  }
+
+  /**
+   * Abschnitt 3: Wertefolge in Array
+   */
+
+  @Test
+  public void test_300_common() {
+    Assert.assertTrue(_3_ArrayHelper.contains(new int[]{5}, new int[]{1, 5, 6, 2}));
+    Assert.assertTrue(_3_ArrayHelper.contains(new int[]{6}, new int[]{1, 5, 6, 2}));
+    Assert.assertFalse(_3_ArrayHelper.contains(new int[]{7}, new int[]{1, 5, 6, 2}));
+
+    Assert.assertTrue(_3_ArrayHelper.contains(new int[]{5, 6}, new int[]{1, 5, 6, 2}));
+    Assert.assertFalse(_3_ArrayHelper.contains(new int[]{6, 5}, new int[]{1, 5, 6, 2}));
+  }
+  @Test
+  public void test_320_limits() {
+    Assert.assertTrue(_3_ArrayHelper.contains(new int[]{1}, new int[]{1, 5, 6, 2}));
+    Assert.assertTrue(_3_ArrayHelper.contains(new int[]{1, 5}, new int[]{1, 5, 6, 2}));
+    Assert.assertTrue(_3_ArrayHelper.contains(new int[]{1, 5, 6}, new int[]{1, 5, 6, 2}));
+
+    Assert.assertTrue(_3_ArrayHelper.contains(new int[]{5, 6, 2}, new int[]{1, 5, 6, 2}));
+    Assert.assertTrue(_3_ArrayHelper.contains(new int[]{6, 2}, new int[]{1, 5, 6, 2}));
+    Assert.assertTrue(_3_ArrayHelper.contains(new int[]{2}, new int[]{1, 5, 6, 2}));
+
+    Assert.assertTrue(_3_ArrayHelper.contains(new int[]{55}, new int[]{55}));
+    Assert.assertTrue(_3_ArrayHelper.contains(new int[]{5, 6, -1, 2}, new int[]{5, 6, -1, 2}));
+  }
+  @Test
+  public void test_340_emptyOrOversize() {
+    Assert.assertTrue(_3_ArrayHelper.contains(new int[]{}, new int[]{}));
+    Assert.assertTrue(_3_ArrayHelper.contains(new int[]{}, new int[]{1, 5, 6, 2}));
+
+    Assert.assertFalse(_3_ArrayHelper.contains(new int[]{1, 5, 6, 2}, new int[]{}));
+    Assert.assertFalse(_3_ArrayHelper.contains(new int[]{1, 5, 6, 2}, new int[]{5, 6}));
+  }
+}
\ No newline at end of file
diff --git a/Klausuren/Sd1/2018winter/Solve/src/test/java/de/hdm_stuttgart/mi/sd1/test/aufgabe1/Test_ArrayHelper.java b/Klausuren/Sd1/2018winter/Solve/src/test/java/de/hdm_stuttgart/mi/sd1/test/aufgabe1/Test_ArrayHelper.java
deleted file mode 100644
index c0f5fb50c290f757f51a3923d552d1d5865749cf..0000000000000000000000000000000000000000
--- a/Klausuren/Sd1/2018winter/Solve/src/test/java/de/hdm_stuttgart/mi/sd1/test/aufgabe1/Test_ArrayHelper.java
+++ /dev/null
@@ -1,95 +0,0 @@
-package de.hdm_stuttgart.mi.sd1.test.aufgabe1;
-
-import de.hdm_stuttgart.mi.exam.unitmarking.ExaminationTestDefaults;
-import de.hdm_stuttgart.mi.sd1.aufgabe1.ArrayHelper;
-import org.junit.Assert;
-import org.junit.FixMethodOrder;
-import org.junit.Test;
-import org.junit.runners.MethodSorters;
-
-@FixMethodOrder(MethodSorters.NAME_ASCENDING)
-public class Test_ArrayHelper extends ExaminationTestDefaults {
-
-  /**
-   * Abschnitt 1: Summe Stringlängen
-   */
-  @Test
-  public void test_100_null() {
-    Assert.assertEquals("Für null anstelle eines Arrays wird die Länge 0 erwartet",
-        0, ArrayHelper.getGesamtLaenge(null));
-  }
-  @Test
-  public void test_110_arrayContentNull() {
-    Assert.assertEquals(0, ArrayHelper.getGesamtLaenge(new String[]{null}));
-    Assert.assertEquals(0, ArrayHelper.getGesamtLaenge(new String[]{null, null}));
-  }
-  @Test
-  public void test_112_arrayContentEmpty() {
-    Assert.assertEquals(0, ArrayHelper.getGesamtLaenge(new String[]{}));
-  }
-
-  @Test
-  public void test_110_standard() {
-    Assert.assertEquals(8, ArrayHelper.getGesamtLaenge(new String[]{"1", "234", "5678"}));
-  }
-
-  @Test
-  public void test_120_MixedNull() {
-    Assert.assertEquals(9, ArrayHelper.getGesamtLaenge(new String[]{null, "1", null, "234", null, "56789"}));
-  }
-
-  /**
-   * Abschnitt 2: Summe Höhenanstiege
-   */
-
-  @Test public void test_200_ein() {
-    Assert.assertEquals(0, ArrayHelper.getHoehenAnstieg(new int[]{111}));
-  }
-  @Test public void test_220_zwei() {
-    Assert.assertEquals(1, ArrayHelper.getHoehenAnstieg(new int[]{111, 112}));
-    Assert.assertEquals(487, ArrayHelper.getHoehenAnstieg(new int[]{-428, 59})); // Totes Meer / Masada
-  }
-  @Test public void test_240_standard() {
-    Assert.assertEquals(380, ArrayHelper.getHoehenAnstieg(new int[]{320, 400, 530, 200, 370}));
-  }
-  @Test public void test_260_Null() {
-    Assert.assertEquals(0, ArrayHelper.getHoehenAnstieg(new int[]{111, 111}));
-    Assert.assertEquals(0, ArrayHelper.getHoehenAnstieg(new int[]{10, 0}));
-    Assert.assertEquals(0, ArrayHelper.getHoehenAnstieg(new int[]{500, 400, 400, 300, 200, 0, -30}));
-  }
-
-  /**
-   * Abschnitt 3: Wertefolge in Array
-   */
-
-  @Test
-  public void test_300_common() {
-    Assert.assertTrue(ArrayHelper.contains(new int[]{5}, new int[]{1, 5, 6, 2}));
-    Assert.assertTrue(ArrayHelper.contains(new int[]{6}, new int[]{1, 5, 6, 2}));
-    Assert.assertFalse(ArrayHelper.contains(new int[]{7}, new int[]{1, 5, 6, 2}));
-
-    Assert.assertTrue(ArrayHelper.contains(new int[]{5, 6}, new int[]{1, 5, 6, 2}));
-    Assert.assertFalse(ArrayHelper.contains(new int[]{6, 5}, new int[]{1, 5, 6, 2}));
-  }
-  @Test
-  public void test_320_limits() {
-    Assert.assertTrue(ArrayHelper.contains(new int[]{1}, new int[]{1, 5, 6, 2}));
-    Assert.assertTrue(ArrayHelper.contains(new int[]{1, 5}, new int[]{1, 5, 6, 2}));
-    Assert.assertTrue(ArrayHelper.contains(new int[]{1, 5, 6}, new int[]{1, 5, 6, 2}));
-
-    Assert.assertTrue(ArrayHelper.contains(new int[]{5, 6, 2}, new int[]{1, 5, 6, 2}));
-    Assert.assertTrue(ArrayHelper.contains(new int[]{6, 2}, new int[]{1, 5, 6, 2}));
-    Assert.assertTrue(ArrayHelper.contains(new int[]{2}, new int[]{1, 5, 6, 2}));
-
-    Assert.assertTrue(ArrayHelper.contains(new int[]{55}, new int[]{55}));
-    Assert.assertTrue(ArrayHelper.contains(new int[]{5, 6, -1, 2}, new int[]{5, 6, -1, 2}));
-  }
-  @Test
-  public void test_340_emptyOrOversize() {
-    Assert.assertTrue(ArrayHelper.contains(new int[]{}, new int[]{}));
-    Assert.assertTrue(ArrayHelper.contains(new int[]{}, new int[]{1, 5, 6, 2}));
-
-    Assert.assertFalse(ArrayHelper.contains(new int[]{1, 5, 6, 2}, new int[]{}));
-    Assert.assertFalse(ArrayHelper.contains(new int[]{1, 5, 6, 2}, new int[]{5, 6}));
-  }
-}
\ No newline at end of file
diff --git a/Klausuren/Sd1/2018winter/Solve/src/test/java/de/hdm_stuttgart/mi/sd1/test/aufgabe1/Test_Helper.java b/Klausuren/Sd1/2018winter/Solve/src/test/java/de/hdm_stuttgart/mi/sd1/test/aufgabe1/Test_Helper.java
deleted file mode 100644
index 6f5090cb32e037bb32c16524835fe51b58fa810c..0000000000000000000000000000000000000000
--- a/Klausuren/Sd1/2018winter/Solve/src/test/java/de/hdm_stuttgart/mi/sd1/test/aufgabe1/Test_Helper.java
+++ /dev/null
@@ -1,104 +0,0 @@
-package de.hdm_stuttgart.mi.sd1.test.aufgabe1;
-
-import de.hdm_stuttgart.mi.exam.unitmarking.ExaminationTestDefaults;
-import de.hdm_stuttgart.mi.exam.unitmarking.Marking;
-import de.hdm_stuttgart.mi.sd1.aufgabe1.Helper;
-import org.junit.Assert;
-import org.junit.FixMethodOrder;
-import org.junit.Test;
-import org.junit.runners.MethodSorters;
-
-@FixMethodOrder(MethodSorters.NAME_ASCENDING)
-@SuppressWarnings({"UnusedDeclaration"})
-public class Test_Helper extends ExaminationTestDefaults {
-
-  /**
-   * Abschnitt 1: 3 Strings null?
-   */
-  @Test @Marking(points = 5) public void test_100_stringsAllNull() {
-    Assert.assertTrue(Helper.keinStringIstNull("", "", ""));
-    Assert.assertTrue(Helper.keinStringIstNull("A", "BB", "CC"));
-
-    Assert.assertFalse(Helper.keinStringIstNull(null, "XY", "Z"));
-    Assert.assertFalse(Helper.keinStringIstNull("XYZ", null, "Z"));
-    Assert.assertFalse(Helper.keinStringIstNull(null, null, "Z"));
-    Assert.assertFalse(Helper.keinStringIstNull("XYZ", "XY", null));
-    Assert.assertFalse(Helper.keinStringIstNull(null, "XY", null));
-    Assert.assertFalse(Helper.keinStringIstNull("XYZ", null, null));
-    Assert.assertFalse(Helper.keinStringIstNull(null, null, null));
-  }
-
-  /**
-   * Abschnitt 2: 3 Strings mit Mindestlänge 1?
-   */
-  @Test  @Marking(points = 4) public void test_200_stringsMindestLaenge() {
-    Assert.assertFalse(Helper.alleMindestlaengeEins("", "", ""));
-    Assert.assertFalse(Helper.alleMindestlaengeEins(null, "As", "Ass"));
-    Assert.assertFalse(Helper.alleMindestlaengeEins("Nicht Null", null, "Null"));
-    Assert.assertFalse(Helper.alleMindestlaengeEins("a", "b", null));
-    Assert.assertFalse(Helper.alleMindestlaengeEins("", "Ces", "Def"));
-    Assert.assertFalse(Helper.alleMindestlaengeEins("Ces", "", "Def"));
-    Assert.assertFalse(Helper.alleMindestlaengeEins("Def", "Ces", ""));
-
-    Assert.assertTrue(Helper.alleMindestlaengeEins("A", "B", "C"));
-    Assert.assertTrue(Helper.alleMindestlaengeEins("A", "Brett", "Caesar"));
-  }
-
-
-  /**
-   * Abschnitt 3: Irgendwie teilbar?
-   */
-  @Test @Marking(points = 4)
-  public void test_300_teilbar() {
-    Assert.assertTrue(Helper.istIrgendwieTeilbar(18, 3));
-    Assert.assertTrue(Helper.istIrgendwieTeilbar(3, 18));
-    Assert.assertTrue(Helper.istIrgendwieTeilbar(18, -3));
-    Assert.assertTrue(Helper.istIrgendwieTeilbar(-3, 18));
-    Assert.assertTrue(Helper.istIrgendwieTeilbar(-18, 3));
-    Assert.assertTrue(Helper.istIrgendwieTeilbar(3, -18));
-    Assert.assertTrue(Helper.istIrgendwieTeilbar(-64, -16));
-    Assert.assertTrue(Helper.istIrgendwieTeilbar(-16, -64));
-  }
-  /**
-   * Sonderfall einfache 0 ist immer teilbar.
-   */
-  @Test @Marking(points = 4) public void test_320_nullIstTeilbar() {
-    Assert.assertTrue(Helper.istIrgendwieTeilbar(1, 0));
-    Assert.assertTrue(Helper.istIrgendwieTeilbar(0, 1));
-    Assert.assertTrue(Helper.istIrgendwieTeilbar(0, 987));
-    Assert.assertTrue(Helper.istIrgendwieTeilbar(-987, 0));
-  }
-  /**
-   * Sonderfall doppelte 0 ist nicht teilbar.
-   */
-  @Test public void test_340_nichtTeilbar() {
-    Assert.assertFalse(Helper.istIrgendwieTeilbar(0, 0));
-    Assert.assertTrue(Helper.istIrgendwieTeilbar(0, 1));
-  }
-
-
-  /**
-   * Abschnitt 4: Zeige Leerzeichen
-   */
-
-  @Test @Marking(points = 2) public void test_400_empty() {
-    Assert.assertEquals("", Helper.markiereLeerzeichen(""));
-  }
-  @Test @Marking(points = 2) public void test_420_single() {
-    Assert.assertEquals("a", Helper.markiereLeerzeichen("a"));
-  }
-  @Test @Marking(points = 2) public void test_430_einmalLeer() {
-    Assert.assertEquals("_a", Helper.markiereLeerzeichen(" a"));
-    Assert.assertEquals("a_", Helper.markiereLeerzeichen("a "));
-  }
-  @Test @Marking(points = 2) public void test_440_einmalLeer() {
-    Assert.assertEquals("abc_def", Helper.markiereLeerzeichen("abc def"));
-    Assert.assertEquals("_abcdef", Helper.markiereLeerzeichen(" abcdef"));
-    Assert.assertEquals("abcdef_", Helper.markiereLeerzeichen("abcdef "));
-  }
-
-  @Test @Marking(points = 2) public void test_460_einmalLeer() {
-    Assert.assertEquals("__abc_def___", Helper.markiereLeerzeichen("  abc def   "));
-    Assert.assertEquals("_abc___def", Helper.markiereLeerzeichen(" abc   def"));
-  }
-}
\ No newline at end of file