code: private boolean mergeSpaces(ArrayList spaces) {
  		for (int source=0;source<spaces.size();source++) {
  			Space a = (Space) spaces.get(source);
  			
  			for (int target=source+1;target<spaces.size();target++) {
  				Space b = (Space) spaces.get(target);
  				
  				if (a.canMerge(b)) {
  					spaces.remove(a);
  					spaces.remove(b);
  					spaces.add(a.merge(b));
  					return true;
  				}
  			}
  		}
  		
  		return false;
  	}
docs: Merge the spaces that have been created to optimize out anywhere
  we can.
  
  @param spaces The list of spaces to be merged
  @return True if a merge occured and we'll have to start the merge
  process again