@Override
	public Grid generateGrid() {
		playerFactory.generate();

		// Give the players some items to start
		for (Player player : grid.getAllPlayersOnGrid()) {
			final LightGrenade item1 = new LightGrenade(grid);
			player.getInventory().add(item1);

			final IdentityDisc item2 = new IdentityDisc(grid);
			player.getInventory().add(item2);

			final ChargedIdentityDisc item3 = new ChargedIdentityDisc(grid);
			player.getInventory().add(item3);
			
			final LightGrenade item4 = new LightGrenade(grid);
			player.getInventory().add(item4);
		}

		// add some elements to the grid
		final Wall wall1 = new Wall(grid);
		final Wall wall2 = new Wall(grid);
		for (int i = -1; i < 2; i++) {
			Position pos1 = Direction.RIGHT.newPosition(new Position(2 + i, 9));
			Position pos2 = Direction.RIGHT.newPosition(new Position(i, 1));
			grid.addElementToPosition(wall1, pos1);
			grid.addElementToPosition(wall2, pos2);
		}

		final LightGrenade lightGrenade1 = new LightGrenade(grid);
		grid.addElementToPosition(lightGrenade1, new Position(0, 7));

		final LightGrenade lightGrenade2 = new LightGrenade(grid);
		grid.addElementToPosition(lightGrenade2, new Position(1, 7));

		final LightGrenade activeLightGrenade1 = new LightGrenade(grid, true);
		grid.addElementToPosition(activeLightGrenade1, new Position(2, 8));

		final LightGrenade activeLightGrenade2 = new LightGrenade(grid, true);
		grid.addElementToPosition(activeLightGrenade2, new Position(1, 6));

		final Teleporter teleport1 = new Teleporter(grid);
		final Teleporter teleport2 = new Teleporter(grid);
		teleport1.setDestination(teleport2);
		teleport2.setDestination(teleport1);
		grid.addElementToPosition(teleport1, new Position(0, 5));
		grid.addElementToPosition(teleport2, new Position(0, 2));

		// add some effects to the grid
		final PrimaryPowerFailure powerFailure1 = new PrimaryPowerFailure(grid, 3);
		grid.addElementToPosition(powerFailure1, new Position(1, 6));
		
		final PrimaryPowerFailure powerFailure2 = new PrimaryPowerFailure(grid, 3);
		grid.addElementToPosition(powerFailure2, new Position(1, 7));
		
		final PrimaryPowerFailure powerFailure3 = new PrimaryPowerFailure(grid, 3);
		grid.addElementToPosition(powerFailure3, new Position(1, 8));

		return grid;
	}