diff --git a/bin/de/deadlocker8/roadgame/logic/Board.class b/bin/de/deadlocker8/roadgame/logic/Board.class
index bc6431984802150d760a1933700b1e41077c6048..a3c7421f9e5d58f240e377c05ec3cd170f44c50e 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/Dimension.class b/bin/de/deadlocker8/roadgame/logic/Dimension.class
new file mode 100644
index 0000000000000000000000000000000000000000..c2f729d1e3a469658a099b4e54423e36dc759c10
Binary files /dev/null and b/bin/de/deadlocker8/roadgame/logic/Dimension.class differ
diff --git a/bin/de/deadlocker8/roadgame/resources/2.png b/bin/de/deadlocker8/roadgame/resources/2.png
new file mode 100644
index 0000000000000000000000000000000000000000..8d8cea35f9b801e5f39132e92b07a3630a5fedaa
Binary files /dev/null and b/bin/de/deadlocker8/roadgame/resources/2.png differ
diff --git a/bin/de/deadlocker8/roadgame/resources/border.png b/bin/de/deadlocker8/roadgame/resources/border.png
new file mode 100644
index 0000000000000000000000000000000000000000..c2b5d4faf7bd65e73e071791bbd9cabd0cee17e5
Binary files /dev/null and b/bin/de/deadlocker8/roadgame/resources/border.png differ
diff --git a/bin/de/deadlocker8/roadgame/resources/empty.png b/bin/de/deadlocker8/roadgame/resources/empty.png
new file mode 100644
index 0000000000000000000000000000000000000000..0b624ce13d73f787120c3997e3836566e212cfba
Binary files /dev/null and b/bin/de/deadlocker8/roadgame/resources/empty.png differ
diff --git a/bin/de/deadlocker8/roadgame/resources/green.png b/bin/de/deadlocker8/roadgame/resources/green.png
new file mode 100644
index 0000000000000000000000000000000000000000..947ab103ae2d22eb71f398df474884b16d07e44f
Binary files /dev/null and b/bin/de/deadlocker8/roadgame/resources/green.png differ
diff --git a/bin/de/deadlocker8/roadgame/resources/road.png b/bin/de/deadlocker8/roadgame/resources/road.png
new file mode 100644
index 0000000000000000000000000000000000000000..0c2cd245f9822b3c40316e419e2e314418b3213a
Binary files /dev/null and b/bin/de/deadlocker8/roadgame/resources/road.png differ
diff --git a/bin/de/deadlocker8/roadgame/ui/Controller$1.class b/bin/de/deadlocker8/roadgame/ui/Controller$1.class
index 5e27e9312bd188b813fcce42367f59a46350480a..3e40e28222964a2d6c131b6f57c2d5debbc147b1 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
new file mode 100644
index 0000000000000000000000000000000000000000..4dfed642988740f411ddfbb691d4a912c2022182
Binary files /dev/null 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 36f07da706d31af0c70cae8682b27df53499c715..ccfff9e08e168ea162b7b262544400e30de5a5b3 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 466a0007d9317dd19e294380e1ffe0383c5c46bc..c1199ad145a9e673ae262f6cd2f07790d0f19e30 100644
--- a/bin/de/deadlocker8/roadgame/ui/GUI.fxml
+++ b/bin/de/deadlocker8/roadgame/ui/GUI.fxml
@@ -3,10 +3,7 @@
 <?import javafx.geometry.Insets?>
 <?import javafx.scene.control.Button?>
 <?import javafx.scene.layout.AnchorPane?>
-<?import javafx.scene.layout.ColumnConstraints?>
-<?import javafx.scene.layout.GridPane?>
 <?import javafx.scene.layout.HBox?>
-<?import javafx.scene.layout.RowConstraints?>
 <?import javafx.scene.layout.StackPane?>
 <?import javafx.scene.layout.VBox?>
 
@@ -14,20 +11,7 @@
    <children>
       <HBox layoutX="14.0" layoutY="14.0" AnchorPane.bottomAnchor="14.0" AnchorPane.leftAnchor="14.0" AnchorPane.rightAnchor="14.0" AnchorPane.topAnchor="14.0">
          <children>
