diff --git a/src/wetterstation/AktuelleBedingungenAnzeige.java b/src/wetterstation/AktuelleBedingungenAnzeige.java
index c7af2382945ae649d7f8484c7b6766eea45ba5d2..c3c7eaa0cc2114133fb7410606ba26b9c95952e2 100644
--- a/src/wetterstation/AktuelleBedingungenAnzeige.java
+++ b/src/wetterstation/AktuelleBedingungenAnzeige.java
@@ -1,17 +1,21 @@
 package wetterstation;
-	
+
 public class AktuelleBedingungenAnzeige implements Beobachter {
 	private float temperatur;
 	private float feuchtigkeit;
+	WetterDaten wetterDaten;
 	
 	public AktuelleBedingungenAnzeige(WetterDaten wetterDaten) {
+		this.wetterDaten = wetterDaten;
 		wetterDaten.registriereBeobachter(this);
 	}
 	
-	public void aktualisieren(float temp, float feucht, float druck) {
-		this.temperatur = temp;
-		this.feuchtigkeit = feucht;
-		anzeigen();
+	public void aktualisieren(Subjekt s) {
+		if (s instanceof WetterDaten) {
+			this.temperatur = ((WetterDaten) s).getTemperatur();
+			this.feuchtigkeit = ((WetterDaten) s).getFeuchtigkeit();
+			anzeigen();
+		}
 	}
 	
 	public void anzeigen() {
diff --git a/src/wetterstation/Beobachter.java b/src/wetterstation/Beobachter.java
index fa733b6e065d777ebc49c7befb7a29d0e35d9a86..3b1dff498dc7a323747277decfd51e45798aa6be 100644
--- a/src/wetterstation/Beobachter.java
+++ b/src/wetterstation/Beobachter.java
@@ -1,5 +1,5 @@
 package wetterstation;
 
 public interface Beobachter {
-	public void aktualisieren(float temp, float feucht, float druck);
+	public void aktualisieren(Subjekt s);
 }
diff --git a/src/wetterstation/StatistikAnzeige.java b/src/wetterstation/StatistikAnzeige.java
index 39d61a05e0ca034d9c61d62a603b629841662349..8510449cc49e493aaa945cb30cd4ae1cee5ef2d5 100644
--- a/src/wetterstation/StatistikAnzeige.java
+++ b/src/wetterstation/StatistikAnzeige.java
@@ -1,28 +1,34 @@
 package wetterstation;
 
+
 public class StatistikAnzeige implements Beobachter {
 	private float maxTemp = 0.0f;
 	private float minTemp = 200;
 	private float tempSum= 0.0f;
 	private int anzMesswerte;
+	WetterDaten wetterDaten;
 
 	public StatistikAnzeige(WetterDaten wetterDaten) {
+		this.wetterDaten = wetterDaten;
 		wetterDaten.registriereBeobachter(this);
 	}
 	
-	public void aktualisieren(float temp, float feucht, float druck) {
-		tempSum += temp;
-		anzMesswerte++;
+	public void aktualisieren(Subjekt s) {
+		if (s instanceof WetterDaten) {
+			float temp = ((WetterDaten) s).getTemperatur();
+			tempSum += temp;
+			anzMesswerte++;
 
-		if (temp > maxTemp) {
-			maxTemp = temp;
-		}
+			if (temp > maxTemp) {
+				maxTemp = temp;
+			}
  
-		if (temp < minTemp) {
-			minTemp = temp;
-		}
+			if (temp < minTemp) {
+				minTemp = temp;
+			}
 
-		anzeigen();
+			anzeigen();
+		}
 	}
 
 	public void anzeigen() {
diff --git a/src/wetterstation/Subjekt.java b/src/wetterstation/Subjekt.java
new file mode 100644
index 0000000000000000000000000000000000000000..9762c389ff209a320cac7a0967812987c0a65c2a
--- /dev/null
+++ b/src/wetterstation/Subjekt.java
@@ -0,0 +1,26 @@
+package wetterstation;
+
+import java.util.ArrayList;
+
+public abstract class Subjekt {
+	private ArrayList<Beobachter> beobachter = new ArrayList<Beobachter>();
+
+	public void registriereBeobachter(Beobachter b) {
+		beobachter.add(b);
+	}
+	
+	public void entferneBeobachter(Beobachter b) {
+		int i = beobachter.indexOf(b);
+		if (i >= 0) {
+			beobachter.remove(i);
+		}
+	}
+	
+	public void benachrichtigeBeobachter() {
+		for (int i = 0; i < beobachter.size(); i++) {
+			Beobachter observer = (Beobachter)beobachter.get(i);
+			observer.aktualisieren(this);
+		}
+	}
+
+}
diff --git a/src/wetterstation/VorhersageAnzeige.java b/src/wetterstation/VorhersageAnzeige.java
index 4727fc8d7c1cc0fb3ce0d7ed52220f72b4daca4e..ec52e1c0a977bb6660f6d6ca8e640d55b6c24f84 100644
--- a/src/wetterstation/VorhersageAnzeige.java
+++ b/src/wetterstation/VorhersageAnzeige.java
@@ -4,17 +4,19 @@ package wetterstation;
 public class VorhersageAnzeige implements Beobachter {
 	private float aktuellerLuftdruck = 29.92f;  
 	private float letzterLuftdruck;
-
+	WetterDaten wetterDaten;
 	
 	public VorhersageAnzeige(WetterDaten wetterDaten) {
+		this.wetterDaten = wetterDaten;
 		wetterDaten.registriereBeobachter(this);
 	}
 	
-	public void aktualisieren(float temp, float feucht, float druck) {
-                letzterLuftdruck = aktuellerLuftdruck;
-		aktuellerLuftdruck = druck;
-
-		anzeigen();
+	public void aktualisieren(Subjekt s) {
+		if (s instanceof WetterDaten) {
+			letzterLuftdruck = aktuellerLuftdruck;
+			aktuellerLuftdruck = ((WetterDaten) s).getLuftdruck();
+			anzeigen();
+		}
 	}
 
 	public void anzeigen() {
diff --git a/src/wetterstation/WetterDaten.java b/src/wetterstation/WetterDaten.java
index fed03bb5fc1873dfe9ed29b4c516084a13fa32fe..2197603cb08aef5bd4303bb068964d8a8ef3aad2 100644
--- a/src/wetterstation/WetterDaten.java
+++ b/src/wetterstation/WetterDaten.java
@@ -1,29 +1,10 @@
 package wetterstation;
 
-import java.util.ArrayList;
 
-public class WetterDaten {
+public class WetterDaten extends Subjekt {
 	private float temperatur;
 	private float feuchtigkeit;
 	private float luftdruck;
-	ArrayList<Beobachter> beobachter = new ArrayList<Beobachter>();
-	
-	public void registriereBeobachter(Beobachter b) {
-		beobachter.add(b);
-	}
-	
-	public void entferneBeobachter(Beobachter b) {
-		int i = beobachter.indexOf(b);
-		if (i >= 0) {
-			beobachter.remove(i);
-		}
-	}
-	public void benachrichtigeBeobachter() {
-		for (int i = 0; i < beobachter.size(); i++) {
-			Beobachter observer = (Beobachter)beobachter.get(i);
-			observer.aktualisieren(temperatur, feuchtigkeit, luftdruck);
-		}
-	}
 	
 	public void messwerteGeaendert() {
 		System.out.println(this.toString());