public double[] noRehearsalSerialLearning(double[][] baseinputs, double[][] baseoutputs, 
			double[][] serialinputs, double[][] serialoutputs, double maxerror) {

		double[] outputs = new double[serialinputs.length + 1];	

		double error = maxerror + 1;
		int counter = 0;	
		// train base population
		while (maxerror < error && counter++ < quitCounter) {
			for (int i = 0; i < baseinputs.length; i++) {
				Pattern trial = new Pattern(baseinputs[i], baseoutputs[i]);
				pass(trial);
				updateAllWeights(trial);
			}
			error = populationError(outputs(baseinputs), baseoutputs);
		}
		outputs[0] = error;
		if (counter>=quitCounter) { System.err.println("counter exceeded  NOPE 1");}

		for (int i = 0; i < serialinputs.length; i++) {
			Pattern trial = new Pattern(serialinputs[i], serialoutputs[i]);

			error = maxerror + 1;
			counter = 0;
			while (maxerror < error && counter++ < quitCounter) {
				pass(trial);
				updateAllWeights(trial);
				error = patternError(getCurrentOutput(), serialoutputs[i]);
				//System.err.println(error);
			}
			//System.err.println();

			double poperror = populationError(outputs(baseinputs), baseoutputs);
			if (i==0) System.out.println("FOR MOM " + poperror);
			outputs[i+1] = poperror;
		}
		if (counter>=quitCounter) { System.err.println("counter exceeded  NOPE 2"); }
		
		return outputs;
	}