Index: Source/GSGormLoading.m
===================================================================
--- Source/GSGormLoading.m	(revision 30058)
+++ Source/GSGormLoading.m	(working copy)
@@ -227,9 +227,8 @@
 
       /* 
        * See if the user has passed in the NSTopLevelObjects key.
-       * This is an implementation of an undocumented, but commonly used feature
-       * of nib files to allow the release of the top level objects in the nib
-       * file.
+       * This is an implementation of a commonly used feature to give access to
+       * all top level objects of a nib file with using outlets.
        */
       obj = [context objectForKey: @"NSTopLevelObjects"];
       if ([obj isKindOfClass: [NSMutableArray class]])
@@ -282,20 +281,11 @@
 		    {
 		      if ([topLevelObjects containsObject: o]) // anything already designated a top level item..
 			{
-			  if (topObjects == nil)
-			    {
-			      // It is expected, if the NSTopLevelObjects key is not passed in,
-			      // that the user has opted to either allow these objects to leak or
-			      // to release them explicitly.
-			      RETAIN(o);
-			    }
-			  else
-			    {
-			      // We don't want to do the extra retain if the items are added to the
-			      // array, since the array will do the retain for us.   When the array
-			      // is released, the top level objects should be released as well.
-			      [topObjects addObject: o];
-			    }
+			  [topObjects addObject: o];
+			  // All top level objects (that are not retained and
+			  // released by other nib objects) must be released by
+			  // the caller to avoid leaking.
+			  RETAIN(o);
 			}
 		    }
 		}
