diff --git a/bin/de/deadlocker8/roadgame/logic/Board.class b/bin/de/deadlocker8/roadgame/logic/Board.class
index 5002354fa788d9ad2cb7e0a118b34a1e59f12279..77923361b15e8e4cda50856b9180924b288ff65d 100644
Binary files a/bin/de/deadlocker8/roadgame/logic/Board.class and b/bin/de/deadlocker8/roadgame/logic/Board.class differ
diff --git a/bin/de/deadlocker8/roadgame/logic/Game.class b/bin/de/deadlocker8/roadgame/logic/Game.class
index 20a792026f1a3a7feb2fbf39d3855e87f54a0d37..dc3bfe85233eb41d5d7b319ec476fd8804810208 100644
Binary files a/bin/de/deadlocker8/roadgame/logic/Game.class and b/bin/de/deadlocker8/roadgame/logic/Game.class differ
diff --git a/bin/de/deadlocker8/roadgame/tilepacks/TilePack.class b/bin/de/deadlocker8/roadgame/tilepacks/TilePack.class
new file mode 100644
index 0000000000000000000000000000000000000000..b6062949311ba9b6e03b21dc6006417329ed37e3
Binary files /dev/null and b/bin/de/deadlocker8/roadgame/tilepacks/TilePack.class differ
diff --git a/bin/de/deadlocker8/roadgame/tilepacks/TilePackDefault.class b/bin/de/deadlocker8/roadgame/tilepacks/TilePackDefault.class
new file mode 100644
index 0000000000000000000000000000000000000000..7c1427b4892c3b626dcc421e0966f879a5d01d83
Binary files /dev/null and b/bin/de/deadlocker8/roadgame/tilepacks/TilePackDefault.class differ
diff --git a/bin/de/deadlocker8/roadgame/tilepacks/TilePackTest.class b/bin/de/deadlocker8/roadgame/tilepacks/TilePackTest.class
new file mode 100644
index 0000000000000000000000000000000000000000..b4da84bd8b356f00fda881df6ae9c538b92c1cdd
Binary files /dev/null and b/bin/de/deadlocker8/roadgame/tilepacks/TilePackTest.class differ
diff --git a/bin/de/deadlocker8/roadgame/ui/Controller$1.class b/bin/de/deadlocker8/roadgame/ui/Controller$1.class
index ec7c6013bcdcb9d922c7a1cb2a9b98d89f319267..6f25679d13703a2bd3e5d1e2f2263eca6fb93cae 100644
Binary files a/bin/de/deadlocker8/roadgame/ui/Controller$1.class and b/bin/de/deadlocker8/roadgame/ui/Controller$1.class differ
diff --git a/bin/de/deadlocker8/roadgame/ui/Controller$2.class b/bin/de/deadlocker8/roadgame/ui/Controller$2.class
index 4cc8ad6e254350d45905509b71d3928a0b3a6d4f..fbe577013de6ba25a8f7dccf22368c68e3f615ae 100644
Binary files a/bin/de/deadlocker8/roadgame/ui/Controller$2.class and b/bin/de/deadlocker8/roadgame/ui/Controller$2.class differ
diff --git a/bin/de/deadlocker8/roadgame/ui/Controller.class b/bin/de/deadlocker8/roadgame/ui/Controller.class
index dcd66c72351bac9ad3c637bee436fa64b380acce..5cfb47e5e37c56fb953c13b3aa1a0facd10988d5 100644
Binary files a/bin/de/deadlocker8/roadgame/ui/Controller.class and b/bin/de/deadlocker8/roadgame/ui/Controller.class differ
diff --git a/bin/de/deadlocker8/roadgame/ui/GUI.fxml b/bin/de/deadlocker8/roadgame/ui/GUI.fxml
index 563b3ab601971736aa73256556f769baafbe5d2b..22974c03f72d05a5a28feb2fef89b5059e581973 100644
--- a/bin/de/deadlocker8/roadgame/ui/GUI.fxml
+++ b/bin/de/deadlocker8/roadgame/ui/GUI.fxml
@@ -39,7 +39,7 @@
           <Menu mnemonicParsing="false" text="Menu">
             <items>
               <MenuItem mnemonicParsing="false" onAction="#reset" text="Reset" />
-                  <MenuItem mnemonicParsing="false" onAction="#showPossibleTiles" text="Show possible Tiles" />
+                  <MenuItem mnemonicParsing="false" onAction="#selectTilePack" text="Select Tilepack" />
                   <MenuItem mnemonicParsing="false" onAction="#about" text="About" />
             </items>
           </Menu>
