diff --git a/doc/lfun/AddCmd_bsp b/doc/lfun/AddCmd_bsp
index edb8d98..6a4e177 100644
--- a/doc/lfun/AddCmd_bsp
+++ b/doc/lfun/AddCmd_bsp
@@ -76,7 +76,7 @@
     // bei Nichtverwendung von Regeln muss man Parameter selbst auswerten
     AddCmd(({"bohr","bohre"}),#'action_bohren);
     ...
-    private static int action_bohren(string str) {
+    private int action_bohren(string str) {
       string *tmp;
       notify_fail("Wo willst (etwas) Du bohren?\n");
       if(!str) return 0;       // Tja, keine Argumente ...
@@ -106,7 +106,7 @@
  ## Variante 1a, OHNE REGELN ##
     // prinzipiell koennte die Methode action_bohren auch so
     // aussehen, ist aber nicht ganz so flexibel:
-    private static int action_bohren(string str) {
+    private int action_bohren(string str) {
      string tmp;
      if(!str || (sprintf(str,"loch in erde%s",tmp)!=1 &&
                  sprintf(str,"loch durch erde%s",tmp)!=1 &&
@@ -127,7 +127,7 @@
            "Willst du das Loch in etwas bohren?|"
            "Wohin willst du das Loch bohren?");
     ...
-    private static int action_bohren(string str, mixed *param) {
+    private int action_bohren(string str, mixed *param) {
      write("Du bohrst ein Loch in den Boden.\n");
      say(this_player()->Name(WER)+" bohrt ein Loch in den Boden.\n");
      ...
@@ -142,7 +142,7 @@
            "Willst du das Loch in etwas @verben?|"
            "@WER3 was willst du das Loch @verben?");
     ...
-    private static int action_bohren(string str, mixed *param) ...
+    private int action_bohren(string str, mixed *param) ...
 
  ## Variante 4, MIT REGEL, FEHLERMELDUNG UND RETURN 1 ##
     // in Variante 1 kam sinnvollerweise sehr frueh der Abbruch mit
@@ -153,7 +153,7 @@
            "Willst du das Loch in etwas @verben?^|"
            "@WER3 was willst du das Loch @verben?^");
     ...
-    private static int action_bohren(string str, mixed *param) ...
+    private int action_bohren(string str, mixed *param) ...
 
  ## Variante 5, MIT REGEL, FEHLERMELDUNG, RETURN 1, OHNE FUN ##
     // und falls in action_bohren() nichts ausser Ausgaben passiert, koennen
@@ -176,7 +176,7 @@
     // mit PreventInsert() basteln sollte)
     AddCmd(({"stopf","stopfe"}),#'action_stopf);
     ...
-    private static int action_stopf(string str) {
+    private int action_stopf(string str) {
      string tmp,tmp2;
      object o;
 
@@ -216,7 +216,7 @@
     ...
     // dabei werden wie immer die gefunden Matches als Parameterarray
     // uebergeben ... und die @PRESENT und @ID als Objekte!
-    private static int action_stopf(string str, mixed *param) {
+    private int action_stopf(string str, mixed *param) {
      if(param[0]->QueryProp(...)) {
       write(break_string(
        "Du stopfst "+param[0]->name(WEN,1)+" in den Automaten.",78));
@@ -317,4 +317,4 @@
 
     --- Ende Komplexbeispiel mehrere Regeln ---
 
-10 Juni 2004 Gloinson
+Letzte Aenderung: 22.12.2016, Bugfix
diff --git a/doc/lfun/DistributeExp b/doc/lfun/DistributeExp
index f02f69a..b9bf3d1 100644
--- a/doc/lfun/DistributeExp
+++ b/doc/lfun/DistributeExp
@@ -1,6 +1,6 @@
 DistributeExp()
 FUNKTION:
-     private static void DistributeExp(object enemy, int exp_to_give)
+     private void DistributeExp(object enemy, int exp_to_give)
 
 DEFINIERT IN:
      /std/living/life.c
@@ -21,4 +21,4 @@
      Properties:  P_XP
      Sonstiges:   teamkampf
 
-14.Feb 2007 Gloinson
\ No newline at end of file
+Letzte Aenderung: 22.12.2016, Bugfix
diff --git a/doc/lfun/SetAttr b/doc/lfun/SetAttr
index 8ecf381..8ed476f 100644
--- a/doc/lfun/SetAttr
+++ b/doc/lfun/SetAttr
@@ -1,6 +1,6 @@
 SetAttr()
 FUNKTION:
-     private static int SetAttr(string attr, int val)
+     public int SetAttr(string attr, int val)
 
 DEFINIERT IN:
      /std/living/attributes.c
@@ -28,4 +28,4 @@
      P_ATTRIBUTES, P_ATTRIBUTES_OFFSETS, P_ATTRIBUTES_MODIFIER,
      P_X_ATTR_MOD, P_M_ATTR_MOD, /std/living/attributes.c
 
-13.Nov.2002, Gloinson
\ No newline at end of file
+Letzte Aenderung: 22.12.2016, Bugfix
