diff --git a/doc/lfun-liste b/doc/lfun-liste
index f3b0170..98653a7 100644
--- a/doc/lfun-liste
+++ b/doc/lfun-liste
@@ -42,8 +42,6 @@
 
 * AddKnownPotion()
 
-* AddMaterial()
-
 * AddMiniQuest()
 
 * AddMoney()
@@ -570,7 +568,7 @@
 
 * RemoveTouchDetail()
 
-* AddvItem()
+* RemoveVItem()
 
 * ResizeRingBuffer()
 
diff --git a/doc/lfun/AddMaterial b/doc/lfun/AddMaterial
new file mode 100644
index 0000000..7f90d82
--- /dev/null
+++ b/doc/lfun/AddMaterial
@@ -0,0 +1,100 @@
+
+AddMaterial()
+*************
+
+
+FUNKTION
+========
+
+   private static varargs void AddMaterial(string mat, int gender,
+                                           mixed names, mixed groups,
+                                           mixed dif) {
+
+
+DEFINIERT IN
+============
+
+   /p/daemon/materialdb.c (MATERIALDB)
+
+
+ARGUMENTE
+=========
+
+   string mat
+     Materialstring, definiert in <thing/material.h>
+
+   int gender
+     Geschlecht des einzutragenden Materials
+
+   mixed names
+     Name des Materials:
+     - "<Nominativ>" oder (meist nur Nom. und Gen. noetig)
+     - ({"<Nominativ>","<Genitiv>","<Dativ>","<Akkusativ>"})
+
+   mixed groups
+     Eingruppierung des Materials:
+     - MATGROUP_XXX oder ({MATGROUP_XXX,...})
+     - ([MAT_GROUP_XXX:xx,MATGROUP_YYY:yy,...])
+
+   mixed dif
+     Schwierigkeiten bei der Erkennbarkeit:
+     - int x oder ({MINMAT,x1,MATPOS1,x2,MATPOS2 ...})
+     - xn: Erkennbarkeitsschwierigkeit (100=100%) -100..100
+     - MINMAT: Erkennung zumindest als _dieses_ Material
+               moeglich
+     - MATPOSn: moegliches Material, erkennbar, wenn
+                Erkennbarkeitfaehigkeit>=xn
+                -> das letzte MATPOS muss natuerlich
+                   string mat entsprechen
+
+
+BESCHREIBUNG
+============
+
+   Es wird in die Materialiendatenbank eine neues Material aufgenommen,
+   die Stringkonstante dafuer wird vorher in <thing/material.h> fest-
+   gelegt. Falls der Genitiv nicht Nominativ+"s" entspricht (z.B. "Seide"),
+   sollte dieser explizit angegeben werden.
+   Nach Neuladen der Datenbank ist dieses Material auch per MaterialName(),
+   'erkennbar' (siehe mixed dif, siehe Beispiel) bzw. seinen einzelnen
+   Gruppen zuordnbar.
+
+
+BEISPIELE
+=========
+
+   AddMaterial(MAT_NITROGLYCERINE,NEUTER,"Nitroglycerin",
+               ({MATGROUP_EXPLOSIVE,MATGROUP_FLUID}),
+               ({MAT_OIL,25,MAT_MISC_EXPLOSIVE,50,MAT_NITROGLYCERINE}));
+
+   Damit wird das Material Nytroglycerin aufgenommen, ein explosiver
+   (damit entflammbarer) sowie fluessiger Stoff. Liegt die Erkennungs-
+   faehigkeit (MaterialName()) unter 25, wird es nur als Oel erkannt,
+   liegt sie unter 50, wird es zumindest als explosives Material erkannt,
+   liegt sie ueber 49, so wird es korrekt erkannt (wie schade :) ).
+
+
+BEMERKUNGEN
+===========
+
+   Wird in der create() der Datenbank aufgerufen. Zu beachten:
+   - vor Eintrag eines _neuen_ Materials die Datenbank durchsuchen!
+   - bei den Materialiengruppen die automatischen Abhaengigkeiten in
+     AddMaterial() durchsehen!
+   - bitte Datenbank neu laden
+
+
+SIEHE AUCH
+==========
+
+   Konzepte:    material, materialerkennung
+   Grundlegend: P_MATERIAL, /sys/thing/material.h
+   Methoden:    QueryMaterial(), QueryMaterialGroup(), MaterialList(),
+   Listen:      AllMaterials(), AllGroups(), Dump()
+                materialliste, materialgruppen
+   Master:      ConvMaterialList(), MaterialGroup(),
+                GroupName(), MaterialName(),
+                GetGroupMembers(), GetMatMembership()
+   Sonstiges:   P_MATERIAL_KNOWLEDGE
+
+7. Mai 2004 Gloinson
diff --git a/doc/lfun/PreventMove b/doc/lfun/PreventMove
index 920372d..ec8c1da 100644
--- a/doc/lfun/PreventMove
+++ b/doc/lfun/PreventMove
@@ -3,8 +3,8 @@
 *************
 
 
-PreventInsert()
-===============
+PreventMove()
+=============
 
 
 FUNKTION
