private void createPegboards(BufferedImage source, BeadPallete pallete, float text_size) throws IOException {
		
		// Delete already existing temp from the pegboards ArrayList.
		for(File board: this.board_pattern){
			board.delete();
		}
		
		for(File thumbnail: this.pegboard_thumbnail){
			thumbnail.delete();
		}
		
		// Clear the ArrayLists. 
		this.board_pattern.clear();
		this.pegboard_thumbnail.clear();
		
		// Calculate the Dimensions of the pattern in pegboards.
		this.pattern_size = new Dimension((int)Math.ceil(source.getWidth()/29f),
										  (int)Math.ceil(source.getHeight()/29f));
		
		
		// Declare Rectangle used for beading.
		Rectangle rectangle;
		
		for(int y = 0; y < this.pattern_size.getHeight(); y ++) {
			for(int x = 0; x < this.pattern_size.getWidth(); x ++) {
				
				// Create temporal file to store the pattern
				this.board_pattern.add(File.createTempFile(this.TEMP_PREFFIX+"pegboard-"+this.getCoordinate(x, y)+"-",
														   this.TEMP_SUFFIX));
				this.board_pattern.get(this.getCoordinate(x, y)).deleteOnExit();
				
				this.pegboard_thumbnail.add(File.createTempFile(this.TEMP_PREFFIX+"pegboard_thumbnail-"+this.getCoordinate(x, y)+"-",
						   this.TEMP_SUFFIX));
				this.pegboard_thumbnail.get(this.getCoordinate(x, y)).deleteOnExit();
				
				
				rectangle = new Rectangle(x*29,y*29,
										 (x*29 +28>= source.getWidth())? source.getWidth()-x*29 : 29,
										 (y*29 +28>= source.getHeight())? source.getHeight()-y*29 : 29);
				
				ImageIO.write(this.generateImage(source, pallete, new Dimension(29,29), rectangle, true, text_size),
					      this.TEMP_SUFFIX, 
					      this.pegboard_thumbnail.get(this.getCoordinate(x, y)));
				
				ImageIO.write(this.generateImage(source, pallete, new Dimension(29,29), rectangle, false, text_size),
						      this.TEMP_SUFFIX, 
						      this.board_pattern.get(this.getCoordinate(x, y)));
			}
		}
	}