-            <AnchorPane fx:id="anchorPaneGame" prefHeight="572.0" prefWidth="599.0" HBox.hgrow="ALWAYS">
-               <children>
-                  <GridPane AnchorPane.bottomAnchor="0.0" AnchorPane.leftAnchor="0.0" AnchorPane.rightAnchor="0.0" AnchorPane.topAnchor="0.0">
-                    <columnConstraints>
-                      <ColumnConstraints hgrow="SOMETIMES" minWidth="10.0" prefWidth="100.0" />
-                      <ColumnConstraints hgrow="SOMETIMES" minWidth="10.0" prefWidth="100.0" />
-                    </columnConstraints>
-                    <rowConstraints>
-                      <RowConstraints minHeight="10.0" prefHeight="30.0" vgrow="SOMETIMES" />
-                      <RowConstraints minHeight="10.0" prefHeight="30.0" vgrow="SOMETIMES" />
-                      <RowConstraints minHeight="10.0" prefHeight="30.0" vgrow="SOMETIMES" />
-                    </rowConstraints>
-                  </GridPane>
-               </children></AnchorPane>
+            <AnchorPane fx:id="anchorPaneGame" prefHeight="572.0" prefWidth="599.0" HBox.hgrow="ALWAYS" />
             <VBox alignment="TOP_CENTER" prefHeight="572.0" prefWidth="124.0">
                <HBox.margin>
                   <Insets left="20.0" />
diff --git a/src/de/deadlocker8/roadgame/logic/Board.java b/src/de/deadlocker8/roadgame/logic/Board.java
index c384a7eaa840b0695dd279f514751c7782840368..5b260498b4d3ac41df91dc7e368d78c63251aa94 100644
--- a/src/de/deadlocker8/roadgame/logic/Board.java
+++ b/src/de/deadlocker8/roadgame/logic/Board.java
@@ -65,36 +65,48 @@ public class Board
 		//North
 		if(!containsTileAtPosition(x, y-1))
 		{	
-			if(tile.getN().equals(playerTile.getS()))
+			if(!tile.getN().equals(EdgeType.GRASS))
 			{
-				freeEdges.add(new Point2D(x, y-1));
+				if(tile.getN().equals(playerTile.getS()))
+				{
+					freeEdges.add(new Point2D(x, y-1));
+				}
 			}
 		}
 		
 		//East
 		if(!containsTileAtPosition(x+1, y))
 		{
-			if(tile.getE().equals(playerTile.getW()))
+			if(!tile.getE().equals(EdgeType.GRASS))
 			{
-
-			}freeEdges.add(new Point2D(x+1, y));
+				if(tile.getE().equals(playerTile.getW()))
+				{
+					freeEdges.add(new Point2D(x+1, y));
+				}
+			}
 		}
 				
 		//South
 		if(!containsTileAtPosition(x, y+1))
 		{
-			if(tile.getS().equals(playerTile.getN()))
+			if(!tile.getS().equals(EdgeType.GRASS))
 			{
-				freeEdges.add(new Point2D(x, y+1));
+				if(tile.getS().equals(playerTile.getN()))
+				{						
+					freeEdges.add(new Point2D(x, y+1));
+				}
 			}
 		}
 		
 		//West
 		if(!containsTileAtPosition(x-1, y))
 		{
-			if(tile.getW().equals(playerTile.getE()))
+			if(!tile.getW().equals(EdgeType.GRASS))
 			{
-				freeEdges.add(new Point2D(x-1, y));
+				if(tile.getW().equals(playerTile.getE()))
+				{
+					freeEdges.add(new Point2D(x-1, y));
+				}
 			}
 		}
 		
@@ -113,10 +125,12 @@ public class Board
 		return possibleLocations;
 	}
 	
-	public int getWidth()
+	public Dimension getDimension()
 	{
 		int minX = 0;
 		int maxX = 0;
+		int minY = 0;
+		int maxY = 0;
 		
 		for(Tile currentTile : tiles)
 		{
@@ -129,18 +143,7 @@ public class Board
 			{
 				maxX = (int)currentTile.getPosition().getX();
 			}
-		}	
-		
-		return Math.abs(minX) + maxX + 1;		
-	}
-	
-	public int getHeight()
-	{
-		int minY = 0;
-		int maxY = 0;
-		
-		for(Tile currentTile : tiles)
-		{
+			
 			if((int)currentTile.getPosition().getY() < minY)
 			{
 				minY = (int)currentTile.getPosition().getY();
@@ -150,9 +153,9 @@ public class Board
 			{
 				maxY = (int)currentTile.getPosition().getY();
 			}
-		}		
+		}	
 		
-		return Math.abs(minY) + maxY + 1;		
+		return new Dimension(minX, maxX, minY, maxY);		
 	}
 	
 	public void addTile(Tile tile)