@@ -16,63 +16,69 @@
 DEFINIERT IN
 ============
 
-   /std/thing/moving.c
-   /std/living/moving.c
-   /std/player/moving.c
+   /std/thing/moving.c /std/living/moving.c /std/player/moving.c
 
 
 ARGUMENTE
 =========
 
    dest
-        Das Ziel des Moves
+      Das Ziel des Moves
+
    oldenv
-        Das (Noch-)Environment des Objekts
+      Das (Noch-)Environment des Objekts
+
    method
-        Die Move-Methode(n), mit der/denen bewegt werden soll
+      Die Move-Methode(n), mit der/denen bewegt werden soll
 
 
 BESCHREIBUNG
 ============
 
-   Mit dieser Funktion prueft ein Objekt, ob es von 'oldenv' nach 'dest'
-   bewegt werden mag. Dabei wird 'method' beruecksichtigt (z.B. schaltet
-   M_NOCHECK die meisten Pruefungen ab).
-   Bei Gegenstaenden wird z.B. P_NODROP, P_NOGET, das Gewicht, ob das Ziel
-   das Objekt aufnehmen will (MayAddWeight(), PreventInsert) oder auch
-   PreventLeave() geprueft.
-   Bei Lebewesen wird z.B. P_NO_TPORT in 'dest' und 'oldenv' und
-   PreventLeaveLiving/PreventInsertLiving() ausgewertet.
-   Bei Spielern wird auch noch getestet, ob method M_GO oder M_TPORT
-   enthaelt und ob das Ziel nur von Testspielern betreten werden kann.
+   Mit dieser Funktion prueft ein Objekt, ob es von 'oldenv' nach
+   'dest' bewegt werden mag. Dabei wird 'method' beruecksichtigt (z.B.
+   schaltet M_NOCHECK die meisten Pruefungen ab). Bei Gegenstaenden
+   wird z.B. P_NODROP, P_NOGET, das Gewicht, ob das Ziel das Objekt
+   aufnehmen will (MayAddWeight(), PreventInsert) oder auch
+   PreventLeave() geprueft. Bei Lebewesen wird z.B. P_NO_TPORT in
+   'dest' und 'oldenv' und PreventLeaveLiving/PreventInsertLiving()
+   ausgewertet. Bei Spielern wird auch noch getestet, ob method M_GO
+   oder M_TPORT enthaelt und ob das Ziel nur von Testspielern betreten
+   werden kann.
 
 
 RUeCKGABEWERT
 =============
 
-   0, wenn das Objekt bewegt werden darf.
-   Wenn es nicht bewegt werden darf, sind als Rueckgabewerte die in
-   /sys/moving.h definierten Move-Fehlerwerte zulaessig (s. move()). Sollte
-   hier ein ungueltiger Fehlerwert zurueckgegeben werden, wird das move()
-   ebenfalls abgebrochen und ME_DONT_WANT_TO_BE_MOVED zurueckgeben.
+   0, wenn das Objekt bewegt werden darf. Wenn es nicht bewegt werden
+   darf, sind als Rueckgabewerte die in /sys/moving.h definierten
+   Move-Fehlerwerte zulaessig (s. move()). Sollte hier ein ungueltiger
+   Fehlerwert zurueckgegeben werden, wird das move() ebenfalls
+   abgebrochen und ME_DONT_WANT_TO_BE_MOVED zurueckgeben.
 
 
 BEMERKUNGEN
 ===========
 
    Diese Funktion kann ueberschrieben, um feinere Kontrolle ueber die
-   Bewegungen des Objekt zu haben. Dabei aber bitte einige Dinge beachten:
+   Bewegungen des Objekt zu haben. Dabei aber bitte einige Dinge
+   beachten:
+
    1. Denkt daran, ggf. M_NOCHECK zu beruecksichtigen und und eure
    Pruefungen nur zu machen, wenn es nicht in method vorkommt.
-   2. GANZ WICHTIG: Wenn ihr mit euren Pruefungen fertig sein und das Objekt
-   bewegt werden duerfte, die geerbten Pruefungen noch testen, also _IMMER_
-   das geerbte PreventMove() noch aufrufen und dessen Wert
-   zurueckgeben/beruecksichtigen, da sonst Pruefungen des Gewichts etc.
-   nicht funktionieren oder bei Lebewesen die Prevent*() im Environment
-   nicht gerufen werden!
-   3. Die Funktion ist nur objektintern zu verwenden, Call-Other von aussen
-   sind nicht moeglich, beim Ueberschreiben 'protected' nicht vergessen.
-   4. Nochmal: Geerbtes PreventMove() _NICHT VERGESSEN_!
+
+   2. *GANZ WICHTIG*: Wenn ihr mit euren Pruefungen fertig sein und
+   das Objekt bewegt werden duerfte, die geerbten Pruefungen noch
+   testen, also *IMMER* das geerbte PreventMove() noch aufrufen und
+   dessen Wert zurueckgeben/beruecksichtigen, da sonst Pruefungen des
+   Gewichts etc. nicht funktionieren oder bei Lebewesen die Prevent*()
+   im Environment nicht gerufen werden!
+
+   3. Die Funktion ist nur objektintern zu verwenden, Call-Other von
+   aussen sind nicht moeglich, beim Ueberschreiben 'protected' nicht
+   vergessen.
+
+   4. Nochmal: Geerbtes PreventMove() *NICHT VERGESSEN*!
 
 
 BEISPIELE
