private void generatePowerFailures() {
		for (int x = 0; x < grid.width; x++) {
			for (int y = 0; y < grid.height; y++) {
				if (Math.random() * 100 <= CHANCE) {
					// Generate the Primary PowerFailure
					final Position primaryPos = new Position(x, y);
					
					if (grid.validPosition(primaryPos)) {
						final PrimaryPowerFailure primaryPowerFailure = new PrimaryPowerFailure(grid, 3);
	
						// Generate the Secondary PowerFailure
						final int dirInt = (int) Math.round(Math.random() * (Direction.values().length - 1));
						final Direction direction = Direction.values()[dirInt];
						final Position secondaryPos = direction.newPosition(primaryPos);
						final int rotInt = (int) Math.round(Math.random());
						final Rotation rotation = Rotation.values()[rotInt];
						final SecondaryPowerFailure secondaryPowerFailure = new SecondaryPowerFailure(grid, 1, primaryPowerFailure, rotation, secondaryPos);
						
						// Generate the Tertiary PowerFailure
						final Position tertiaryPos = getTertiaryPowerFailurePosition(secondaryPos, dirInt);
						final TertiaryPowerFailure tertiaryPowerFailure = new TertiaryPowerFailure(grid, 1, secondaryPowerFailure);
					
					
						grid.addElementToPosition(primaryPowerFailure, primaryPos);
						if (grid.validPosition(secondaryPos))
							grid.addElementToPosition(secondaryPowerFailure, secondaryPos);
						if (grid.validPosition(tertiaryPos))
							grid.addElementToPosition(tertiaryPowerFailure, tertiaryPos);
					}
				}
			}
		}
	}