diff --git a/std/container/description.c b/std/container/description.c
index a299a89..ef36d49 100644
--- a/std/container/description.c
+++ b/std/container/description.c
@@ -20,7 +20,7 @@
 #include <wizlevels.h>
 
 
-void create()
+protected void create()
 {
   ::create();
   SetProp(P_TRANSPARENT, 1);
@@ -86,7 +86,7 @@
 
 // flags: 1 - return array, 2 - don't collect equal objects '
 // flags: 4 - don't append infos for wizards
-varargs mixed make_invlist(object viewer, mixed inv, int flags)
+visible varargs mixed make_invlist(object viewer, mixed inv, int flags)
 {
   int iswiz;
   mixed objs, info;
diff --git a/std/container/light.c b/std/container/light.c
index 435400f..7de4c43 100644
--- a/std/container/light.c
+++ b/std/container/light.c
@@ -38,7 +38,7 @@
    return 999;
 }
 
-public int add_light_sources(int * sources) {
+protected int add_light_sources(int * sources) {
   float light = 0.0;
   //printf("als(%O): %O\n",this_object(),sources);
   // Alle Lichtlevel werden als Exponent von e aufgefasst und die Summe dieser
diff --git a/std/container/restrictions.c b/std/container/restrictions.c
index 91339cb..1095b85 100644
--- a/std/container/restrictions.c
+++ b/std/container/restrictions.c
@@ -42,7 +42,7 @@
 private nosave int last_content_change;
 
 
-void create()
+protected void create()
 {
     Set( P_WEIGHT_PERCENT, 50 );
     Set( P_TOTAL_WEIGHT, NOSETMETHOD, F_SET_METHOD );
@@ -108,7 +108,7 @@
 
 
 // diese Funktion sollte von Raeumen natuerlich ueberschrieben werden...
-int MayAddObject( object ob )
+public int MayAddObject( object ob )
 {
     if (ob) {
         if ( !ob->short() )
@@ -125,7 +125,7 @@
 #define ENV environment
 #define PO previous_object()
 
-int MayAddWeight( int w )
+public int MayAddWeight( int w )
 {
     int nw, aw;
 
@@ -205,7 +205,7 @@
 #define POS_INVERS   0x01  /* nur zur funktionsinternen Verwendung */
 #define POS_LETZTES  0x02  /* nur zur funktionsinternen Verwendung */
 
-object *present_objects( string complex_desc )
+public object *present_objects( string complex_desc )
 {
     int i;          // Zaehlervariable
     int meth;       // 0x01 = invers?,  0x02 = letztes?
@@ -464,7 +464,7 @@
  * Funktion wird nicht mehr von put_and_get aufgerufen, stattdessen wird
  * direkt present_objects benutzt!
  */ 
-object *locate_objects( string complex_desc, int info ) {
+public object *locate_objects( string complex_desc, int info ) {
     string was, wo;
 
     if ( sscanf( complex_desc, "%s in %s", was, wo ) == 2 ){
diff --git a/sys/container.h b/sys/container.h
index 9555610..3ddf226 100644
--- a/sys/container.h
+++ b/sys/container.h
@@ -53,18 +53,18 @@
 
 // prototypes
 // from: container/description.c
-varargs mixed make_invlist(object viewer, mixed inv, int array);
+visible varargs mixed make_invlist(object viewer, mixed inv, int array);
 
 // from: container/restrictions.c
 int query_weight_contents();
 static int _query_last_content_change();
 
-int MayAddWeight(int w);
-int MayAddObject(object ob);
+public int MayAddWeight(int w);
+public int MayAddObject(object ob);
 public int PreventInsert(object ob);
 public int PreventLeave(object ob, mixed dest);
-object *present_objects(string complex_desc);
-object *locate_objects(string complex_desc,int info);
+public object *present_objects(string complex_desc);
+public object *locate_objects(string complex_desc,int info);
 
 // container/items.c
 public varargs object     AddItem( mixed filename, int refresh, mixed props);
