public void loadModels() {
    
    ModelList.SortedListModel dataModel = ((ModelList.SortedListModel) m_ModelList.getModel());
    
    int directoryCount = 0;
    int modelCount = 0;
    
    dataModel.clear();
    
    File directory = m_Library.getWorkingDirectory();
    File subDirectories[] = directory.listFiles();
    
    if (subDirectories != null) {
      
      for (int i = 0; i < subDirectories.length; i++) {
	
	if (subDirectories[i].isDirectory()
	    && subDirectories[i].getName().matches(
	    ".*_instances_.*")) {
	  
	  directoryCount++;
	  
	  File[] subDirectoryFiles = subDirectories[i].listFiles();
	  
	  for (int j = 0; j < subDirectoryFiles.length; j++) {
	    
	    if (subDirectoryFiles[j].getName().matches(".*.elm")) {
	      
	      EnsembleSelectionLibraryModel model = EnsembleSelectionLibraryModel
	      .loadModel(subDirectoryFiles[j].getPath());
	      
	      // get those Classifier[] objects garbage collected!
	      model.releaseModel();
	      
	      if (!dataModel.contains(model)) {
		
		modelCount++;
		dataModel.add(model);
	      }
	    }
	  }
	}
      }
    }
    
    updateLoadingLabel(modelCount, directoryCount);
  }