diff --git a/doc/efun/remove_input_to b/doc/efun/remove_input_to
index 3bbbcea..a443529 100644
--- a/doc/efun/remove_input_to
+++ b/doc/efun/remove_input_to
@@ -3,36 +3,31 @@
         int remove_input_to(object player, string fun)
         int remove_input_to(object player, closure fun)
         int remove_input_to(object player, object|lwobject fun)
-        int remove_input_to(object player, object|lwobject obj, string fun)
+        int remove_input_to(object player, object|lwobject ob, string fun)
 
-BESCHREIBUNG
-        Entfernt ein anhaengiges input_to() aus dem interaktiven Playerobjekt.
-        Wenn <fun> nicht angegeben ist, wird der zuletzt aufgerufen input_to()
-        entfernt.
+DESCRIPTION
+        Remove a pending input_to from the interactive <player> object.
+        If the optional <fun> is not given, the most recently added input_to
+        is removed.
 
-        Wurde <fun> angegeben, entfernt remove_input_to das neueste auf <fun>
-        aufgerufene input_to. Je nach der Definition von <fun> wird nach
-        unterschiedlichen Kriterien gesucht:
-          - <fun> ist ein String: gesucht wird nach dem Funktionsnamen
-          - <fun> ist ein Objekt: gesucht wird nach dem Objekt, in dem
-            input_to() aufgerufen wurde
-          - <fun> ist eine Closure: gesucht wird nach der Closure, die
-            input_to() enthaelt
-          - <obj> und <fun> wurden angegeben: es wird nach Objekt und
-            Funktionsname gesucht. Beide muessen uebereinstimmen.
+        If the optional <fun> is given, the efun tries to find and remove the
+        most recently added input_to matching the <fun> argument:
+         - <fun> is a string: the input_to functionname has to match
+         - <fun> is an object: the object the input_to function is bound to
+                               has to match
+         - <fun> is a closure: the input_to closure has to match.
+         - <ob> and <fun> are given: both the object and the functionname
+                               have to match
 
-        remove_input_to() liefert 1 bei Erfolg, sonst 0 (es wurde kein
-        input_to() gefunden, das Objekt ist nicht interaktiv oder es gibt
-        kein haengiges input_to() auf dem Objekt).
+        Return 1 on success, or 0 on failure (no input_to found, object is
+        not interactive or has no input_to pending).
 
-BEISPIELE
-        Entfernt alle anhaengigen input_to()s des aktuellen Spielers,
-        falls vorhanden:
-            while (remove_input_to(this_interactive()));
+EXAMPLES
+        Remove all pending input_to from the current user, if any.
+            while (remove_input_to(this_interactive())) ;
 
-GESCHICHTE
-        Eingefuehrt in LDMud 3.2.9 / 3.3.119.
+HISTORY
+        Introduced in LDMud 3.2.9 / 3.3.119.
 
-SIEHE AUCH
-        input_to(E), find_input_to(E), input_to_info(E),
-        query_input_pending(E)
+SEE ALSO
+        input_to(E), find_input_to(E), input_to_info(E), query_input_pending(E)