diff --git a/bin/de/deadlocker8/roadgame/ui/PossibleTilesController.class b/bin/de/deadlocker8/roadgame/ui/PossibleTilesController.class
index ea711209c766124b319448d080ffd7c51f0a6883..b731ce80406763fbbf987bec49d038ff13f35890 100644
Binary files a/bin/de/deadlocker8/roadgame/ui/PossibleTilesController.class and b/bin/de/deadlocker8/roadgame/ui/PossibleTilesController.class differ
diff --git a/bin/de/deadlocker8/roadgame/ui/SelectTilePackController$1.class b/bin/de/deadlocker8/roadgame/ui/SelectTilePackController$1.class
new file mode 100644
index 0000000000000000000000000000000000000000..c1af4747b200597f3f0485cb0d6f4c16ee33ed4e
Binary files /dev/null and b/bin/de/deadlocker8/roadgame/ui/SelectTilePackController$1.class differ
diff --git a/bin/de/deadlocker8/roadgame/ui/SelectTilePackController$2.class b/bin/de/deadlocker8/roadgame/ui/SelectTilePackController$2.class
new file mode 100644
index 0000000000000000000000000000000000000000..be74b4de64a6fdebf063304046ebd578eb8bd2c3
Binary files /dev/null and b/bin/de/deadlocker8/roadgame/ui/SelectTilePackController$2.class differ
diff --git a/bin/de/deadlocker8/roadgame/ui/SelectTilePackController.class b/bin/de/deadlocker8/roadgame/ui/SelectTilePackController.class
new file mode 100644
index 0000000000000000000000000000000000000000..3cdb96bb020372702b45494abf8dafcb6f5488b9
Binary files /dev/null and b/bin/de/deadlocker8/roadgame/ui/SelectTilePackController.class differ
diff --git a/bin/de/deadlocker8/roadgame/ui/SelectTilePackGUI.fxml b/bin/de/deadlocker8/roadgame/ui/SelectTilePackGUI.fxml
new file mode 100644
index 0000000000000000000000000000000000000000..b13ba0a58796a7eb7e8a1a88e324746cb0cfcf3d
--- /dev/null
+++ b/bin/de/deadlocker8/roadgame/ui/SelectTilePackGUI.fxml
@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<?import javafx.scene.control.Button?>
+<?import javafx.scene.control.ScrollPane?>
+<?import javafx.scene.layout.AnchorPane?>
+<?import javafx.scene.layout.VBox?>
+<?import javafx.scene.text.Font?>
+
+<AnchorPane prefHeight="400.0" prefWidth="400.0" xmlns="http://javafx.com/javafx/8.0.60" xmlns:fx="http://javafx.com/fxml/1" fx:controller="de.deadlocker8.roadgame.ui.SelectTilePackController">
+   <children>
+      <ScrollPane fx:id="scrollPane" layoutX="14.0" layoutY="14.0" AnchorPane.bottomAnchor="56.0" AnchorPane.leftAnchor="14.0" AnchorPane.rightAnchor="14.0" AnchorPane.topAnchor="14.0">
+         <content>
+            <VBox fx:id="vbox" prefHeight="231.0" prefWidth="272.0" />
+         </content>
+      </ScrollPane>
+      <Button fx:id="buttonBack" layoutX="119.0" layoutY="256.0" mnemonicParsing="false" onAction="#back" prefHeight="30.0" prefWidth="63.0" text="Back" AnchorPane.bottomAnchor="14.0">
+         <font>
+            <Font name="System Bold" size="14.0" />
+         </font>
+      </Button>
+   </children>
+</AnchorPane>
diff --git a/src/de/deadlocker8/roadgame/logic/Board.java b/src/de/deadlocker8/roadgame/logic/Board.java
index dc18b3c2037f2b01c57031bb5bd65174a8405a4a..dd774fb76cdb624efc6b3c64e4ce7e0331426dcd 100644
--- a/src/de/deadlocker8/roadgame/logic/Board.java
+++ b/src/de/deadlocker8/roadgame/logic/Board.java
@@ -1,26 +1,32 @@
 package de.deadlocker8.roadgame.logic;
 
 import java.util.ArrayList;
-import java.util.Random;
 
