diff --git a/std/thing/properties.c b/std/thing/properties.c
index e97983f..1e7cdad 100644
--- a/std/thing/properties.c
+++ b/std/thing/properties.c
@@ -64,27 +64,34 @@
 
 
 // Set() -- provides direct access to a property, no filters
-public varargs mixed Set( string name, mixed Value, int Type, int extern )
+// Type=F_VALUE und drop_priv=extern_call() by default
+public mixed Set(string name, mixed Value, int Type, int drop_priv)
 {
-
   if (!objectp(this_object()))
     return 0;
 
   // Properties, die SECURED oder PROTECTED sind, duerfen nur vom Objekt
-  // selber, EM+ oder ROOT veraendert werden
+  // selber, EM+ oder ROOT veraendert werden.
+  // Es ist verfuehrerisch, das 'drop_priv||extern_call()' durch 'drop_priv'
+  // zu ersetzen, weil extern_call() das default-argument fuer <drop_priv>
+  // ist. Das ist keine gute Idee, weil <drop_priv> unter der Kontrolle des
+  // Aufrufers ist und dieser 0 uebergeben kann. Sprich: wenn es 0 ist,
+  // muessen wir dennoch selber pruefen. Wir glauben aber immer, wenn es 1
+  // ist und der Aufrufer Privilegien abgeben will.
   if ((prop[F_MODE][name]&(PROTECTED|SECURED))&&
-      (closure_call||extern||extern_call()) &&
+      (closure_call||drop_priv||extern_call()) &&
        previous_object() != this_object() && !allowed())
     return -1;
-  
+
   // Das SECURED-Flag darf bei Properties nicht mehr geloescht werden
   if ((prop[F_MODE][name]&SECURED)&&
       (Type==F_MODE||Type==F_MODE_AD)&&(Value & SECURED))
     return -2;
-  
+
   // Setzen duerfen das SECURED-Flag nur das Objekt selber, EM+ oder ROOT
+  // 'drop_priv||extern_call()' ist Absicht, s.o.
   if ((Type==F_MODE||Type==F_MODE_AS)&&(Value&SECURED)&&
-      (closure_call ||extern || extern_call()) &&
+      (closure_call || drop_priv || extern_call()) &&
        previous_object() != this_object() && !allowed() )
     return -3;
 
@@ -127,7 +134,8 @@
 
 
 // Direktes Auslesen der Property ohne Filter ...
-public varargs mixed Query( string name, int Type )
+// Type = F_VALUE by default
+public mixed Query( string name, int Type )
 {
     if (pointerp(prop)) return prop[Type][name];
     return 0;
