public void train(String listofFiles,String output) {
		CountsCollection bag1=new CountsCollection();
		HashSet<String> IdsVisible=new HashSet<String>();
		loadList(listofFiles,DataHalf.ODD,Visibility.VISIBLE,bag1,IdsVisible);
		loadList(listofFiles,DataHalf.EVEN,Visibility.BLIND,bag1,IdsVisible);
		// Do some sort of reset or model keeping
		IdsVisible.clear();
		loadList(listofFiles,DataHalf.EVEN,Visibility.VISIBLE,bag1,IdsVisible);
		loadList(listofFiles,DataHalf.ODD,Visibility.BLIND,bag1,IdsVisible);	
		bag1.prepareWeightsForBackoff();
		System.out.println("BAG1::");
		bag1.printBag();
		
		// Dump the bags
		try {
		  FileOutputStream fos = new FileOutputStream(output);
          ObjectOutputStream oos = new ObjectOutputStream(fos);
          oos.writeObject(bag1);
          oos.close();
		}
		catch (Exception ex) {
		  System.err.println("Dumping problems");
		}
		
		CountsCollection bag3=new CountsCollection();
		try {
		  FileInputStream fis = new FileInputStream(output);
          ObjectInputStream ois = new ObjectInputStream(fis);
          bag3=(CountsCollection) ois.readObject();
          ois.close();		  
		}
		catch (Exception ex) {
		  System.err.println("Loading problems");
		}		

	  }