+import de.deadlocker8.roadgame.tilepacks.TilePack;
 import javafx.geometry.Point2D;
 
 public class Board
 {
+	private TilePack tilePack;
 	private ArrayList<Tile> tiles;
 
-	public Board()
+	public Board(TilePack tilePack)
 	{	
+		this.tilePack = tilePack;
 		this.tiles = new ArrayList<>();			
 		initBoard();
 	}
 	
 	private void initBoard()
 	{		
-		Tile startTile = getRandomTile();
-		startTile.setPosition(new Point2D(0, 0));
-		
-		tiles.add(startTile);	
+		TileType tileType = getRandomTile();
+		if(tileType != null)
+		{	
+			Tile startTile = new Tile(tileType);
+			startTile.setPosition(new Point2D(0, 0));
+			
+			tiles.add(startTile);	
+		}	
 	}
 
 	public ArrayList<Tile> getTiles()
@@ -41,21 +47,9 @@ public class Board
 		return null;
 	}
 	
-	public Tile getRandomTile()
+	public TileType getRandomTile()
 	{
-		Random random = new Random();
-		int index = random.nextInt(TileType.values().length);
-		TileType tileType = TileType.values()[index];	
-		Tile tile = new Tile(tileType.getN(), tileType.getE(), tileType.getS(), tileType.getW(), tileType.getC());
-		
-		//random rotation
-		int rotate = random.nextInt(3);
-		for(int i = 0; i < rotate; i++)
-		{
-			tile.rotateRight();
-		}
-	
-		return tile;
+		return tilePack.getRandomTile();
 	}
 	
 	public boolean containsTileAtPosition(int x, int y)
diff --git a/src/de/deadlocker8/roadgame/logic/Game.java b/src/de/deadlocker8/roadgame/logic/Game.java
index 99005205e43e3baad4f605886893b0d9b61b0843..1d51cbe07801c62b1f5cd7119da0d1e899b3b0ae 100644
--- a/src/de/deadlocker8/roadgame/logic/Game.java
+++ b/src/de/deadlocker8/roadgame/logic/Game.java
@@ -2,16 +2,17 @@ package de.deadlocker8.roadgame.logic;
 
 import java.util.ArrayList;
 
+import de.deadlocker8.roadgame.tilepacks.TilePack;
 import javafx.geometry.Point2D;
 
 public class Game
