public void updateCellPosibilities() {
		int blockIndex = 0;
		for (Block block : this.getBlocks()) {
			int cellIndex = 0;
			
			for (Cell cell : block.getCells()) {
				if (cell.getValue() != Cell.Empty) {
					continue;
				}
				
				for (int value : this.getValuesInBlock(block)) {
					cell.removeValuePossibility(value);
				}
				for (int value : this.getValuesInHorizontal(blockIndex, cellIndex)) {
					cell.removeValuePossibility(value);
				}
				for (int value : this.getValuesInVertical(blockIndex, cellIndex)) {
					cell.removeValuePossibility(value);
				}
				
				cellIndex++;
			}
			blockIndex++;
		}
	}