diff --git a/src/soon/PlayZustand.java b/src/soon/PlayZustand.java
index beddd6c8513dc01ba46c9a32a89a938355844a7e..b952b8dfd45b7af34d580649f883c030300b29ce 100644
--- a/src/soon/PlayZustand.java
+++ b/src/soon/PlayZustand.java
@@ -1,6 +1,6 @@
 package soon;
 
-public class PlayZustand extends PowerOnZustand {
+public class PlayZustand extends PlayerZustand {
 	
 	public PlayZustand(Soon s, PowerOn p) {
 		super(s, p);
@@ -8,8 +8,8 @@ public class PlayZustand extends PowerOnZustand {
 	
 	public void stopButton() {
 		exit();
-		p.setZustand(p.getStopZustand());
-		p.getZustand().entry();
+		p.setPlayerZustand(p.getStopZustand());
+		p.getPlayerZustand().entry();
 	}
 
 	public void volumeUpButton() {
diff --git a/src/soon/PowerOnZustand.java b/src/soon/PlayerZustand.java
similarity index 75%
rename from src/soon/PowerOnZustand.java
rename to src/soon/PlayerZustand.java
index 36589af54d4c3ffd094fce046003047ba4f23c8e..e5312831238a0bc3d35a4c8d52234ccfb6aad695 100644
--- a/src/soon/PowerOnZustand.java
+++ b/src/soon/PlayerZustand.java
@@ -1,10 +1,10 @@
 package soon;
 
-public abstract class PowerOnZustand {
+public abstract class PlayerZustand {
 	Soon s;
 	PowerOn p;
 	
-	public PowerOnZustand(Soon s, PowerOn p) {
+	public PlayerZustand(Soon s, PowerOn p) {
 		this.s = s;
 		this.p = p;
 	}
diff --git a/src/soon/PowerOff.java b/src/soon/PowerOff.java
index d4e26c4c1e05a179f9a48cfe78fb2d3b63ed479d..8ce64a8122d2398cade6628c0e847874055995b4 100644
--- a/src/soon/PowerOff.java
+++ b/src/soon/PowerOff.java
@@ -7,9 +7,9 @@ public class PowerOff extends Zustand {
 	}
 	
 	public void powerButton() {
+		System.out.println("Power Button: Anschalten");
 		exit();
 		s.setZustand(s.getPowerOnZustand());
-		System.out.println("Anschalten");
 		s.getZustand().entry();
 	}
 }
diff --git a/src/soon/PowerOn.java b/src/soon/PowerOn.java
index fc3ab60c795ad4ac29427e9ed1db7dc83b923a98..14a141ac33a2368afd17b5a0cc51af504e7104f7 100644
--- a/src/soon/PowerOn.java
+++ b/src/soon/PowerOn.java
@@ -1,64 +1,96 @@
 package soon;
 
 public class PowerOn extends Zustand {
-	PowerOnZustand playZustand;
-	PowerOnZustand stopZustand;
+	PlayerZustand playZustand;
+	PlayerZustand stopZustand;
+	SpeakerZustand stereoZustand;
+	SpeakerZustand surroundZustand;
 
-	PowerOnZustand zustand;
+	PlayerZustand playerZustand;
+	SpeakerZustand speakerZustand;
 	
 	public PowerOn(Soon s) {
 		super(s);
 		stopZustand = new StopZustand(s, this);
 		playZustand = new PlayZustand(s, this);
-		zustand = stopZustand;
+		stereoZustand = new StereoZustand(s,this);
+		surroundZustand = new SurroundZustand(s,this);
+		playerZustand = stopZustand;
+		speakerZustand = stereoZustand;
 	}
 	
-	public PowerOnZustand getStopZustand() {
+	public PlayerZustand getStopZustand() {
 		return stopZustand;
 	}
 
-	public PowerOnZustand getPlayZustand() {
+	public PlayerZustand getPlayZustand() {
 		return playZustand;
 	}
 
-	public PowerOnZustand getZustand() {
-		return zustand;
+	public SpeakerZustand getStereoZustand() {
+		return stereoZustand;
+	}
+	
+	public SpeakerZustand getSurroundZustand() {
+		return surroundZustand;
+	}
+	
+	public PlayerZustand getPlayerZustand() {
+		return playerZustand;
 	}
 
-	public void setZustand(PowerOnZustand zustand) {
-		this.zustand = zustand;
+	public void setPlayerZustand(PlayerZustand zustand) {
+		this.playerZustand = zustand;
 	}
 	
+	public SpeakerZustand getSpeakerZustand() {
+		return speakerZustand;
+	}
+
+	public void setSpeakerZustand(SpeakerZustand zustand) {
+		this.speakerZustand = zustand;
+	}
+
 	public void playButton() {
-		zustand.playButton();
+		System.out.println("Play Button");
+		playerZustand.playButton();
 	}
 	
 	public void stopButton() {
-		zustand.stopButton();
+		System.out.println("Stop Button"); 
+		playerZustand.stopButton();
 	}
 	
 	public void volumeUpButton() {
-		zustand.volumeUpButton();
+		System.out.println("Volume Up Button"); 
+		playerZustand.volumeUpButton();
 	}
 	
 	public void volumeDownButton() {
-		zustand.volumeDownButton();
+		System.out.println("Volume Down Button"); 
+		playerZustand.volumeDownButton();
 	}
 
 	public void powerButton() {
+		System.out.println("Power Button: Ausschalten");
 		exit();
 		s.setZustand(s.getPowerOffZustand());
-		System.out.println("Ausschalten");
 		s.getZustand().entry();
 	}
 	
+	public void speakerButton() {
+		System.out.println("Speaker Button"); 
+		speakerZustand.speakerButton();
+	}
+	
+	
 	public void entry() {
 		s.powerLED_On();
-		zustand.entry();
+		playerZustand.entry();
 	}
 	
 	public void exit() {
 		s.powerLED_Off();
-		zustand.exit();
+		playerZustand.exit();
 	}
 }
diff --git a/src/soon/Soon.java b/src/soon/Soon.java
index d03e0dfb60372f6b9c734f9a268832a2a5317473..09822b9345afe4b8fe1bbda4ff1847231844a992 100644
--- a/src/soon/Soon.java
+++ b/src/soon/Soon.java
@@ -3,12 +3,16 @@ package soon;
 public class Soon {
 	Zustand powerOnZustand;
 	Zustand powerOffZustand;
+	PlayerZustand playerHistory;
+	SpeakerZustand speakerHistory;
 	
 	Zustand zustand;
 	
 	public Soon () {
 		powerOnZustand = new PowerOn(this);
 		powerOffZustand = new PowerOff(this);
+		playerHistory = ((PowerOn)powerOnZustand).getStopZustand();
+		speakerHistory = ((PowerOn)powerOnZustand).getStereoZustand();
 		zustand = powerOffZustand;
 	}
 
@@ -48,30 +52,42 @@ public class Soon {
 		zustand.powerButton();
 	}
 
+	public void speakerButton() {
+		zustand.speakerButton();
+	}
+	
 	public void startPlay() {
-		System.out.println("Musik an");
+		System.out.println("Soon: Musik an");
 	}
 	
 	public void stopPlay() {
-		System.out.println("Musik aus");
+		System.out.println("Soon: Musik aus");
 	}
 
 	public void volumeUp() {
-		System.out.println("Lauter");
+		System.out.println("Soon: Lauter");
 	}
 	
 	public void volumeDown() {
-		System.out.println("Leiser");
+		System.out.println("Soon: Leiser");
 	}
 
 	public void powerLED_On() {
-		System.out.println("LED on");
+		System.out.println("Soon: LED on");
 	}
 	
 	public void powerLED_Off() {
-		System.out.println("LED off");
+		System.out.println("Soon: LED off");
 	}
 
+	public void setStereo() {
+		System.out.println("Soon: Stereo sound");
+	}
+	
+	public void setSurround() {
+		System.out.println("Soon: Surround sound");
+	}
+	
 	public String toString() {
 		StringBuffer result = new StringBuffer();
 		result.append("\nSoon MP3 Player");
diff --git a/src/soon/SoonTestDrive.java b/src/soon/SoonTestDrive.java
index 7e3fc47a1fa5124ea45a60f906e09080258acd3c..0e92076492cfc5616b83c7548011c63bf49429d3 100644
--- a/src/soon/SoonTestDrive.java
+++ b/src/soon/SoonTestDrive.java
@@ -9,8 +9,12 @@ public class SoonTestDrive {
 		
 		player.powerButton();
 		player.playButton();
+		player.speakerButton();
 		player.volumeUpButton();
+		player.powerButton();
+		player.powerButton();
 		player.volumeDownButton();
+		player.speakerButton();
 		player.stopButton();
 		player.powerButton();
 	}
diff --git a/src/soon/SpeakerZustand.java b/src/soon/SpeakerZustand.java
new file mode 100644
index 0000000000000000000000000000000000000000..9177d8da51eabc3cf174931183193059822345bf
--- /dev/null
+++ b/src/soon/SpeakerZustand.java
@@ -0,0 +1,13 @@
+package soon;
+
+public abstract class SpeakerZustand {
+	Soon s;
+	PowerOn p;
+	
+	public SpeakerZustand(Soon s, PowerOn p) {
+		this.s = s;
+		this.p = p;
+	}
+	
+	public void speakerButton() {};
+}
diff --git a/src/soon/StereoZustand.java b/src/soon/StereoZustand.java
new file mode 100644
index 0000000000000000000000000000000000000000..8cb292ace54473a47d0f656f08048f68360c1934
--- /dev/null
+++ b/src/soon/StereoZustand.java
@@ -0,0 +1,13 @@
+package soon;
+
+public class StereoZustand extends SpeakerZustand {
+
+	public StereoZustand(Soon s, PowerOn p) {
+		super(s, p);
+	}
+
+	public void speakerButton() {
+		s.setSurround();
+		p.setSpeakerZustand(p.getSurroundZustand());
+	}
+}
diff --git a/src/soon/StopZustand.java b/src/soon/StopZustand.java
index 67cf4289004691c324108296a54ce20d56e07d4b..92308a0f2edd29178204a1032886d1b748a863c8 100644
--- a/src/soon/StopZustand.java
+++ b/src/soon/StopZustand.java
@@ -1,6 +1,6 @@
 package soon;
 
-public class StopZustand extends PowerOnZustand {
+public class StopZustand extends PlayerZustand {
 	
 	public StopZustand(Soon s, PowerOn p) {
 		super(s, p);
@@ -8,7 +8,7 @@ public class StopZustand extends PowerOnZustand {
 	
 	public void playButton() {
 		exit();
-		p.setZustand(p.getPlayZustand());
-		p.getZustand().entry();
+		p.setPlayerZustand(p.getPlayZustand());
+		p.getPlayerZustand().entry();
 	}
 }
diff --git a/src/soon/SurroundZustand.java b/src/soon/SurroundZustand.java
new file mode 100644
index 0000000000000000000000000000000000000000..a60d3f64255258de145b2d9bce812210298f2cbd
--- /dev/null
+++ b/src/soon/SurroundZustand.java
@@ -0,0 +1,14 @@
+package soon;
+
+public class SurroundZustand extends SpeakerZustand {
+
+	public SurroundZustand(Soon s, PowerOn p) {
+		super(s, p);
+	}
+
+	public void speakerButton() {
+		s.setStereo();
+		p.setSpeakerZustand(p.getStereoZustand());
+	}
+
+}
diff --git a/src/soon/Zustand.java b/src/soon/Zustand.java
index 8a7d896167da7747dec26764013acccdbfe131e3..4bdbadb12d913b65a53f0cf0dbe403b603ee5e22 100644
--- a/src/soon/Zustand.java
+++ b/src/soon/Zustand.java
@@ -14,4 +14,5 @@ public abstract class Zustand {
 	public void entry() {};
 	public void exit() {};
 	public void powerButton() {};
+	public void speakerButton() {};
 }