diff --git a/src/wetterstation/AktuelleBedingungenAnzeige.java b/src/wetterstation/AktuelleBedingungenAnzeige.java
index f73dc784c56fac054d278bc4f903772668d6b331..c84afb0a8145d6abff41a5849a5466a41a439861 100644
--- a/src/wetterstation/AktuelleBedingungenAnzeige.java
+++ b/src/wetterstation/AktuelleBedingungenAnzeige.java
@@ -3,6 +3,7 @@ package wetterstation;
 import java.util.Observable;
 import java.util.Observer;
 
+
 public class AktuelleBedingungenAnzeige implements Observer {
 	private float temperatur;
 	private float feuchtigkeit;
@@ -10,13 +11,14 @@ public class AktuelleBedingungenAnzeige implements Observer {
 	
 	public AktuelleBedingungenAnzeige(WetterDaten wetterDaten) {
 		this.wetterDaten = wetterDaten;
-		wetterDaten.addObserver(this);
+		wetterDaten.addPropertyListener(this);
 	}
 	
 	public void update(Observable o, Object arg) {
-		if (o instanceof WetterDaten) {
-			this.temperatur = ((WetterDaten) o).getTemperatur();
-			this.feuchtigkeit = ((WetterDaten) o).getFeuchtigkeit();
+		if (o instanceof EigenschaftenSubjekt) {
+			WetterDaten daten = (WetterDaten) arg;
+			this.temperatur = daten.getTemperatur();
+			this.feuchtigkeit = daten.getFeuchtigkeit();
 			anzeigen();
 		}
 	}
diff --git a/src/wetterstation/EigenschaftenSubjekt.java b/src/wetterstation/EigenschaftenSubjekt.java
new file mode 100644
index 0000000000000000000000000000000000000000..db1d21993f78d3fb0655db2e264e65bd4ba841eb
--- /dev/null
+++ b/src/wetterstation/EigenschaftenSubjekt.java
@@ -0,0 +1,11 @@
+package wetterstation;
+
+import java.util.Observable;
+
+public class EigenschaftenSubjekt extends Observable {
+	public void firePropertyChange(WetterDaten wetterDaten) {
+		setChanged();
+		notifyObservers(wetterDaten);
+	}
+
+}
diff --git a/src/wetterstation/SensorDaten.java b/src/wetterstation/SensorDaten.java
new file mode 100644
index 0000000000000000000000000000000000000000..1ed4e955804c6bbba868154bbf00084a66919635
--- /dev/null
+++ b/src/wetterstation/SensorDaten.java
@@ -0,0 +1,5 @@
+package wetterstation;
+
+public abstract class SensorDaten {
+
+}
diff --git a/src/wetterstation/StatistikAnzeige.java b/src/wetterstation/StatistikAnzeige.java
index 2b9e66bedf01cb0c76a5b2c4dd4b960f5ea76fae..b19432310c1cd4bc456fe1c0dd7d037038fbae97 100644
--- a/src/wetterstation/StatistikAnzeige.java
+++ b/src/wetterstation/StatistikAnzeige.java
@@ -12,12 +12,13 @@ public class StatistikAnzeige implements Observer {
 
 	public StatistikAnzeige(WetterDaten wetterDaten) {
 		this.wetterDaten = wetterDaten;
-		wetterDaten.addObserver(this);
+		wetterDaten.addPropertyListener(this);
 	}
 	
 	public void update(Observable o, Object arg) {
-		if (o instanceof WetterDaten) {
-			float temp = ((WetterDaten) o).getTemperatur();
+		if (o instanceof EigenschaftenSubjekt) {
+			WetterDaten daten = (WetterDaten) arg;
+			float temp = daten.getTemperatur();
 			tempSum += temp;
 			anzMesswerte++;
 
diff --git a/src/wetterstation/VorhersageAnzeige.java b/src/wetterstation/VorhersageAnzeige.java
index f10a27f086f132b80b05eb7531d081627cbdaa7e..25cda82a83d81dd77d86cec8699cdb500b15d491 100644
--- a/src/wetterstation/VorhersageAnzeige.java
+++ b/src/wetterstation/VorhersageAnzeige.java
@@ -10,13 +10,14 @@ public class VorhersageAnzeige implements Observer {
 	
 	public VorhersageAnzeige(WetterDaten wetterDaten) {
 		this.wetterDaten = wetterDaten;
-		wetterDaten.addObserver(this);
+		wetterDaten.addPropertyListener(this);
 	}
 	
 	public void update(Observable o, Object arg) {
-		if (o instanceof WetterDaten) {
+		if (o instanceof EigenschaftenSubjekt) {
+			WetterDaten daten = (WetterDaten) arg;
 			letzterLuftdruck = aktuellerLuftdruck;
-			aktuellerLuftdruck = ((WetterDaten) o).getLuftdruck();
+			aktuellerLuftdruck = daten.getLuftdruck();
 			anzeigen();
 		}
 	}
diff --git a/src/wetterstation/WetterDaten.java b/src/wetterstation/WetterDaten.java
index e82cd9a921de032b2e17a4497869b1a9153a5374..bbfeafb4e5f77d5e3452e72b8f4a1e556316b132 100644
--- a/src/wetterstation/WetterDaten.java
+++ b/src/wetterstation/WetterDaten.java
@@ -1,16 +1,25 @@
 package wetterstation;
 
-import java.util.Observable;
+import java.util.Observer;
 
-public class WetterDaten extends Observable {
+
+public class WetterDaten extends SensorDaten {
 	private float temperatur;
 	private float feuchtigkeit;
 	private float luftdruck;
+	private EigenschaftenSubjekt subjekt;
+	
+	public WetterDaten() {
+		subjekt = new EigenschaftenSubjekt();
+	}
+
+	public void addPropertyListener(Observer o) {
+		subjekt.addObserver(o);
+	}
 	
 	public void messwerteGeaendert() {
 		System.out.println(this.toString());
-		setChanged();
-		notifyObservers();
+		subjekt.firePropertyChange(this);
 	}
 	
 	public void setMesswerte(float temp, float feucht, float druck) {