diff --git a/doc/sphinx/efun-mg/environment.rst b/doc/sphinx/efun-mg/environment.rst
new file mode 100644
index 0000000..04cf5c1
--- /dev/null
+++ b/doc/sphinx/efun-mg/environment.rst
@@ -0,0 +1,61 @@
+environment
+===========
+
+BEMERKUNGEN
+-----------
+
+  Blueprints, wie zum Beispiel Raeume haben oft kein environment(). Man sollte
+  daher ueberpruefen, ob ein environment() existiert, wenn man darin oder
+  darauf eine Funktion aufrufen will.
+
+BEISPIELE
+---------
+
+   .. code-block:: pike
+
+     // In der Variable "raum" steht der Raum, in dem sich der Spieler
+     // derzeit aufhaelt - das kann auch 0 sein!
+
+     raum = environment(this_player());
+
+     // Dieses Objekt hat noch kein environment, da es eben erst geclont
+     // wurde. Ergo steht in env eine 0.
+     obj = clone_object("/std/thing");
+     env = environment(obj);
+
+     // alle Methoden die auf Environment arbeiten, sollten das vorher
+     // pruefen - insbesondere tell_room()
+     if(this_player() && environment(this_player()) &&
+        objectp(o=present("schild",environment(this_player()))) {
+
+      write("Du klebst Deine Plakette auf "+o->name(WEN)+".\n");
+      tell_room(environment(this_player()), break_string(
+            this_player()->Name(WER)+" pappt einen Aufkleber auf "
+            +o->name(WEN)+".",78), ({this_player()}));
+     }
+
+     // wenn Dinge sehr offensichtlich in Leuten kaputtgehen wird es
+     // komplexer (man kann das natuerlich noch weiter schachteln oder
+     // ueber all_environment() versuchen zu loesen
+     if(environment()) {
+      object ee;
+      ee=environment(environment());
+      if(living(environment()))
+      {
+        tell_object(environment(),Name(WER)+" zerfaellt.\n");
+        if(ee)
+          tell_room(ee, environment()->Name(WESSEN)
+               +" "+name(RAW)+" zerfaellt.\n", ({environment()}));
+      }
+      else if(ee && living(ee))
+      {
+        if(environment()->QueryProp(P_TRANSPARENT))
+          tell_object(ee, Name(WER)+" zerfaellt in Deine"
+              + (environment()->QueryProp(P_PLURAL) ? "n" : 
+                  (environment()->QueryProp(P_GENDER)==FEMALE?"r":"m"))
+              + environment()->name(RAW)+".\n");
+      }
+      else
+        tell_room(environment(),Name(WER)+" zerfaellt.\n");
+     }
+
