diff --git a/doc/efun/command b/doc/efun/command
index 09d6c0b..5058a14 100644
--- a/doc/efun/command
+++ b/doc/efun/command
@@ -1,50 +1,31 @@
-command()
-FUNKTION:
-     int command(string str)
-     int command(string str, object ob)
+GESCHUETZT
+SYNOPSIS
+        int command(string str)
+        int command(string str, object ob)
 
-BESCHREIBUNG:
-     Fuehrt str wie ein Kommando welches direkt vom Nutzer abgegeben wurde
-     aus. Alle Effekte des Kommandos wirken sich auf this_object() oder,
-     falls angegeben, auf das Objekt <obj> aus.
+BESCHREIBUNG
+        Wertet <str> wie ein Kommando aus, das direkt von einem interaktiven
+        Benutzer gegeben wurde. Das Kommando wird auf das aktuelle Objekt
+        angewendet oder, falls angegeben, auf das Objekt <obj>.
 
-     Der Rueckgabewert ist >=1 fuer Erfolg und 0 fuer Misserfolg.
-     Rueckgabewert ist im Erfolgsfall die Hoehe der EvalCost in Ticks.
+        Der Rueckgabewert ist 0 bei Fehlschlag. Bei Erfolg wird ein
+        numerischer Wert zurueckgegeben, der die Eval Kosten darstellt. Ein
+        hoeherer Rueckgabewert bedeutet hoehere Kosten. Die Eval Kosten
+        entsprechen ungefaehr der Anzahl ausgefuehrter LPC Maschinencode
+        Instruktionen.
 
-     Wenn command() auf ein anderes Objekt angewendet wird, koennen auf
-     diesem Wege keine "static" deklarierten Funktionen aufgerufen werden,
-     um etwas Schutz vor unerlaubten Aufrufen zu geben.
+        Wenn command() auf auf ein anderes Objekt angewedet wird, koennen auf
+        diesem Wege keine "static" deklarierten Funktionen aufgerufen werden,
+        um etwas Schutz vor unerlaubten Aufrufen zu geben.
 
-     Kommandi werden gestapelt, das heisst, nach der Ausfuehrung von <str>
-     werden die alten Werte fuer this_player(), query_verb() etc. wieder
-     hergestellt (ein Kommando kann dazu fuehren, dass ein Kommando
-     ausgefuehrt wird).
+        Kommandos werden gestapelt, das heisst, nach der Ausfuehrung von <str>
+        werden die alten Werte fuer this_player(), query_verb() etc. wieder
+        hergestellt.
 
-BEMERKUNGEN:
-     Die meisten in Lebewesen definierten Kommandofunktionen sind vor
-     aeusserem Aufrufen durch "static" oAe geschuetzt. Zum Ausfuehren dieser
-     Kommandos muss command_me(L) eingesetzt werden, um diesen Schutz zu
-     umgehen.
-
-BEISPIELE:
-     Siehe command_me(L) fuer einen Vergleich.
-	 
-     // #1 Ein NPC nimmt und zuendet eine herumliegende /std/lightsource an
-     object f = present("\nlichtquelle", environment());
-     if(f && command("nimm lichtquelle"))
-       if(command("zuende lichtquelle an"))
-         tell_room(environment(), Name(WER)+" freut sich.\n");
-       else
-         tell_room(environment(), Name(WER)+" schaut bedroeppelt.\n");
-     
-     // #2 Ein NPC traegt seine Sachen
-     clone_object("/ruestung/sommerkleid")->move(this_object(), 2);
-     command("trage kleid")
-     // aequivalent und besser ist hier:
-     AddItem("/ruestung/sommerkleid", REFRESH_REMOVE|CLONE_WEAR);
+GESCHICHTE
+        Bis 3.2.6 im Native-Modus konnten Kommandos nur auf das aktuelle 
+            Objekt angewendet werden.
+        Seit 3.2.7 werden Kommandos gestapelt.
 
 SIEHE AUCH
-     command_stack(E), notify_fail(E), enable_commands(E), get_eval_cost(E)
-     command_me(L)
-
-6 Sep 2012 Gloinson
+        command_stack(E), notify_fail(E), enable_commands(E), get_eval_cost(E)