diff --git a/src/de/deadlocker8/roadgame/logic/Dimension.java b/src/de/deadlocker8/roadgame/logic/Dimension.java
new file mode 100644
index 0000000000000000000000000000000000000000..b262903311b497b6e95a0daaf70f8b65e428858c
--- /dev/null
+++ b/src/de/deadlocker8/roadgame/logic/Dimension.java
@@ -0,0 +1,60 @@
+package de.deadlocker8.roadgame.logic;
+
+import javafx.geometry.Point2D;
+
+public class Dimension
+{
+	private int minX;
+	private int maxX;
+	private int minY;
+	private int maxY;
+		
+	public Dimension(int minX, int maxX, int minY, int maxY)
+	{
+		this.minX = minX;
+		this.maxX = maxX;
+		this.minY = minY;
+		this.maxY = maxY;
+	}
+	
+	public int getMinX()
+	{
+		return minX;
+	}
+	
+	public int getMaxX()
+	{
+		return maxX;
+	}
+	
+	public int getMinY()
+	{
+		return minY;
+	}
+	
+	public int getMaxY()
+	{
+		return maxY;
+	}
+	
+	public int getWidth()
+	{
+		return Math.abs(minX) + maxX + 1;
+	}
+	
+	public int getHeight()
+	{
+		return Math.abs(minY) + maxY + 1;
+	}
+	
+	public Point2D getCenterCoordinates()
+	{
+		return new Point2D(Math.abs(minX) + 1, Math.abs(minY) + 1);
+	}
+
+	@Override
+	public String toString()
+	{
+		return "Dimension [minX=" + minX + ", maxX=" + maxX + ", minY=" + minY + ", maxY=" + maxY + "]";
+	}
+}
\ No newline at end of file
diff --git a/src/de/deadlocker8/roadgame/logic/PossibleTiles.java b/src/de/deadlocker8/roadgame/logic/PossibleTiles.java
index 4a5e6d8c443ae3d46e3f956541560d340c327e23..4bb50b1954358fa673f56739953b85737f7397c7 100644
--- a/src/de/deadlocker8/roadgame/logic/PossibleTiles.java
+++ b/src/de/deadlocker8/roadgame/logic/PossibleTiles.java
@@ -35,7 +35,7 @@ public class PossibleTiles
 		{
 			tile.rotateRight();
 		}
-		
+	
 		return tile;
 	}
 }
\ No newline at end of file
diff --git a/src/de/deadlocker8/roadgame/resources/2.png b/src/de/deadlocker8/roadgame/resources/2.png
new file mode 100644
index 0000000000000000000000000000000000000000..8d8cea35f9b801e5f39132e92b07a3630a5fedaa
Binary files /dev/null and b/src/de/deadlocker8/roadgame/resources/2.png differ
diff --git a/src/de/deadlocker8/roadgame/resources/border.png b/src/de/deadlocker8/roadgame/resources/border.png
new file mode 100644
index 0000000000000000000000000000000000000000..c2b5d4faf7bd65e73e071791bbd9cabd0cee17e5
Binary files /dev/null and b/src/de/deadlocker8/roadgame/resources/border.png differ
diff --git a/src/de/deadlocker8/roadgame/resources/empty.png b/src/de/deadlocker8/roadgame/resources/empty.png
new file mode 100644
index 0000000000000000000000000000000000000000..0b624ce13d73f787120c3997e3836566e212cfba
Binary files /dev/null and b/src/de/deadlocker8/roadgame/resources/empty.png differ
diff --git a/src/de/deadlocker8/roadgame/resources/green.png b/src/de/deadlocker8/roadgame/resources/green.png
new file mode 100644
index 0000000000000000000000000000000000000000..947ab103ae2d22eb71f398df474884b16d07e44f
Binary files /dev/null and b/src/de/deadlocker8/roadgame/resources/green.png differ
diff --git a/src/de/deadlocker8/roadgame/resources/road.png b/src/de/deadlocker8/roadgame/resources/road.png
new file mode 100644
index 0000000000000000000000000000000000000000..0c2cd245f9822b3c40316e419e2e314418b3213a
Binary files /dev/null and b/src/de/deadlocker8/roadgame/resources/road.png differ
diff --git a/src/de/deadlocker8/roadgame/ui/Controller.java b/src/de/deadlocker8/roadgame/ui/Controller.java
index 0efae05e388087cfd8303e68c275ff2460aa5b60..e29638ccc9530e4b4c050c9d32af8116c35b229f 100644
--- a/src/de/deadlocker8/roadgame/ui/Controller.java
+++ b/src/de/deadlocker8/roadgame/ui/Controller.java
@@ -4,9 +4,8 @@ import java.util.ArrayList;
 import java.util.Locale;
 import java.util.ResourceBundle;
 
