public void build() {
		this.initPseudoBuffer();
		int amount = getChunkAmount();
		int[] positions = getChunkPositions(amount);
		
		for (int t = 0; t < amount; t++) {			
			// generate a value for replacement
			int chunkSize = getChunkSize();
	
			// stay within bounds
			if ((positions[t] + chunkSize) > pseudoBuffer.length) {
				positions[t] -= chunkSize;
			}
	
			for (int i = positions[t]; i < (positions[t] + chunkSize); i += 2) {
				pseudoBuffer[i] = this.hexValue.toCharArray()[0];
				pseudoBuffer[i + 1] = this.hexValue.toCharArray()[1];
			}
		}
		
		byte[] newImageByteArray = null;

		try {
			newImageByteArray = Hex.decodeHex(pseudoBuffer);
		} catch (Exception e) {
			System.out.println("decoding mishap");
		}

		ByteArrayInputStream bais = new ByteArrayInputStream(newImageByteArray);
		
		BufferedImage bi = null;
		JLabel sb = (JLabel) App.getAppComponents().get("Statusbar");
		
		try {
			bi = ImageIO.read(bais);
			this.definiteImage = null;
			this.setDefImg(bi);
			sb.setText("New image is generated.");
		} catch (IOException e) {
			System.out.println("cannot read image?!");
			sb.setText("Error occured. Showing initial image.");
			this.definiteImage = this.originalImage;
		} catch (ArrayIndexOutOfBoundsException e) {
			System.out.println("Array index out of bounds?!");
			sb.setText("Error occured. Showing initial image.");
			this.definiteImage = this.originalImage;
		}
		
		bais = null;
	}