diff --git a/doc/lfun/GetHelperObject b/doc/lfun/GetHelperObject
new file mode 100644
index 0000000..e879129
--- /dev/null
+++ b/doc/lfun/GetHelperObject
@@ -0,0 +1,93 @@
+
+GetHelperObject()
+*****************
+
+
+FUNKTION
+========
+
+   public varargs object GetHelperObject(int type, int|closure
+   strength
+      varargs mixed* extra)
+
+
+DEFINIERT IN
+============
+
+   /std/living/helpers.c
+
+
+ARGUMENTE
+=========
+
+   type:
+      Eine der in helpers.h definierten Konstanten
+
+   strength:
+      minimal geforderte Staerke des Helfers oder Closure zum Filtern
+      der Helferobjekte.
+
+   extra:
+      Beliebige und beliebig viele Argumente, welche an die Closure
+      <strength> weitergegeben werden.
+
+
+BESCHREIBUNG
+============
+
+   Gibt das zuerst gefundene als Helfer registrierte Objekt zurueck,
+   welches die Anforderungen erfuellt.
+
+   Ist <strength> ein int, muss die Staerke/Guete des Helfers
+   (Rueckgabewert der Callback-Methode, siehe
+   *RegisterHelperObject()*) mindestens so gross sein wie der als
+   <strength> uebergebene Wert.
+
+   Ist <strength> eine Closure, wird diese fuer jeden Helfer
+   ausgewertet und entscheidet, ob der Helfer akzeptiert wird. Die
+   Closure bekommt hierbei das Helferobjekt, die vom Helfer angegebene
+   Staerke/Guete und etwaige hier als <extra> uebergebene Argument
+   uebergeben. Ist der Rueckgabewert von <strength> != 0, wird der
+   Helfer akzeptiert und von GetHelperObject zurueckgegeben (ohne
+   weitere Helfer zu pruefen).
+
+
+RUECKGABEWERT
+=============
+
+   Objekt welches den uebergebenen Anforderungen entspricht.
+
+
+BEISPIELE
+=========
+
+   // Es wird ein Helfer zum Tauchen mit der Staerke 4 gesucht
+   PL->GetHelperObject(HELPER_TYPE_AQUATIC, 4);
+
+   // Es wird ein Helfer zum Fliegen mit der Staerke 4 gesucht, welcher aber
+   // mindestens 60 cm gross und maximal 900 g schwer ist.
+   PL->GetHelperObject(HELPER_TYPE_AERIAL, function int (object h, int s)
+         { return s >= 4
+           && h->QueryProp(P_SIZE) >= 60 && h->QueryProp(P_WEIGHT) <= 900;
+         }
+         );
+
+   // Es wird ein Helfer zum Fliegen mit der Staerke 4 gesucht, welcher aber
+   // mindestens 60 cm gross und maximal 900 g schwer ist, aber diese Grenzen
+   // werden nicht in der Funktion festgelegt, sondern als <extra> uebergeben.
+   PL->GetHelperObject(HELPER_TYPE_AERIAL,
+         function int (object h, int s, int min_s, int minsize, int maxweight)
+           { return s >= min_s
+                  && h->QueryProp(P_SIZE) >= minsize
+                  && h->QueryProp(P_WEIGHT) <= maxweight;
+           },
+         4, 60, 900);
+
+
+SIEHE AUCH
+==========
+
+   *RegisterHelperObject()*, *UnregisterHelperObject()*,
+   *P_AERIAL_HELPERS*, *P_AQUATIC_HELPERS*, *P_HELPER_OBJECTS*
+
+Letzte Aenderung: 9.3.2018, Zesstra
