diff --git a/src/beobachter/SchreckwertBeobachter.java b/src/beobachter/SchreckwertBeobachter.java
new file mode 100644
index 0000000000000000000000000000000000000000..0597b85865b969e53b4d4e291984bd76873340fe
--- /dev/null
+++ b/src/beobachter/SchreckwertBeobachter.java
@@ -0,0 +1,12 @@
+package beobachter;
+
+import java.util.Observable;
+import java.util.Observer;
+
+public class SchreckwertBeobachter implements Observer {
+
+	@Override
+	public void update(Observable observable, Object data) {
+	}
+
+}
diff --git a/src/gebaeude/Gebaeude.java b/src/gebaeude/Gebaeude.java
new file mode 100644
index 0000000000000000000000000000000000000000..4ea9a272a3124287c8ffbcc50fabea9952ba6fff
--- /dev/null
+++ b/src/gebaeude/Gebaeude.java
@@ -0,0 +1,7 @@
+package gebaeude;
+
+public interface Gebaeude {
+	
+	public void darstellen();
+
+}
diff --git a/src/gebaeude/Hoehle.java b/src/gebaeude/Hoehle.java
new file mode 100644
index 0000000000000000000000000000000000000000..b609f09517076c15879e7557a8bff6d241934cbe
--- /dev/null
+++ b/src/gebaeude/Hoehle.java
@@ -0,0 +1,9 @@
+package gebaeude;
+
+public class Hoehle implements Gebaeude {
+	
+	public void darstellen() {
+		System.out.println("Eine H�hle");
+	}
+	
+}
diff --git a/src/gebaeude/Schloss.java b/src/gebaeude/Schloss.java
new file mode 100644
index 0000000000000000000000000000000000000000..ba1c522f139dfdfc22984d523c01abfd454b6ece
--- /dev/null
+++ b/src/gebaeude/Schloss.java
@@ -0,0 +1,9 @@
+package gebaeude;
+
+public class Schloss implements Gebaeude {
+
+	public void darstellen() {
+		System.out.println("Ein Schloss");
+	};
+	
+}
diff --git a/src/gegenstaende/Clownsnase.java b/src/gegenstaende/Clownsnase.java
new file mode 100644
index 0000000000000000000000000000000000000000..acd81a8dac7e9a15dabc07d9bfda06c0936de62b
--- /dev/null
+++ b/src/gegenstaende/Clownsnase.java
@@ -0,0 +1,11 @@
+package gegenstaende;
+
+public class Clownsnase extends Gegenstand {
+
+	public Clownsnase() {
+		super();
+		schreckwert = -3;
+		beschreibung = "Clownsnase";
+	}
+
+}
diff --git a/src/gegenstaende/Frankensteinschraube.java b/src/gegenstaende/Frankensteinschraube.java
new file mode 100644
index 0000000000000000000000000000000000000000..1d748b9c9ca1e764c2872c3fc219593632ef38dc
--- /dev/null
+++ b/src/gegenstaende/Frankensteinschraube.java
@@ -0,0 +1,10 @@
+package gegenstaende;
+
+public class Frankensteinschraube extends Gegenstand {
+
+	public Frankensteinschraube() {
+		super();
+		schreckwert = 1;
+		beschreibung = "Frankenstein-Schraube";
+	}
+}
diff --git a/src/gegenstaende/Gegenstand.java b/src/gegenstaende/Gegenstand.java
new file mode 100644
index 0000000000000000000000000000000000000000..3af2b36b9c845ed96d94cd53bc4ff7845ca5b3bf
--- /dev/null
+++ b/src/gegenstaende/Gegenstand.java
@@ -0,0 +1,14 @@
+package gegenstaende;
+
+public abstract class Gegenstand {
+	protected int schreckwert;
+	protected String beschreibung;
+	
+	public int getSchreckwert() {
+		return schreckwert;
+	}
+	
+	public String getBeschreibung() {
+		return beschreibung;
+	}
+}
diff --git a/src/gegenstaende/Hexenmaske.java b/src/gegenstaende/Hexenmaske.java
new file mode 100644
index 0000000000000000000000000000000000000000..06820eeed1ff7d5a9616c01dd6d75a0a844593cb
--- /dev/null
+++ b/src/gegenstaende/Hexenmaske.java
@@ -0,0 +1,10 @@
+package gegenstaende;
+
+public class Hexenmaske extends Gegenstand {
+
+	public Hexenmaske() {
+		super();
+		schreckwert = 2;
+		beschreibung = "Hexenmaske";
+	}
+}
diff --git a/src/geister/Geist.java b/src/geister/Geist.java
new file mode 100644
index 0000000000000000000000000000000000000000..8fdb507ba90551362eec4230ca090ef0aa996080
--- /dev/null
+++ b/src/geister/Geist.java
@@ -0,0 +1,6 @@
+package geister;
+
+public interface Geist {
+	public void anzeigen();
+	
+}
diff --git a/src/geister/GeistTyp.java b/src/geister/GeistTyp.java
new file mode 100644
index 0000000000000000000000000000000000000000..fe46fcf89eedf99db4f376b74b5c712525d98db3
--- /dev/null
+++ b/src/geister/GeistTyp.java
@@ -0,0 +1,6 @@
+package geister;
+
+public enum GeistTyp {
+	POLTERGEIST,
+	SUMPFGEIST
+}
diff --git a/src/gelaende/Gebirge.java b/src/gelaende/Gebirge.java
new file mode 100644
index 0000000000000000000000000000000000000000..7baf35ec1d89dcab33397b50c334caa95d365019
--- /dev/null
+++ b/src/gelaende/Gebirge.java
@@ -0,0 +1,8 @@
+package gelaende;
+
+public class Gebirge implements Gelaende {
+
+	public void darstellen() {
+		System.out.println("Gebirgslandschaft");
+	}
+}
diff --git a/src/gelaende/Gelaende.java b/src/gelaende/Gelaende.java
new file mode 100644
index 0000000000000000000000000000000000000000..1939475699d2d32302ca5dba86ac76870443d16b
--- /dev/null
+++ b/src/gelaende/Gelaende.java
@@ -0,0 +1,6 @@
+package gelaende;
+
+public interface Gelaende {
+	
+	public void darstellen();
+}
diff --git a/src/gelaende/Sumpfgebiet.java b/src/gelaende/Sumpfgebiet.java
new file mode 100644
index 0000000000000000000000000000000000000000..e6919f99bc8208d117454fdec255e7194fe635f1
--- /dev/null
+++ b/src/gelaende/Sumpfgebiet.java
@@ -0,0 +1,8 @@
+package gelaende;
+
+public class Sumpfgebiet implements Gelaende {
+
+	public void darstellen() {
+		System.out.println("Ein Sumpfgebiet");
+	}
+}
diff --git a/src/monster/Drache.java b/src/monster/Drache.java
new file mode 100644
index 0000000000000000000000000000000000000000..84b43b06c538bb46f2b90f919dd7b617aa38a862
--- /dev/null
+++ b/src/monster/Drache.java
@@ -0,0 +1,15 @@
+package monster;
+
+import monster.Monster;
+
+public class Drache extends Monster {
+
+	public Drache() {
+		super();
+		schreckwert = 5;
+	}
+	
+	public void darstellenMonster() {
+		System.out.println("Ich bin ein Drache mit Schreckwert: " + berechneSchreckwert());
+	}
+}
diff --git a/src/monster/Kobold.java b/src/monster/Kobold.java
new file mode 100644
index 0000000000000000000000000000000000000000..3122a242c9a06960292fe3754955de92e475d6a1
--- /dev/null
+++ b/src/monster/Kobold.java
@@ -0,0 +1,13 @@
+package monster;
+
+public class Kobold extends Monster {
+
+	public Kobold() {
+		super();
+		schreckwert = 0;
+	}
+	
+	public void darstellenMonster() {
+		System.out.println("Ich bin ein Kobold mit Schreckwert: " + berechneSchreckwert());
+	}
+}
diff --git a/src/monster/Kruemelmonster.java b/src/monster/Kruemelmonster.java
new file mode 100644
index 0000000000000000000000000000000000000000..84c1d344c697e1a602680a91c23c2916a85cea68
--- /dev/null
+++ b/src/monster/Kruemelmonster.java
@@ -0,0 +1,13 @@
+package monster;
+
+public class Kruemelmonster extends Monster {
+
+	public Kruemelmonster() {
+		super();
+		schreckwert = -5;
+	}
+	
+	public void darstellenMonster() {
+		System.out.println("Ich bin ein Kruemelmonster mit Schreckwert: " + berechneSchreckwert());
+	}
+}
diff --git a/src/monster/Monster.java b/src/monster/Monster.java
new file mode 100644
index 0000000000000000000000000000000000000000..d1170b5846d38529ebce196fb5d52f7c5633742e
--- /dev/null
+++ b/src/monster/Monster.java
@@ -0,0 +1,45 @@
+package monster;
+
+import java.util.ArrayList;
+import java.util.Iterator;
+
+import gegenstaende.Gegenstand;
+
+public abstract class Monster {
+	protected int schreckwert;
+	protected ArrayList<Gegenstand> gegenstaende;
+	
+	public Monster() {
+		gegenstaende = new ArrayList<Gegenstand>();
+	}
+	
+	public abstract void darstellenMonster();
+	
+	public void addGegenstand(Gegenstand g) {
+		gegenstaende.add(g);
+	}
+	
+	public Iterator<Gegenstand> getGegenstaende() {
+		return gegenstaende.iterator();
+	}
+	
+	public int berechneSchreckwert() {
+		int sum;
+		
+		sum = schreckwert;
+		Iterator<Gegenstand> i = getGegenstaende();
+		while (i.hasNext()) {
+			sum = sum + ((Gegenstand)i.next()).getSchreckwert();
+		}
+		
+		return sum;
+	}
+	
+	public void darstellen() {
+		darstellenMonster();
+		Iterator<Gegenstand> i = getGegenstaende();
+		while (i.hasNext()) {
+			System.out.println("Ich besitze: " + ((Gegenstand)i.next()).getBeschreibung());
+		}
+	}
+}
diff --git a/src/monster/TestDrive.java b/src/monster/TestDrive.java
new file mode 100644
index 0000000000000000000000000000000000000000..8d00e51bb431a1ac04a30349e9e2351116de839e
--- /dev/null
+++ b/src/monster/TestDrive.java
@@ -0,0 +1,91 @@
+package monster;
+
+import gegenstaende.Hexenmaske;
+
+public class TestDrive {
+
+	public static void main(String[] args) {
+//		Observer beobachter;
+//		beobachter = new SchreckwertBeobachter();
+
+		Monster kruemelmonster = new Kruemelmonster();
+		kruemelmonster.darstellen();
+//		kruemelmonster.addObserver(beobachter);
+//		kruemelmonster.kommunizieren();
+		System.out.println();
+		
+		Monster kobold = new Kobold();
+		kobold.darstellen();
+//		kobold.addObserver(beobachter);
+//		kobold.kommunizieren();
+		kobold.addGegenstand(new Hexenmaske());
+		kobold.darstellen();
+//		kobold.kommunizieren();
+		System.out.println();
+		
+//		Geist poltergeist = new Poltergeist();
+//		poltergeist.anzeigen();
+//		System.out.println();
+//		
+//		Monster sumpfgeist = new GeistAdapter(new Sumpfgeist());
+//		sumpfgeist.darstellen();
+//		sumpfgeist.addObserver(beobachter);
+//		sumpfgeist.kommunizieren();
+//		sumpfgeist.addGegenstand(new Clownsnase());
+//		sumpfgeist.darstellen();
+//		sumpfgeist.kommunizieren();
+//		System.out.println();
+//		
+//		Monsterfabrik fabrik = new SchrecklicheMonsterfabrik();
+//		Monster drache = fabrik.createMonster("Drache");
+//		drache.darstellen();
+//		drache.kommunizieren();
+//		System.out.println();
+//
+//		Monsterfabrik monsterFabrik = new Monsterfabrik();
+//		Monster fabrikKobold = monsterFabrik.createMonster("Kobold");
+//		fabrikKobold.darstellen();
+//		fabrikKobold.kommunizieren();
+//		System.out.println();
+//		 
+//		Monster fabrikSumpfgeist = new GeistAdapter(Geisterfabrik.createGeist(GeistTyp.SUMPFGEIST));
+//		fabrikSumpfgeist.darstellen();
+//		fabrikSumpfgeist.kommunizieren();
+//		System.out.println();
+//
+//		Spielgenerator generator = new MonsterSpielGenerator();
+//		Monster monsterSpielKreatur = generator.createKreatur();
+//		Gebaeude monsterSpielGebaeude = generator.createGebaeude();
+//		Gelaende monsterSpielGelaende = generator.createGelaende();
+//		monsterSpielKreatur.darstellen();
+//		monsterSpielGebaeude.darstellen();
+//		monsterSpielGelaende.darstellen();
+//		System.out.println();
+//		
+//		generator = new GeisterSpielGenerator();
+//		Monster geisterSpielKreatur = generator.createKreatur();
+//		Gebaeude geisterSpielGebaeude = generator.createGebaeude();
+//		Gelaende geisterSpielGelaende = generator.createGelaende();
+//		geisterSpielKreatur.darstellen();
+//		geisterSpielGebaeude.darstellen();
+//		geisterSpielGelaende.darstellen();
+//		System.out.println();
+
+//		Monster testMonster = new Drache();
+//		testMonster.darstellen();
+//		testMonster.addObserver(beobachter);
+//		testMonster.kommunizieren();
+//		testMonster.aufstehenEreignis(); // schlafen -> essen
+//		testMonster.arbeitenEreignis();  // essen -> arbeiten
+//		testMonster.ausruhenEreignis();  // arbeiten -> ausruhen
+//		testMonster.schlafenEreignis();  // ausruhen -> schlafen
+//		testMonster.aufstehenEreignis();
+//		testMonster.hexeKommtEreignis();
+//		testMonster.verletztEreignis();
+//		testMonster.geheiltEreignis();
+//		testMonster.hexeGehtEreignis();
+//		System.out.println();
+
+		
+	}
+}
diff --git a/src/monster/monster_ausgabe.txt b/src/monster/monster_ausgabe.txt
new file mode 100644
index 0000000000000000000000000000000000000000..96bfab8da73e6d7667b77433b0c9c96e918ef694
--- /dev/null
+++ b/src/monster/monster_ausgabe.txt
@@ -0,0 +1,52 @@
+Ich bin ein Kruemelmonster mit Schreckwert: -5
+Ich erzaehle Witze
+
+Ich bin ein Kobold mit Schreckwert: 0
+Ich mache Smalltalk
+Beobachter meldet: Schreckwert geändert: 2
+Ich bin ein Kobold mit Schreckwert: 2
+Ich besitze: Hexenmaske
+Ich mache den Menschen Angst
+
+Huhuuu. Ich bin ein Poltergeist
+
+Tssssss. Der Sumpfgeist wird Dich holen.
+Ich mache den Menschen Angst
+Beobachter meldet: Schreckwert geändert: -1
+Tssssss. Der Sumpfgeist wird Dich holen.
+Ich besitze: Clownsnase
+Ich erzaehle Witze
+
+Ich bin ein Drache mit Schreckwert: 6
+Ich besitze: Frankensteinschraube
+Ich mache den Menschen Angst
+
+Ich bin ein Kobold mit Schreckwert: 0
+Ich mache Smalltalk
+
+Tssssss. Der Sumpfgeist wird Dich holen.
+Ich mache den Menschen Angst
+
+Ich bin ein Kobold mit Schreckwert: 0
+Eine Höhle
+Gebirgslandschaft
+
+Huhuuu. Ich bin ein Poltergeist
+Ein Schloss
+Ein Sumpfgebiet
+
+Ich bin ein Drache mit Schreckwert: 5
+Ich mache den Menschen Angst
+Aufwachen
+Aufstehen
+Arbeiten
+Ausruhen
+Schlafen
+Einschlafen
+Aufwachen
+Aufstehen
+Kämpfen
+Heilen
+Kämpfen
+Schlafen
+Einschlafen
\ No newline at end of file
diff --git a/src/spielgenerator/SpielTyp.java b/src/spielgenerator/SpielTyp.java
new file mode 100644
index 0000000000000000000000000000000000000000..eca4f7b070bfbfb0b2aec007876d3251c44a3083
--- /dev/null
+++ b/src/spielgenerator/SpielTyp.java
@@ -0,0 +1,6 @@
+package spielgenerator;
+
+public enum SpielTyp {
+	GEISTERWELT,
+	MONSTERWELT
+}
diff --git a/src/spielgenerator/Spielgenerator.java b/src/spielgenerator/Spielgenerator.java
new file mode 100644
index 0000000000000000000000000000000000000000..3d9fcaea02807aebf5acd8a9e088164b63e5f7d5
--- /dev/null
+++ b/src/spielgenerator/Spielgenerator.java
@@ -0,0 +1,13 @@
+package spielgenerator;
+
+import gebaeude.Gebaeude;
+import gelaende.Gelaende;
+import monster.Monster;
+
+public interface Spielgenerator {
+	
+	public Monster createKreatur();
+	public Gebaeude createGebaeude();
+	public Gelaende createGelaende();
+
+}
diff --git a/src/verhalten/Verhalten.java b/src/verhalten/Verhalten.java
new file mode 100644
index 0000000000000000000000000000000000000000..076548f65063ad0c95a7c148c32fa0a804710753
--- /dev/null
+++ b/src/verhalten/Verhalten.java
@@ -0,0 +1,5 @@
+package verhalten;
+
+public interface Verhalten {
+	public void kommunizieren();
+}