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

		// Give the players some items to start
		for (Player player : grid.getAllPlayersOnGrid()) {
			LightGrenade item1 = new LightGrenade(player.getPosition());
			this.addObservable(item1);
			this.addObserver(item1);
			player.addItemToInventory(item1);

			IdentityDisc item2 = new IdentityDisc(player.getPosition());
			this.addObservable(item2);
			player.addItemToInventory(item2);
			
			IdentityDisc item3 = new IdentityDisc(player.getPosition(), true);
			this.addObservable(item3);
			player.addItemToInventory(item3);
		}

		// add some elements to the grid
		grid.addElement(new Wall(new Position(2, 9), 2, Direction.HORIZONTAL));
		grid.addElement(new Wall(new Position(0, 1), 2, Direction.HORIZONTAL));

		LightGrenade lightGrenade1 = new LightGrenade(new Position(0, 7));
		grid.addElement(lightGrenade1);
		this.addObservable(lightGrenade1);
		this.addObserver(lightGrenade1);

		LightGrenade lightGrenade2 = new LightGrenade(new Position(1, 7));
		grid.addElement(lightGrenade2);
		this.addObservable(lightGrenade2);
		this.addObserver(lightGrenade2);

		LightGrenade activeLightGrenade1 = new LightGrenade(new Position(2, 8));
		activeLightGrenade1.setActive(true);
		grid.addElement(activeLightGrenade1);
		this.addObservable(activeLightGrenade1);
		this.addObserver(activeLightGrenade1);

		LightGrenade activeLightGrenade2 = new LightGrenade(new Position(1, 6));
		activeLightGrenade2.setActive(true);
		grid.addElement(activeLightGrenade2);
		this.addObservable(activeLightGrenade2);
		this.addObserver(activeLightGrenade2);

		Teleporter teleporter = new Teleporter(new Position(0, 5));
		Teleporter teleporterDestionation = new Teleporter(new Position(0, 2));
		teleporter.setDestination(teleporterDestionation);
		grid.addElement(teleporter);
		this.addObserver(teleporter);

		// add some effects to the grid
		PowerFailure powerFailure1 =new PowerFailure(new Position(1, 6));
		this.addObservable(powerFailure1);
		this.addObserver(powerFailure1);
		grid.addEffectToGrid(powerFailure1);
		PowerFailure powerFailure2 =new PowerFailure(new Position(1, 7));
		this.addObservable(powerFailure2);
		this.addObserver(powerFailure2);
		grid.addEffectToGrid(powerFailure2);
		PowerFailure powerFailure3 =new PowerFailure(new Position(1, 8));
		this.addObservable(powerFailure3);
		this.addObserver(powerFailure3);
		grid.addEffectToGrid(powerFailure3);

		return grid;
	}