-{
+{	
 	private Board board;	
 	private Tile currentTile;
 	
-	public Game()
+	public Game(TilePack tilePack)
 	{
-		board = new Board();				
+		board = new Board(tilePack);				
 	}
 	
 	public Board getBoard()
@@ -21,7 +22,13 @@ public class Game
 	
 	public Tile getNextTile()
 	{
-		return board.getRandomTile();		
+		TileType type = board.getRandomTile();
+		if(type == null)
+		{
+			return null;
+		}
+		
+		return new Tile(type);	
 	}
 	
 	public void setCurrentTile(Tile currentTile)
diff --git a/src/de/deadlocker8/roadgame/tilepacks/TilePack.java b/src/de/deadlocker8/roadgame/tilepacks/TilePack.java
new file mode 100644
index 0000000000000000000000000000000000000000..6ca06dd8ba88ff42a5163286eadfe232e0c6f701
--- /dev/null
+++ b/src/de/deadlocker8/roadgame/tilepacks/TilePack.java
@@ -0,0 +1,73 @@
+package de.deadlocker8.roadgame.tilepacks;
+
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Random;
+
+import de.deadlocker8.roadgame.logic.Tile;
+import de.deadlocker8.roadgame.logic.TileType;
+
+public abstract class TilePack
+{	
+	protected String name;
+	protected HashMap<TileType, Integer> tiles;	
+	
+	public TilePack(String name)
+	{
+		this.name = name;
+	}		
+	
+	public String getName()
+	{
+		return name;
+	}
+	
+	public HashMap<TileType, Integer> getTiles()
+	{
+		return tiles;
+	}
+	
+	public int getNumberOfTiles()
+	{
+		int numberOfTiles = 0;
+		for(TileType key : tiles.keySet())
+		{
+			numberOfTiles += tiles.get(key);
+		}
+		
+		return numberOfTiles;
+	}
+	
+	public TileType getRandomTile()
+	{		
+		if(tiles.size() > 0)
+		{
+			Random random = new Random();
+			int index = random.nextInt(tiles.size());
+			List<TileType> keysAsArray = new ArrayList<>(tiles.keySet());		
+			TileType tileType = keysAsArray.get(index);		
+			
+			tiles.put(tileType, tiles.get(tileType) -1);
+			if(tiles.get(tileType) <= 0)
+			{
+				tiles.remove(tileType);
+			}				
+		
+			Tile tile = new Tile(tileType);
+			
+			//random rotation
+			int rotate = random.nextInt(3);
+			for(int i = 0; i < rotate; i++)
+			{
+				tile.rotateRight();
+			}
+		
+			return tileType;
+		}
+		else
+		{
+			return null;
+		}
+	}	
+}
\ No newline at end of file
diff --git a/src/de/deadlocker8/roadgame/tilepacks/TilePackDefault.java b/src/de/deadlocker8/roadgame/tilepacks/TilePackDefault.java
new file mode 100644
index 0000000000000000000000000000000000000000..66399cb357b9a58b6e99772a70652666d135657d
--- /dev/null
+++ b/src/de/deadlocker8/roadgame/tilepacks/TilePackDefault.java
@@ -0,0 +1,50 @@
+package de.deadlocker8.roadgame.tilepacks;
+
+import java.util.HashMap;
+
+import de.deadlocker8.roadgame.logic.TileType;
+
+public class TilePackDefault extends TilePack
+{
+	public TilePackDefault()
+	{
+		super("Default");
+		
+		tiles = new HashMap<>();		
+		tiles.put(TileType.ROAD_END, 1);
+		tiles.put(TileType.ROAD_STRAIGHT, 1);
+		tiles.put(TileType.ROAD_CURVE, 1);
+		tiles.put(TileType.ROAD_T_JUNCTION, 1);
+		tiles.put(TileType.ROAD_X_JUNCTION, 1);
+		tiles.put(TileType.ROAD_END_CHURCH, 1);
+		tiles.put(TileType.ROAD_STRAIGHT_CHURCH, 1);
+		tiles.put(TileType.ROAD_CURVE_CHURCH, 1);
+		tiles.put(TileType.ROAD_T_JUNCTION_CHURCH, 1);
+		tiles.put(TileType.ROAD_X_JUNCTION_CHURCH, 1);
+		tiles.put(TileType.CASTLE_SINGLE, 1);
+		tiles.put(TileType.CASTLE_TWO_SINGLE_OPPOSITE, 1);
+		tiles.put(TileType.CASTLE_TWO_SINGLE_NEIGHBOR, 1);
+		tiles.put(TileType.CASTLE_THREE_SINGLE, 1);
+		tiles.put(TileType.CASTLE_FOUR_SINGLE, 1);
+		tiles.put(TileType.CASTLE_TRIANGLE, 1);
+		tiles.put(TileType.CASTLE_TUBE, 1);
+		tiles.put(TileType.CASTLE_FULL, 1);
+		tiles.put(TileType.CASTLE_U, 1);
+		tiles.put(TileType.CASTLE_SINGLE_ROAD_STRAIGHT, 1);
+		tiles.put(TileType.CASTLE_SINGLE_ROAD_CURVE_RIGHT, 1);
+		tiles.put(TileType.CASTLE_SINGLE_ROAD_CURVE_LEFT, 1);
+		tiles.put(TileType.CASTLE_SINGLE_ROAD_T_JUNCTION, 1);
+		tiles.put(TileType.CASTLE_SINGLE_ROAD_END_IN_CASTLE, 1);
+		tiles.put(TileType.CASTLE_SINGLE_ROAD_CURVE_RIGHT_END_IN_CASTLE, 1);
+		tiles.put(TileType.CASTLE_SINGLE_ROAD_CURVE_LEFT_END_IN_CASTLE, 1);
+		tiles.put(TileType.CASTLE_TWO_SINGLE_OPPOSITE_ROAD_STRAIGHT, 1);
+		tiles.put(TileType.CASTLE_TWO_SINGLE_NEIGHBOR_ROAD_CURVE, 1);
+		tiles.put(TileType.CASTLE_THREE_SINGLE_ROAD_END, 1);
+		tiles.put(TileType.CASTLE_TRIANGLE_ROAD_CURVE, 1);
+		tiles.put(TileType.CASTLE_TRIANGLE_ROAD_RIGHT, 1);
+		tiles.put(TileType.CASTLE_TRIANGLE_ROAD_LEFT, 1);
+		tiles.put(TileType.CASTLE_TUBE_ROAD_ONE_SIDE, 1);
+		tiles.put(TileType.CASTLE_TUBE_ROAD_TWO_SIDE, 1);
+		tiles.put(TileType.CASTLE_U_ROAD_END, 1);
+	}
+}
\ No newline at end of file
diff --git a/src/de/deadlocker8/roadgame/tilepacks/TilePackTest.java b/src/de/deadlocker8/roadgame/tilepacks/TilePackTest.java
new file mode 100644
index 0000000000000000000000000000000000000000..6e396e244e3b6f50c26ecde5933040ef16e612b4
--- /dev/null
+++ b/src/de/deadlocker8/roadgame/tilepacks/TilePackTest.java
@@ -0,0 +1,18 @@
+package de.deadlocker8.roadgame.tilepacks;
+
+import java.util.HashMap;
+
+import de.deadlocker8.roadgame.logic.TileType;
+
+public class TilePackTest extends TilePack
+{
+	public TilePackTest()
+	{
+		super("Test");
+		
+		tiles = new HashMap<>();		
+		tiles.put(TileType.ROAD_END, 1);
+		tiles.put(TileType.ROAD_STRAIGHT, 1);
+		tiles.put(TileType.ROAD_CURVE, 3);		
+	}
+}
\ No newline at end of file
diff --git a/src/de/deadlocker8/roadgame/ui/Controller.java b/src/de/deadlocker8/roadgame/ui/Controller.java
index bed5339a4cae56de2f09027dec0e7060ecdaf940..698627764e472476a451b68f1d1f0233b18dc38b 100644
--- a/src/de/deadlocker8/roadgame/ui/Controller.java
+++ b/src/de/deadlocker8/roadgame/ui/Controller.java
@@ -10,6 +10,7 @@ import de.deadlocker8.roadgame.logic.EdgeType;
 import de.deadlocker8.roadgame.logic.Game;
 import de.deadlocker8.roadgame.logic.Textures;
 import de.deadlocker8.roadgame.logic.Tile;
+import de.deadlocker8.roadgame.tilepacks.TilePack;
 import javafx.event.EventHandler;
 import javafx.fxml.FXML;
 import javafx.fxml.FXMLLoader;
@@ -19,6 +20,7 @@ import javafx.scene.Scene;
 import javafx.scene.control.Alert;
 import javafx.scene.control.Alert.AlertType;
 import javafx.scene.control.Button;
+import javafx.scene.control.Label;
 import javafx.scene.control.ScrollPane;
 import javafx.scene.image.Image;
 import javafx.scene.image.ImageView;
@@ -45,7 +47,8 @@ public class Controller
 	private GridPane grid;
 	private Game game;
 	private Textures textures;
-
+	private StackPane stackPanePlaceHolder;
+	
 	public void init(Stage stage)
 	{
 		this.stage = stage;
@@ -68,12 +71,17 @@ public class Controller
 				}				
 			}
 		});
