diff --git a/std/thing/properties.c b/std/thing/properties.c
index d289de1..b9b2372 100644
--- a/std/thing/properties.c
+++ b/std/thing/properties.c
@@ -25,12 +25,12 @@
 #include "/secure/wizlevels.h"
 
 // the mapping where the actual properties are stored. Direct initialization.
-// Indexed with F_VALUE, F_MODE, F_SET_METHOD and F_QUERY_METHOD
-// F_MODE, F_SET_METHOD and F_QUERY_METHOD are usually 'sparse' (i.e. there is
-// no entry for most properties), therefore it is more memory-efficient to
-// store them like this than in one mapping, although it requires more
-// mapping lookups.
-private nosave mapping *prop = ({ ([]), ([]), ([]), ([]) });
+// Indexed with F_VALUE, F_MODE, F_SET_METHOD, F_QUERY_METHOD, F_VALIDATOR
+// F_MODE, F_SET_METHOD, F_QUERY_METHOD and F_VALIDATOR are usually 'sparse'
+// (i.e. there is no entry for most properties), therefore it is more
+// memory-efficient to store them like this than in one mapping, although it
+// requires more mapping lookups.
+private nosave mapping *prop = allocate(F_PROP_ENTRIES, ([]));
 
 // the mapping that is used for saving. During save_object/restore_object it
 // contains the properties with SAVE flag. 
@@ -319,7 +319,7 @@
     // nur vom Objekt selber manipuliert werden
     if (same_object||!(prop[F_MODE][names[j]] & (PROTECTED|SECURED)) )
     {
-      i=4;
+      i=F_PROP_ENTRIES;
       while(i--)
       {
         if(props[names[j],i])
@@ -343,11 +343,11 @@
   int i, j;
   string *names;
 
-  props = m_allocate( 0, 4 );
+  props = m_allocate( sizeof(prop[F_VALUE]), F_PROP_ENTRIES );
   
   if (pointerp(prop))
   {
-    i=4;
+    i=F_PROP_ENTRIES;
     while(i--)
     {
       names = m_indices(prop[i]);
@@ -364,7 +364,7 @@
   if ( pointerp(prop) )
     return(deep_copy(prop));
   else
-    return ({ ([]),([]),([]),([]) });
+    return allocate(F_PROP_ENTRIES, ([]));
 }
 
 
