diff --git a/Headers/Additions/GNUstepGUI/GSXibLoading.h b/Headers/Additions/GNUstepGUI/GSXibLoading.h
new file mode 100644
index 000000000..fb0fdb306
--- /dev/null
+++ b/Headers/Additions/GNUstepGUI/GSXibLoading.h
@@ -0,0 +1,154 @@
+/*
GSXibLoading
+
+ Xib (Cocoa XML) model loader
+
+ Copyright (C) 2010 Free Software Foundation, Inc.
+
+ Written by: Fred Kiefer
+ Created: March 2010
+ Refactored slightly by: Gregory Casamento
+ Created: May 2010
+
+ This file is part of the GNUstep Base Library.
+
+ This library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Library General Public
+ License as published by the Free Software Foundation; either
+ version 2 of the License, or (at your option) any later version.
+
+ This library is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Library General Public License for more details.
+
+ You should have received a copy of the GNU Library General Public
+ License along with this library; if not, write to the Free
+ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111 USA.
+*/
+
+#ifndef _GNUstep_H_GSXibLoading
+#define _GNUstep_H_GSXibLoading
+
+#import
+#import
+
+@class NSString, NSDictionary, NSArray, NSMutableDictionary, NSMutableArray;
+
+// Hack: This allows the class name FirstResponder in NSCustomObject and
+// correctly returns nil as the corresponding object.
+@interface FirstResponder: NSObject
+{
+}
+@end
+
+@interface IBClassDescriptionSource: NSObject
+{
+ NSString *majorKey;
+ NSString *minorKey;
+}
+@end
+
+@interface IBPartialClassDescription: NSObject
+{
+ NSString *className;
+ NSString *superclassName;
+ NSMutableDictionary *actions;
+ NSMutableDictionary *outlets;
+ IBClassDescriptionSource *sourceIdentifier;
+}
+@end
+
+@interface IBClassDescriber: NSObject
+{
+ NSMutableArray *referencedPartialClassDescriptions;
+}
+@end
+
+@interface IBConnection: NSObject
+{
+ NSString *label;
+ id source;
+ id destination;
+}
+- (id) nibInstantiate;
+- (void) establishConnection;
+@end
+
+@interface IBActionConnection: IBConnection
+{
+}
+@end
+
+@interface IBOutletConnection: IBConnection
+{
+}
+@end
+
+@interface IBConnectionRecord: NSObject
+{
+ IBConnection *connection;
+ int connectionID;
+}
+@end
+
+@interface IBObjectRecord: NSObject
+{
+ int objectID;
+ id object;
+ id children;
+ id parent;
+}
+- (id) object;
+@end
+
+@interface IBMutableOrderedSet: NSObject
+{
+ NSArray *orderedObjects;
+}
+- (NSArray *)orderedObjects;
+@end
+
+@interface IBObjectContainer: NSObject
+{
+ NSMutableArray *connectionRecords;
+ IBMutableOrderedSet *objectRecords;
+ NSMutableDictionary *flattenedProperties;
+ NSMutableDictionary *unlocalizedProperties;
+ id activeLocalization;
+ NSMutableDictionary *localizations;
+ id sourceID;
+ int maxID;
+}
+- (id) nibInstantiate;
+- (NSEnumerator *) objectRecordEnumerator;
+@end
+
+@interface GSXibElement: NSObject
+{
+ NSString *type;
+ NSDictionary *attributes;
+ NSString *value;
+ NSMutableDictionary *elements;
+ NSMutableArray *values;
+}
+- (NSString*) type;
+- (NSString*) value;
+- (NSDictionary*) elements;
+- (NSArray*) values;
+- (void) addElement: (GSXibElement*)element;
+- (void) setElement: (GSXibElement*)element forKey: (NSString*)key;
+- (void) setValue: (NSString*)text;
+- (NSString*) attributeForKey: (NSString*)key;
+- (GSXibElement*) elementForKey: (NSString*)key;
+@end
+
+@interface GSXibKeyedUnarchiver: NSKeyedUnarchiver
+{
+ NSMutableDictionary *objects;
+ NSMutableArray *stack;
+ GSXibElement *currentElement;
+ NSMutableDictionary *decoded;
+}
+@end
+
+#endif
diff --git a/Source/GSXibLoader.m b/Source/GSXibLoader.m
index d7b7ee350..e6ab4558d 100644
--- a/Source/GSXibLoader.m
+++ b/Source/GSXibLoader.m
@@ -42,18 +42,12 @@
#import "AppKit/NSNibLoading.h"
#import "GNUstepGUI/GSModelLoaderFactory.h"
#import "GNUstepGUI/GSNibLoading.h"
+#import "GNUstepGUI/GSXibLoading.h"
@interface NSApplication (NibCompatibility)
- (void) _setMainMenu: (NSMenu*)aMenu;
@end
-// Hack: This allows the class name FirstResponder in NSCustomObject and
-// correctly returns nil as the corresponding object.
-@interface FirstResponder: NSObject
-{
-}
-@end
-
@implementation FirstResponder
+ (id) allocWithZone: (NSZone*)zone
@@ -63,13 +57,6 @@
@end
-@interface IBClassDescriptionSource: NSObject
-{
- NSString *majorKey;
- NSString *minorKey;
-}
-@end
-
@implementation IBClassDescriptionSource
- (id) initWithCoder: (NSCoder*)coder
@@ -103,16 +90,6 @@
@end
-@interface IBPartialClassDescription: NSObject
-{
- NSString *className;
- NSString *superclassName;
- NSMutableDictionary *actions;
- NSMutableDictionary *outlets;
- IBClassDescriptionSource *sourceIdentifier;
-}
-@end
-
@implementation IBPartialClassDescription
- (id) initWithCoder: (NSCoder*)coder
@@ -161,12 +138,6 @@
@end
-@interface IBClassDescriber: NSObject
-{
- NSMutableArray *referencedPartialClassDescriptions;
-}
-@end
-
@implementation IBClassDescriber
- (id) initWithCoder: (NSCoder*)coder
@@ -195,16 +166,6 @@
@end
-@interface IBConnection: NSObject
-{
- NSString *label;
- id source;
- id destination;
-}
-- (id) nibInstantiate;
-- (void) establishConnection;
-@end
-
@implementation IBConnection
- (id) initWithCoder: (NSCoder*)coder
@@ -266,11 +227,6 @@
@end
-@interface IBActionConnection: IBConnection
-{
-}
-@end
-
@implementation IBActionConnection
- (void) establishConnection
@@ -283,11 +239,6 @@
@end
-@interface IBOutletConnection: IBConnection
-{
-}
-@end
-
@implementation IBOutletConnection
- (void) establishConnection
@@ -337,13 +288,6 @@
@end
-@interface IBConnectionRecord: NSObject
-{
- IBConnection *connection;
- int connectionID;
-}
-@end
-
@implementation IBConnectionRecord
- (id) initWithCoder: (NSCoder*)coder
@@ -387,16 +331,6 @@
@end
-@interface IBObjectRecord: NSObject
-{
- int objectID;
- id object;
- id children;
- id parent;
-}
-- (id) object;
-@end
-
@implementation IBObjectRecord
- (id) initWithCoder: (NSCoder*)coder
@@ -444,13 +378,6 @@
@end
-@interface IBMutableOrderedSet: NSObject
-{
- NSArray *orderedObjects;
-}
-- (NSArray *)orderedObjects;
-@end
-
@implementation IBMutableOrderedSet
- (id) initWithCoder: (NSCoder*)coder
{
@@ -482,21 +409,6 @@
}
@end
-@interface IBObjectContainer: NSObject
-{
- NSMutableArray *connectionRecords;
- IBMutableOrderedSet *objectRecords;
- NSMutableDictionary *flattenedProperties;
- NSMutableDictionary *unlocalizedProperties;
- id activeLocalization;
- NSMutableDictionary *localizations;
- id sourceID;
- int maxID;
-}
-- (id) nibInstantiate;
-- (NSEnumerator *) objectRecordEnumerator;
-@end
-
@implementation IBObjectContainer
- (id) initWithCoder:(NSCoder *)coder
@@ -562,37 +474,6 @@
@end
-
-
-@interface GSXibElement: NSObject
-{
- NSString *type;
- NSDictionary *attributes;
- NSString *value;
- NSMutableDictionary *elements;
- NSMutableArray *values;
-}
-- (NSString*) type;
-- (NSString*) value;
-- (NSDictionary*) elements;
-- (NSArray*) values;
-- (void) addElement: (GSXibElement*)element;
-- (void) setElement: (GSXibElement*)element forKey: (NSString*)key;
-- (void) setValue: (NSString*)text;
-- (NSString*) attributeForKey: (NSString*)key;
-- (GSXibElement*) elementForKey: (NSString*)key;
-@end
-
-@interface GSXibKeyedUnarchiver: NSKeyedUnarchiver
-{
- NSMutableDictionary *objects;
- NSMutableArray *stack;
- GSXibElement *currentElement;
- NSMutableDictionary *decoded;
-}
-
-@end
-
@interface GSXibLoader: GSModelLoader
{
}