-
-		game = new Game();
-
-		updateGrid(game.getBoard(), null);
-
-		nextTile();
+		
+		buttonRotate.setDisable(true);
+		Label labelPlaceHolder = new Label("Please select Tilepack first.");
+		labelPlaceHolder.setStyle("-fx-font-weight: bold; -fx-font-size: 16;");
+		stackPanePlaceHolder = new StackPane();
+		stackPanePlaceHolder.getChildren().add(labelPlaceHolder);
+		anchorPaneGame.getChildren().add(stackPanePlaceHolder);
+		AnchorPane.setTopAnchor(stackPanePlaceHolder, 0.0);
+		AnchorPane.setRightAnchor(stackPanePlaceHolder, 0.0);
+		AnchorPane.setBottomAnchor(stackPanePlaceHolder, 0.0);
+		AnchorPane.setLeftAnchor(stackPanePlaceHolder, 0.0);
 	}
 
 	private void updateGrid(Board board, ArrayList<Point2D> possibleLocations)
@@ -288,7 +296,17 @@ public class Controller
 
 	private void nextTile()
 	{
-		game.setCurrentTile(game.getNextTile());
+		Tile nextTile = game.getNextTile();
+		if(nextTile == null)		
+		{			
+			game.setCurrentTile(null);
+			stackPaneCurrentTile.getChildren().clear();
+			//TODO
+			updateGrid(game.getBoard(), null);
+			return;
+		}
+			
+		game.setCurrentTile(nextTile);
 
 		stackPaneCurrentTile.getChildren().clear();
 		stackPaneCurrentTile.getChildren().add(createStackPaneForTile(game.getCurrentTile(), false, 0, 0));
@@ -298,11 +316,14 @@ public class Controller
 
 	public void rotateRight()
 	{
-		game.getCurrentTile().rotateRight();
-		stackPaneCurrentTile.getChildren().clear();
-		stackPaneCurrentTile.getChildren().add(createStackPaneForTile(game.getCurrentTile(), false, 0, 0));
-
-		updateGrid(game.getBoard(), game.getPossibleLocations(game.getCurrentTile()));
+		if(game != null && game.getCurrentTile() != null)
+		{
+			game.getCurrentTile().rotateRight();
+			stackPaneCurrentTile.getChildren().clear();
+			stackPaneCurrentTile.getChildren().add(createStackPaneForTile(game.getCurrentTile(), false, 0, 0));
+	
+			updateGrid(game.getBoard(), game.getPossibleLocations(game.getCurrentTile()));
+		}
 	}
 	
 	public void reset()
@@ -310,21 +331,21 @@ public class Controller
 		init(stage);
 	}
 	
