diff --git a/src/wetterstation/AktuelleBedingungenAnzeige.java b/src/wetterstation/AktuelleBedingungenAnzeige.java
index c84afb0a8145d6abff41a5849a5466a41a439861..d4d8eb1f8607bd89d592ca749f928f2cb75bd789 100644
--- a/src/wetterstation/AktuelleBedingungenAnzeige.java
+++ b/src/wetterstation/AktuelleBedingungenAnzeige.java
@@ -1,30 +1,33 @@
 package wetterstation;
 
-import java.util.Observable;
-import java.util.Observer;
+import java.beans.PropertyChangeEvent;
+import java.beans.PropertyChangeListener;
 
 
-public class AktuelleBedingungenAnzeige implements Observer {
+public class AktuelleBedingungenAnzeige implements PropertyChangeListener {
 	private float temperatur;
 	private float feuchtigkeit;
 	WetterDaten wetterDaten;
 	
 	public AktuelleBedingungenAnzeige(WetterDaten wetterDaten) {
 		this.wetterDaten = wetterDaten;
-		wetterDaten.addPropertyListener(this);
+		wetterDaten.addPropertyChangeListener(this);
 	}
 	
-	public void update(Observable o, Object arg) {
-		if (o instanceof EigenschaftenSubjekt) {
-			WetterDaten daten = (WetterDaten) arg;
-			this.temperatur = daten.getTemperatur();
-			this.feuchtigkeit = daten.getFeuchtigkeit();
-			anzeigen();
+	public void propertyChange(PropertyChangeEvent e) {
+		switch (e.getPropertyName()) {
+			case "Temperatur": 
+				this.temperatur = (float)e.getNewValue();
+				System.out.println("Aktuelle Bedingungen: " + temperatur 
+						+ " Grad C");
+				break;
+			case "Feuchtigkeit":
+				this.feuchtigkeit = (float)e.getNewValue();
+				System.out.println("Aktuelle Bedingungen: " + feuchtigkeit + "% Luftfeuchtigkeit");
+				break;
+			default:
+				break;
 		}
 	}
 	
-	public void anzeigen() {
-		System.out.println("Aktuelle Bedingungen: " + temperatur 
-			+ " Grad C und " + feuchtigkeit + "% Luftfeuchtigkeit");
-	}
 }
diff --git a/src/wetterstation/EigenschaftenSubjekt.java b/src/wetterstation/EigenschaftenSubjekt.java
deleted file mode 100644
index db1d21993f78d3fb0655db2e264e65bd4ba841eb..0000000000000000000000000000000000000000
--- a/src/wetterstation/EigenschaftenSubjekt.java
+++ /dev/null
@@ -1,11 +0,0 @@
-package wetterstation;
-
-import java.util.Observable;
-
-public class EigenschaftenSubjekt extends Observable {
-	public void firePropertyChange(WetterDaten wetterDaten) {
-		setChanged();
-		notifyObservers(wetterDaten);
-	}
-
-}
diff --git a/src/wetterstation/StatistikAnzeige.java b/src/wetterstation/StatistikAnzeige.java
index b19432310c1cd4bc456fe1c0dd7d037038fbae97..2e3926e809b780d61c2e5b994cf7337d5f5f033a 100644
--- a/src/wetterstation/StatistikAnzeige.java
+++ b/src/wetterstation/StatistikAnzeige.java
@@ -1,9 +1,9 @@
 package wetterstation;
 
-import java.util.Observable;
-import java.util.Observer;
+import java.beans.PropertyChangeEvent;
+import java.beans.PropertyChangeListener;
 
-public class StatistikAnzeige implements Observer {
+public class StatistikAnzeige implements PropertyChangeListener {
 	private float maxTemp = 0.0f;
 	private float minTemp = 200;
 	private float tempSum= 0.0f;
@@ -12,27 +12,32 @@ public class StatistikAnzeige implements Observer {
 
 	public StatistikAnzeige(WetterDaten wetterDaten) {
 		this.wetterDaten = wetterDaten;
-		wetterDaten.addPropertyListener(this);
+		wetterDaten.addPropertyChangeListener(this);
 	}
 	
-	public void update(Observable o, Object arg) {
-		if (o instanceof EigenschaftenSubjekt) {
-			WetterDaten daten = (WetterDaten) arg;
-			float temp = daten.getTemperatur();
-			tempSum += temp;
-			anzMesswerte++;
+	public void propertyChange(PropertyChangeEvent e) {
+		float temp;
+		
+		switch (e.getPropertyName()) {
+			case "Temperatur": 
+				temp = (float)e.getNewValue();
+				tempSum += temp;
+				anzMesswerte++;
 
-			if (temp > maxTemp) {
-				maxTemp = temp;
-			}
- 
-			if (temp < minTemp) {
-				minTemp = temp;
-			}
+				if (temp > maxTemp) {
+					maxTemp = temp;
+				}
+	 
+				if (temp < minTemp) {
+					minTemp = temp;
+				}
 
-			anzeigen();
+				anzeigen();
+				break;
+			default:
+				break;
 		}
-	}
+ 	}
 
 	public void anzeigen() {
 		System.out.println("Mit/Max/Min Temperatur = " + (tempSum / anzMesswerte)
diff --git a/src/wetterstation/VorhersageAnzeige.java b/src/wetterstation/VorhersageAnzeige.java
index 25cda82a83d81dd77d86cec8699cdb500b15d491..d33adb7ff30172cc3f4ee7bf766200d7ce5a3821 100644
--- a/src/wetterstation/VorhersageAnzeige.java
+++ b/src/wetterstation/VorhersageAnzeige.java
@@ -1,26 +1,29 @@
 package wetterstation;
 
-import java.util.Observable;
-import java.util.Observer;
+import java.beans.PropertyChangeEvent;
+import java.beans.PropertyChangeListener;
 
-public class VorhersageAnzeige implements Observer {
+public class VorhersageAnzeige implements PropertyChangeListener {
 	private float aktuellerLuftdruck = 29.92f;  
 	private float letzterLuftdruck;
 	WetterDaten wetterDaten;
 	
 	public VorhersageAnzeige(WetterDaten wetterDaten) {
 		this.wetterDaten = wetterDaten;
-		wetterDaten.addPropertyListener(this);
+		wetterDaten.addPropertyChangeListener(this);
 	}
 	
-	public void update(Observable o, Object arg) {
-		if (o instanceof EigenschaftenSubjekt) {
-			WetterDaten daten = (WetterDaten) arg;
-			letzterLuftdruck = aktuellerLuftdruck;
-			aktuellerLuftdruck = daten.getLuftdruck();
-			anzeigen();
+	public void propertyChange(PropertyChangeEvent e) {
+		switch (e.getPropertyName()) {
+			case "Luftdruck": 
+	            letzterLuftdruck = aktuellerLuftdruck;
+				aktuellerLuftdruck = (float)e.getNewValue();
+				anzeigen();
+				break;
+			default:
+				break;
 		}
-	}
+ 	}
 
 	public void anzeigen() {
 		System.out.print("Vorhersage: ");
diff --git a/src/wetterstation/WetterDaten.java b/src/wetterstation/WetterDaten.java
index bbfeafb4e5f77d5e3452e72b8f4a1e556316b132..0d4336b93a63a446a96885b30da95a36b7093de4 100644
--- a/src/wetterstation/WetterDaten.java
+++ b/src/wetterstation/WetterDaten.java
@@ -1,28 +1,41 @@
 package wetterstation;
 
-import java.util.Observer;
+import java.beans.PropertyChangeListener;
+import java.beans.PropertyChangeSupport;
 
 
 public class WetterDaten extends SensorDaten {
 	private float temperatur;
 	private float feuchtigkeit;
 	private float luftdruck;
-	private EigenschaftenSubjekt subjekt;
+	private float old_temperatur;
+	private float old_feuchtigkeit;
+	private float old_luftdruck;
+	private PropertyChangeSupport changes;
 	
 	public WetterDaten() {
-		subjekt = new EigenschaftenSubjekt();
+		changes = new PropertyChangeSupport(this);
 	}
 
-	public void addPropertyListener(Observer o) {
-		subjekt.addObserver(o);
+	public void addPropertyChangeListener(PropertyChangeListener l) {
+		changes.addPropertyChangeListener(l);
+	}
+
+	public void removePropertyChangeListener(PropertyChangeListener l) {
+		changes.removePropertyChangeListener(l);
 	}
 	
 	public void messwerteGeaendert() {
 		System.out.println(this.toString());
-		subjekt.firePropertyChange(this);
+		changes.firePropertyChange("Temperatur", old_temperatur, temperatur);
+		changes.firePropertyChange("Feuchtigkeit", old_feuchtigkeit, feuchtigkeit);
+		changes.firePropertyChange("Luftdruck", old_luftdruck, luftdruck);
 	}
 	
 	public void setMesswerte(float temp, float feucht, float druck) {
+		old_temperatur = this.temperatur;
+		old_feuchtigkeit = this.feuchtigkeit;
+		old_luftdruck = this.luftdruck;
 		this.temperatur = temp;
 		this.feuchtigkeit = feucht;
 		this.luftdruck = druck;