@@ -104,6 +110,6 @@
 
    PreventLeave(), NotifyInsert(), NotifyLeave(), MayAddObject(),
    PreventInsertLiving(), PreventLeaveLiving(), NotifyMove(),
-   PreventMove(), MayAddWeight(), move(), /std/container/restrictions.c
+   PreventMove(), MayAddWeight(), move()
 
-Last modified: 04.08.2007, Zesstra
+Last modified: 09.01.2020, Zesstra
diff --git a/doc/sphinx/lfun/PreventMove.rst b/doc/sphinx/lfun/PreventMove.rst
index dacbe8f..020789d 100644
--- a/doc/sphinx/lfun/PreventMove.rst
+++ b/doc/sphinx/lfun/PreventMove.rst
@@ -3,17 +3,15 @@
 
 PreventMove()
 ---------------
-::
+
 
 FUNKTION
 --------
-::
 
      protected int PreventMove(object dest, object oldenv, int method);
 
 DEFINIERT IN
 ------------
-::
 
      /std/thing/moving.c
      /std/living/moving.c
@@ -21,7 +19,6 @@
 
 ARGUMENTE
 ---------
-::
 
      dest
           Das Ziel des Moves
@@ -32,7 +29,6 @@
 
 BESCHREIBUNG
 ------------
-::
 
      Mit dieser Funktion prueft ein Objekt, ob es von 'oldenv' nach 'dest'
      bewegt werden mag. Dabei wird 'method' beruecksichtigt (z.B. schaltet
@@ -47,7 +43,6 @@
 
 RUeCKGABEWERT
 -------------
-::
 
      0, wenn das Objekt bewegt werden darf.
      Wenn es nicht bewegt werden darf, sind als Rueckgabewerte die in
@@ -57,29 +52,33 @@
 
 BEMERKUNGEN
 -----------
-::
 
      Diese Funktion kann ueberschrieben, um feinere Kontrolle ueber die
      Bewegungen des Objekt zu haben. Dabei aber bitte einige Dinge beachten:
+     
      1. Denkt daran, ggf. M_NOCHECK zu beruecksichtigen und und eure
      Pruefungen nur zu machen, wenn es nicht in method vorkommt.
-     2. GANZ WICHTIG: Wenn ihr mit euren Pruefungen fertig sein und das Objekt
-     bewegt werden duerfte, die geerbten Pruefungen noch testen, also _IMMER_
-     das geerbte PreventMove() noch aufrufen und dessen Wert
+     
+     2. *GANZ WICHTIG*: Wenn ihr mit euren Pruefungen fertig sein und das
+     Objekt bewegt werden duerfte, die geerbten Pruefungen noch testen,
+     also *IMMER* das geerbte PreventMove() noch aufrufen und dessen Wert
      zurueckgeben/beruecksichtigen, da sonst Pruefungen des Gewichts etc. 
-     nicht funktionieren oder bei Lebewesen die Prevent*() im Environment 
+     nicht funktionieren oder bei Lebewesen die Prevent\*() im Environment 
      nicht gerufen werden!
+     
      3. Die Funktion ist nur objektintern zu verwenden, Call-Other von aussen
      sind nicht moeglich, beim Ueberschreiben 'protected' nicht vergessen.
-     4. Nochmal: Geerbtes PreventMove() _NICHT VERGESSEN_!
+     
+     4. Nochmal: Geerbtes PreventMove() *NICHT VERGESSEN*!
 
 BEISPIELE
 ---------
-::
 
      Ein Objekt, was nur im Sternenlicht aufgenommen werden kann (warum
      auch immer):
 
+.. code-block:: pike
+
      protected int PreventMove(object dest, object oldenv, int method) {
        if ( (method & M_NOCHECK) ) {
            // wenn mit M_NOCHECK bewegt, ist das Sternenlicht egal, nur
@@ -99,12 +98,12 @@
 
 SIEHE AUCH
 ----------
-::
 
-     PreventLeave(), NotifyInsert(), NotifyLeave(), MayAddObject(),
-     PreventInsertLiving(), PreventLeaveLiving(), NotifyMove(),
-     PreventMove(), MayAddWeight(), move(), /std/container/restrictions.c
+     :doc:`../lfun/PreventLeave`, :doc:`NotifyInsert`,
+     :doc:`NotifyLeave`, :doc:`MayAddObject`,
+     :doc:`PreventInsertLiving`, :doc:`PreventLeaveLiving`,
+     :doc:`NotifyMove`, :doc:`PreventMove`, :doc:`MayAddWeight`,
+     :doc:`move`
 
-
-Last modified: 04.08.2007, Zesstra
+Last modified: 09.01.2020, Zesstra
 
