Index: trunk/gli/src/org/greenstone/gatherer/gui/NewCollectionDetailsPrompt.java
===================================================================
--- trunk/gli/src/org/greenstone/gatherer/gui/NewCollectionDetailsPrompt.java	(revision 4318)
+++ trunk/gli/src/org/greenstone/gatherer/gui/NewCollectionDetailsPrompt.java	(revision 4319)
@@ -183,5 +183,5 @@
 		  base_collection_pane.add(base_collection_label, BorderLayout.NORTH);
 		  base_collection_pane.add(base_collection, BorderLayout.CENTER);
-		  base_collection_pane.add(base_collection_browse, BorderLayout.EAST);
+		  //base_collection_pane.add(base_collection_browse, BorderLayout.EAST);
 
 		  center_pane.setBorder(BorderFactory.createEmptyBorder(5,0,5,0));
Index: trunk/gli/src/org/greenstone/gatherer/msm/GreenstoneArchiveParser.java
===================================================================
--- trunk/gli/src/org/greenstone/gatherer/msm/GreenstoneArchiveParser.java	(revision 4318)
+++ trunk/gli/src/org/greenstone/gatherer/msm/GreenstoneArchiveParser.java	(revision 4319)
@@ -61,19 +61,22 @@
 
 	 public GreenstoneArchiveParser(GShellProgressMonitor progress, GShell shell) {
-		  this.shell = shell;
-		  // Determine the collection archive directory.
-		  File archive_directory = new File(Gatherer.c_man.getCollectionArchive());
-		  // For each of the hash coded directories within.
-		  File document_directories[] = archive_directory.listFiles();
-		  for(int i = 0; i < document_directories.length; i++) {
-				// Find the doc.xml file within
-				if(document_directories[i].isDirectory()) {
-					 File document_file = new File(document_directories[i], "doc.xml");
-					 // Then extract the metadata from it.
-					 if(document_file.exists()) {
-						  extractMetadata(document_file);
-						  // Display a pretty progress message.
-						  shell.fireMessage(GShell.IMPORT, shell.typeAsString(GShell.IMPORT) + "> " + Gatherer.dictionary.get("GShell.Extracted", document_directories[i].getName()), GShell.OK);
-						  progress.increment();
+		  // We can only extract metadata if an extracted metadata set exists in our collection.
+		  if(Gatherer.c_man.msm.getSet("") != null) {
+				this.shell = shell;
+				// Determine the collection archive directory.
+				File archive_directory = new File(Gatherer.c_man.getCollectionArchive());
+				// For each of the hash coded directories within.
+				File document_directories[] = archive_directory.listFiles();
+				for(int i = 0; i < document_directories.length; i++) {
+					 // Find the doc.xml file within
+					 if(document_directories[i].isDirectory()) {
+						  File document_file = new File(document_directories[i], "doc.xml");
+						  // Then extract the metadata from it.
+						  if(document_file.exists()) {
+								extractMetadata(document_file);
+								// Display a pretty progress message.
+								shell.fireMessage(GShell.IMPORT, shell.typeAsString(GShell.IMPORT) + "> " + Gatherer.dictionary.get("GShell.Extracted", document_directories[i].getName()), GShell.OK);
+								progress.increment();
+						  }
 					 }
 				}
@@ -112,6 +115,6 @@
 									 ElementWrapper element = Gatherer.c_man.msm.getElement(name);
 									 if(element == null) {
-										  MetadataSet greenstone_mds = Gatherer.c_man.msm.getSet("");
-										  element = greenstone_mds.addElement(name);
+										  MetadataSet extracted_mds = Gatherer.c_man.msm.getSet("ex");
+										  element = extracted_mds.addElement(name);
 									 }
 									 // If we successfully retrieved an element (and we should have) we can continue.
Index: trunk/gli/src/org/greenstone/gatherer/valuetree/GValueModel.java
===================================================================
--- trunk/gli/src/org/greenstone/gatherer/valuetree/GValueModel.java	(revision 4318)
+++ trunk/gli/src/org/greenstone/gatherer/valuetree/GValueModel.java	(revision 4319)
@@ -195,4 +195,9 @@
 	 public boolean isHierarchy() {
 		  boolean result = false;
+		  // We are a hierarchy if our element says so....
+		  if(element.isHierarchy()) {
+				return true;
+		  }
+		  // Or if our children are actually a hierarchy.
 		  for(int i = 0; i < root.getChildCount() && !result; i++) {
 				GValueNode node = (GValueNode) root.getChildAt(i);