-	public void showPossibleTiles()
+	public void selectTilePack()
 	{
 		try
 		{
-			FXMLLoader fxmlLoader = new FXMLLoader(getClass().getResource("/de/deadlocker8/roadgame/ui/PossibleTilesGUI.fxml"));
+			FXMLLoader fxmlLoader = new FXMLLoader(getClass().getResource("/de/deadlocker8/roadgame/ui/SelectTilePackGUI.fxml"));
 			Parent root = (Parent)fxmlLoader.load();
 			Stage newStage = new Stage();
 			newStage.initOwner(stage);
 			newStage.initModality(Modality.APPLICATION_MODAL);
-			newStage.setTitle("Possible Tiles");
+			newStage.setTitle("Select Tilepack");
 			newStage.setScene(new Scene(root));
 			newStage.getIcons().add(icon);
 			newStage.setResizable(false);
-			PossibleTilesController newController = fxmlLoader.getController();
-			newController.init(newStage, this);
+			SelectTilePackController newController = fxmlLoader.getController();
+			newController.init(newStage, icon, this);
 			newStage.show();
 
 		}
@@ -333,6 +354,21 @@ public class Controller
 			Logger.log(LogLevel.ERROR, Logger.exceptionToString(io));
 		}
 	}
+	
+	public void setTilePack(TilePack tilePack)
+	{
+		buttonRotate.setDisable(false);
+		if(anchorPaneGame.getChildren().contains(stackPanePlaceHolder))
+		{
+			anchorPaneGame.getChildren().remove(stackPanePlaceHolder);
+		}
+		
+		game = new Game(tilePack);
+		
+		updateGrid(game.getBoard(), null);
+
+		nextTile();
+	}
 
 	public void about()
 	{
diff --git a/src/de/deadlocker8/roadgame/ui/GUI.fxml b/src/de/deadlocker8/roadgame/ui/GUI.fxml
index 563b3ab601971736aa73256556f769baafbe5d2b..22974c03f72d05a5a28feb2fef89b5059e581973 100644
--- a/src/de/deadlocker8/roadgame/ui/GUI.fxml
+++ b/src/de/deadlocker8/roadgame/ui/GUI.fxml
@@ -39,7 +39,7 @@
           <Menu mnemonicParsing="false" text="Menu">
             <items>
               <MenuItem mnemonicParsing="false" onAction="#reset" text="Reset" />
-                  <MenuItem mnemonicParsing="false" onAction="#showPossibleTiles" text="Show possible Tiles" />
+                  <MenuItem mnemonicParsing="false" onAction="#selectTilePack" text="Select Tilepack" />
                   <MenuItem mnemonicParsing="false" onAction="#about" text="About" />
             </items>
           </Menu>
diff --git a/src/de/deadlocker8/roadgame/ui/PossibleTilesController.java b/src/de/deadlocker8/roadgame/ui/PossibleTilesController.java
index c3f7c2a7cde67629f7a335d69fc132bb038b99b2..971691ec3cc2dca1511c94edb7964f1c24e34f78 100644
--- a/src/de/deadlocker8/roadgame/ui/PossibleTilesController.java
+++ b/src/de/deadlocker8/roadgame/ui/PossibleTilesController.java
@@ -2,9 +2,13 @@ package de.deadlocker8.roadgame.ui;
 
 import de.deadlocker8.roadgame.logic.Tile;
 import de.deadlocker8.roadgame.logic.TileType;
+import de.deadlocker8.roadgame.tilepacks.TilePack;
 import javafx.fxml.FXML;
+import javafx.geometry.Insets;
 import javafx.geometry.Pos;
 import javafx.scene.control.Button;
+import javafx.scene.control.Label;
+import javafx.scene.layout.HBox;
 import javafx.scene.layout.StackPane;
 import javafx.scene.layout.VBox;
 import javafx.stage.Stage;
@@ -16,19 +20,29 @@ public class PossibleTilesController
 
 	private Stage stage;	
 
-	public void init(Stage stage, Controller controller)
+	public void init(Stage stage, Controller controller, TilePack tilePack)
 	{
 		this.stage = stage;
 		
 		vbox.setSpacing(10.0);
-		vbox.setAlignment(Pos.CENTER);
+		vbox.setAlignment(Pos.TOP_CENTER);
 		
-		for(TileType currentType : TileType.values())
+		for(TileType key : tilePack.getTiles().keySet())
 		{
-			Tile tile = new Tile(currentType);
+			HBox hbox = new HBox();
+			hbox.setAlignment(Pos.CENTER);
+			
+			Tile tile = new Tile(key);
 			StackPane currentStack = controller.createStackPaneForTile(tile, false, 0, 0);
 			currentStack.setMaxWidth(100.0);
-			vbox.getChildren().add(currentStack);
+			
+			Label labelTimes = new Label("x" + tilePack.getTiles().get(key));
+			labelTimes.setStyle("-fx-font-weight: bold; -fx-font-size: 20;");
+			
+			hbox.getChildren().add(currentStack);			
+			hbox.getChildren().add(labelTimes);
+			HBox.setMargin(labelTimes, new Insets(0, 0, 0, 25));
+			vbox.getChildren().add(hbox);
 		}
 	}
 	
diff --git a/src/de/deadlocker8/roadgame/ui/SelectTilePackController.java b/src/de/deadlocker8/roadgame/ui/SelectTilePackController.java
new file mode 100644
index 0000000000000000000000000000000000000000..d74acae6fb9b4f63165f7ceca9960be23be53961
--- /dev/null
+++ b/src/de/deadlocker8/roadgame/ui/SelectTilePackController.java
@@ -0,0 +1,122 @@
+package de.deadlocker8.roadgame.ui;
+
+import java.io.IOException;
+import java.util.ArrayList;
+
+import de.deadlocker8.roadgame.tilepacks.TilePack;
+import de.deadlocker8.roadgame.tilepacks.TilePackDefault;
+import de.deadlocker8.roadgame.tilepacks.TilePackTest;
+import javafx.event.ActionEvent;
+import javafx.event.EventHandler;
+import javafx.fxml.FXML;
+import javafx.fxml.FXMLLoader;
+import javafx.geometry.Insets;
+import javafx.geometry.Pos;
+import javafx.scene.Parent;
+import javafx.scene.Scene;
+import javafx.scene.control.Button;
+import javafx.scene.control.Label;
+import javafx.scene.control.ScrollPane;
+import javafx.scene.image.Image;
+import javafx.scene.input.MouseButton;
+import javafx.scene.input.MouseEvent;
+import javafx.scene.layout.HBox;
+import javafx.scene.layout.Priority;
+import javafx.scene.layout.Region;
+import javafx.scene.layout.VBox;
+import javafx.stage.Modality;
+import javafx.stage.Stage;
+import logger.LogLevel;
+import logger.Logger;
+
+public class SelectTilePackController
+{
+	@FXML private ScrollPane scrollPane;
+	@FXML private VBox vbox;
+	@FXML private Button buttonBack;
+
+	private Stage stage;	
+
+	public void init(Stage stage, Image icon, Controller controller)
+	{
+		this.stage = stage;
+		
+		vbox.setSpacing(10.0);
+		vbox.prefWidthProperty().bind(scrollPane.widthProperty().subtract(5.0));
+		vbox.setAlignment(Pos.TOP_CENTER);
+		
+		ArrayList<TilePack> possibleTilePacks = new ArrayList<>();
+		possibleTilePacks.add(new TilePackDefault());
+		possibleTilePacks.add(new TilePackTest());		
+		
+		for(TilePack currentPack : possibleTilePacks)
+		{			
+			HBox hbox = new HBox();
+			Label labelName = new Label(currentPack.getName());
+			labelName.setStyle("-fx-font-weight: bold; -fx-font-size: 16;");
+			
+			Label labelTiles = new Label("(" + currentPack.getNumberOfTiles() + " Tiles)");
+			labelTiles.setStyle("-fx-font-size: 16;");
+			
+			Button buttonShowTiles = new Button("Show Tiles");
+			buttonShowTiles.setStyle("-fx-font-weight: bold; -fx-font-size: 12;");		
+			buttonShowTiles.setOnAction(new EventHandler<ActionEvent>()
+			{
+				@Override
+				public void handle(ActionEvent event)
+				{
+					try
+					{
+						FXMLLoader fxmlLoader = new FXMLLoader(getClass().getResource("/de/deadlocker8/roadgame/ui/PossibleTilesGUI.fxml"));
+						Parent root = (Parent)fxmlLoader.load();
+						Stage newStage = new Stage();
+						newStage.initOwner(stage);
+						newStage.initModality(Modality.APPLICATION_MODAL);
+						newStage.setTitle("Possible Tiles");
+						newStage.setScene(new Scene(root));
+						newStage.getIcons().add(icon);
+						newStage.setResizable(false);
+						PossibleTilesController newController = fxmlLoader.getController();
+						newController.init(newStage, controller, currentPack);
+						newStage.show();
+
+					}
+					catch(IOException io)
+					{
+						Logger.log(LogLevel.ERROR, Logger.exceptionToString(io));
+					}
+					
+				}
+			});
+			
+			hbox.getChildren().add(labelName);
+			Region r = new Region();
+			hbox.getChildren().add(r);
+			HBox.setHgrow(r, Priority.ALWAYS);
+			hbox.getChildren().add(labelTiles);	
+			hbox.getChildren().add(buttonShowTiles);
+			HBox.setMargin(buttonShowTiles, new Insets(0, 0, 0, 25));
+			hbox.setStyle("-fx-border-color: #212121; -fx-border-width: 1; -fx-background-color: #CCCCCC");
+			hbox.setPadding(new Insets(5));
+			vbox.getChildren().add(hbox);
+			
+			hbox.setOnMouseClicked(new EventHandler<MouseEvent>()
+			{
+				@Override
+				public void handle(MouseEvent event)
+				{
+					if(event.getButton().equals(MouseButton.PRIMARY))
+					{
+						controller.setTilePack(currentPack);
+						stage.close();
+					}				
+				}
+			});
+		}
+	}
+	
+	public void back()
+	{
+		stage.close();
+	}
+}
\ No newline at end of file
diff --git a/src/de/deadlocker8/roadgame/ui/SelectTilePackGUI.fxml b/src/de/deadlocker8/roadgame/ui/SelectTilePackGUI.fxml
new file mode 100644
index 0000000000000000000000000000000000000000..b13ba0a58796a7eb7e8a1a88e324746cb0cfcf3d
--- /dev/null
+++ b/src/de/deadlocker8/roadgame/ui/SelectTilePackGUI.fxml
@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<?import javafx.scene.control.Button?>
+<?import javafx.scene.control.ScrollPane?>
+<?import javafx.scene.layout.AnchorPane?>
+<?import javafx.scene.layout.VBox?>
+<?import javafx.scene.text.Font?>
+
+<AnchorPane prefHeight="400.0" prefWidth="400.0" xmlns="http://javafx.com/javafx/8.0.60" xmlns:fx="http://javafx.com/fxml/1" fx:controller="de.deadlocker8.roadgame.ui.SelectTilePackController">
+   <children>
+      <ScrollPane fx:id="scrollPane" layoutX="14.0" layoutY="14.0" AnchorPane.bottomAnchor="56.0" AnchorPane.leftAnchor="14.0" AnchorPane.rightAnchor="14.0" AnchorPane.topAnchor="14.0">
+         <content>
+            <VBox fx:id="vbox" prefHeight="231.0" prefWidth="272.0" />
+         </content>
+      </ScrollPane>
+      <Button fx:id="buttonBack" layoutX="119.0" layoutY="256.0" mnemonicParsing="false" onAction="#back" prefHeight="30.0" prefWidth="63.0" text="Back" AnchorPane.bottomAnchor="14.0">
+         <font>
+            <Font name="System Bold" size="14.0" />
+         </font>
+      </Button>
+   </children>
+</AnchorPane>