-import com.sun.org.apache.bcel.internal.generic.IfInstruction;
-
 import de.deadlocker8.roadgame.logic.Board;
+import de.deadlocker8.roadgame.logic.EdgeType;
 import de.deadlocker8.roadgame.logic.Game;
 import de.deadlocker8.roadgame.logic.Tile;
 import javafx.event.EventHandler;
@@ -17,6 +16,9 @@ import javafx.scene.control.Alert.AlertType;
 import javafx.scene.control.Button;
 import javafx.scene.control.Label;
 import javafx.scene.image.Image;
+import javafx.scene.image.ImageView;
+import javafx.scene.input.MouseButton;
+import javafx.scene.input.MouseEvent;
 import javafx.scene.layout.AnchorPane;
 import javafx.scene.layout.GridPane;
 import javafx.scene.layout.StackPane;
@@ -68,61 +70,139 @@ public class Controller
 	
 	private void updateGrid(Board board, ArrayList<Point2D> possibleLocations)
 	{		
-		grid.getChildren().clear();
+		grid.getChildren().clear();				
+		
+		int width = board.getDimension().getWidth();
+		int height = board.getDimension().getHeight();
 		
-		int width = board.getWidth();
-		int height = board.getHeight();
+		Point2D center = board.getDimension().getCenterCoordinates();		
 		
-		//fill outer rim with void
 		for(int x = 0; x < width + 2; x++)
 		{
 			for(int y = 0; y < height + 2; y++)
 			{
 				if(x == 0 || y == 0 || x == width + 1 || y == height + 1)
-				{
-					Label label = new Label("X");
+				{				
 					if(possibleLocations != null)
 					{
-						//TODO x , y is alwasy positive, but possible locations can be negative --> transform coordinates
-						if(isInPossibleLocations(possibleLocations, x, y))
+						if(isInPossibleLocations(possibleLocations, center, x, y))
+						{
+							grid.add(createStackPaneForTile(null, true, -((int)center.getX() - x), -((int)center.getY() - y)), x, y);		
+						}
+						else
 						{
-							label.setStyle("-fx-background-color: red");
+							grid.add(createStackPaneForTile(null, false, 0, 0), x, y);		
 						}
 					}
-					
-					grid.add(label, y, x);
-					
+					else
+					{
+						grid.add(createStackPaneForTile(null, false, 0, 0), x, y);		
+					}	
 				}
 				else
 				{		
-					Tile tile = board.getTile(x-1, y-1);
+					System.out.println("�hm: " +( x - (int)center.getX() )+"    "+ (y - (int)center.getY() ));
+					Tile tile = board.getTile(x - (int)center.getX(), y - (int)center.getY());
 					if(tile != null)
 					{					
-						grid.add(new Label(board.getTile(x-1, y-1).toShortString()), y, x);
+						grid.add(createStackPaneForTile(tile, false, 0, 0), x, y);						
 					}
 					else
 					{
-						Label label = new Label("X");
 						if(possibleLocations != null)
 						{
-							if(isInPossibleLocations(possibleLocations, x, y))
+							if(isInPossibleLocations(possibleLocations, center, x, y))
+							{
+								grid.add(createStackPaneForTile(null, true, x - (int)center.getX(), y - (int)center.getY()), x, y);		
+							}
+							else
 							{
-								label.setStyle("-fx-background-color: red");
+								grid.add(createStackPaneForTile(null, false, 0, 0), x, y);		
 							}
 						}
-						
-						grid.add(label, y, x);
+						else
+						{
+							grid.add(createStackPaneForTile(null, false, 0, 0), x, y);		
+						}	
 					}
 				}	
 			}
 		}		
 	}
 	
-	private boolean isInPossibleLocations(ArrayList<Point2D> possibleLocations, int x, int y)
+	private void placeTile(int x, int y)
+	{
+		System.out.println(x + "  " + y);
+		game.placeTile(game.getCurrentTile(), new Point2D(x, y));
+		nextTile();
+	}
+	
+	private StackPane createStackPaneForTile(Tile tile, boolean possible, int x, int y)
+	{
+		StackPane stack = new StackPane();	
+		
+		stack.getChildren().add(new ImageView(new Image("de/deadlocker8/roadgame/resources/empty.png")));
+		
+		if(tile == null)
+		{
+			if(possible)
+			{
+				stack.getChildren().add(new ImageView(new Image("de/deadlocker8/roadgame/resources/border.png")));	
+				stack.setOnMouseClicked(new EventHandler<MouseEvent>()
+				{
+					@Override
+					public void handle(MouseEvent event)
+					{
+						if(event.getButton().equals(MouseButton.PRIMARY))
+						{
+							placeTile(x, y);
+						}						
+					}
+				});
+			}
+		}
+		else
+		{
+			stack.getChildren().add(new ImageView(new Image("de/deadlocker8/roadgame/resources/green.png")));	
+			
+			if(tile.getN().equals(EdgeType.ROAD))
+			{			
+				ImageView imageViewRoadNorth = new ImageView(new Image("de/deadlocker8/roadgame/resources/road.png"));					
+				stack.getChildren().add(imageViewRoadNorth);
+			}	
+			
+			if(tile.getE().equals(EdgeType.ROAD))
+			{			
+				ImageView imageViewRoadEast = new ImageView(new Image("de/deadlocker8/roadgame/resources/road.png"));	
+				imageViewRoadEast.setRotate(90);
+				stack.getChildren().add(imageViewRoadEast);
+			}	
+			
+			if(tile.getS().equals(EdgeType.ROAD))
+			{			
+				ImageView imageViewRoadSouth = new ImageView(new Image("de/deadlocker8/roadgame/resources/road.png"));	
+				imageViewRoadSouth.setRotate(180);
+				stack.getChildren().add(imageViewRoadSouth);
+			}	
+			
+			if(tile.getW().equals(EdgeType.ROAD))
+			{			
+				ImageView imageViewRoadWest = new ImageView(new Image("de/deadlocker8/roadgame/resources/road.png"));	
+				imageViewRoadWest.setRotate(270);
+				stack.getChildren().add(imageViewRoadWest);
+			}	
+		}		
+		
+		return stack;
+	}
+	
+	private boolean isInPossibleLocations(ArrayList<Point2D> possibleLocations, Point2D center, int x, int y)
 	{
 		for(Point2D currentPoint : possibleLocations)
 		{
-			if((int)currentPoint.getX() == x && (int)currentPoint.getY() == y)
+			int currentX = (int)center.getX() + (int)currentPoint.getX(); 
+			int currentY = (int)center.getY() + (int)currentPoint.getY(); 
+			if(currentX == x && currentY == y)
 			{
 				return true;
 			}
@@ -136,15 +216,19 @@ public class Controller
 		game.setCurrentTile(game.getNextTile());
 		
 		stackPaneCurrentTile.getChildren().clear();
-		stackPaneCurrentTile.getChildren().add(new Label(game.getCurrentTile().toShortString()));
+		stackPaneCurrentTile.getChildren().add(createStackPaneForTile(game.getCurrentTile(), false, 0, 0));
+		System.out.println(game.getBoard());
 		
-		System.out.println(game.getPossibleLocations(game.getCurrentTile()));
 		updateGrid(game.getBoard(), game.getPossibleLocations(game.getCurrentTile()));
 	}
 	
 	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()));
 	}
 
 	public void about()