diff --git a/bin/de/deadlocker8/roadgame/logic/Board.class b/bin/de/deadlocker8/roadgame/logic/Board.class
index 57c8bd9335e70decc0b5a8ad7f84bd7d51ebbc47..1b11f364cb1c2ba2d180a4668e20ae5608ef4dd5 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/CenterType.class b/bin/de/deadlocker8/roadgame/logic/CenterType.class
new file mode 100644
index 0000000000000000000000000000000000000000..95d4df8668b7d78b6ad344bfab615e7cc65471cc
Binary files /dev/null and b/bin/de/deadlocker8/roadgame/logic/CenterType.class differ
diff --git a/bin/de/deadlocker8/roadgame/logic/EdgeType.class b/bin/de/deadlocker8/roadgame/logic/EdgeType.class
index 182bf379e3f568a0046606bc46906f13cdebc40b..9f4e1e0a5de4ad1283c3f0f788cba96bbce0f029 100644
Binary files a/bin/de/deadlocker8/roadgame/logic/EdgeType.class and b/bin/de/deadlocker8/roadgame/logic/EdgeType.class differ
diff --git a/bin/de/deadlocker8/roadgame/logic/Textures.class b/bin/de/deadlocker8/roadgame/logic/Textures.class
index 9328b2686bb49ac6158a7a90a35af6482bc3a888..0c0a89d2c7471997ac3cb9eb6a0f1bbbb6e8c5c3 100644
Binary files a/bin/de/deadlocker8/roadgame/logic/Textures.class and b/bin/de/deadlocker8/roadgame/logic/Textures.class differ
diff --git a/bin/de/deadlocker8/roadgame/logic/Tile.class b/bin/de/deadlocker8/roadgame/logic/Tile.class
index 5347d9b7f579065c7f814af569c2ae146b3adc09..6c03737627235fc1e125273bd591da9a847b6ba1 100644
Binary files a/bin/de/deadlocker8/roadgame/logic/Tile.class and b/bin/de/deadlocker8/roadgame/logic/Tile.class differ
diff --git a/bin/de/deadlocker8/roadgame/logic/TileTypes.class b/bin/de/deadlocker8/roadgame/logic/TileTypes.class
index 61650ecfdf66a824d80d0adee3c61be9dc2cb6c2..943e11dd0df0c4c8980be70480f14c940358db84 100644
Binary files a/bin/de/deadlocker8/roadgame/logic/TileTypes.class and b/bin/de/deadlocker8/roadgame/logic/TileTypes.class differ
diff --git a/bin/de/deadlocker8/roadgame/resources/castle.png b/bin/de/deadlocker8/roadgame/resources/castle.png
new file mode 100644
index 0000000000000000000000000000000000000000..1b6bbe406fd37c89a36b0654672a9e0c122b3b26
Binary files /dev/null and b/bin/de/deadlocker8/roadgame/resources/castle.png differ
diff --git a/bin/de/deadlocker8/roadgame/resources/center_castle.png b/bin/de/deadlocker8/roadgame/resources/center_castle.png
new file mode 100644
index 0000000000000000000000000000000000000000..0ddb1de6225d11a962956dc866d5b63d8eee8657
Binary files /dev/null and b/bin/de/deadlocker8/roadgame/resources/center_castle.png differ
diff --git a/bin/de/deadlocker8/roadgame/resources/center_castle_triangle.png b/bin/de/deadlocker8/roadgame/resources/center_castle_triangle.png
new file mode 100644
index 0000000000000000000000000000000000000000..7f03ee6bdfdf9260222cd17313e0dab9268ee04d
Binary files /dev/null and b/bin/de/deadlocker8/roadgame/resources/center_castle_triangle.png differ
diff --git a/bin/de/deadlocker8/roadgame/ui/Controller.class b/bin/de/deadlocker8/roadgame/ui/Controller.class
index ed189f709b208353aa5da985c7e2b3a8652b7486..da6912eebc7b6b41608ad1889c1eca56f26e5c9d 100644
Binary files a/bin/de/deadlocker8/roadgame/ui/Controller.class and b/bin/de/deadlocker8/roadgame/ui/Controller.class differ
diff --git a/src/de/deadlocker8/roadgame/logic/Board.java b/src/de/deadlocker8/roadgame/logic/Board.java
index ab24c7b5e87e912606d915cb36f7f12fad9929e9..c390f3242e1d92b327aeaa3f1229390efa884eb1 100644
--- a/src/de/deadlocker8/roadgame/logic/Board.java
+++ b/src/de/deadlocker8/roadgame/logic/Board.java
@@ -46,7 +46,7 @@ public class Board
 		Random random = new Random();
 		int index = random.nextInt(TileTypes.values().length);
 		TileTypes tileType = TileTypes.values()[index];	
-		Tile tile = new Tile(tileType.getN(), tileType.getE(), tileType.getS(), tileType.getW());
+		Tile tile = new Tile(tileType.getN(), tileType.getE(), tileType.getS(), tileType.getW(), tileType.getC());
 		
 		//random rotation
 		int rotate = random.nextInt(3);
diff --git a/src/de/deadlocker8/roadgame/logic/CenterType.java b/src/de/deadlocker8/roadgame/logic/CenterType.java
new file mode 100644
index 0000000000000000000000000000000000000000..3e7114b8c809231b59e8fb5b8fc1c47561b73035
--- /dev/null
+++ b/src/de/deadlocker8/roadgame/logic/CenterType.java
@@ -0,0 +1,6 @@
+package de.deadlocker8.roadgame.logic;
+
+public enum CenterType
+{
+	EMPTY, CASTLE, CASTLE_TRIANGLE
+}
\ No newline at end of file
diff --git a/src/de/deadlocker8/roadgame/logic/EdgeType.java b/src/de/deadlocker8/roadgame/logic/EdgeType.java
index 54f9903224cffd205608d121401213d0ded8edeb..6f049c03c63dd24f5d5667cfa348890cbdafa9d7 100644
--- a/src/de/deadlocker8/roadgame/logic/EdgeType.java
+++ b/src/de/deadlocker8/roadgame/logic/EdgeType.java
@@ -2,5 +2,5 @@ package de.deadlocker8.roadgame.logic;
 
 public enum EdgeType
 {
-	GRASS, ROAD
+	GRASS, ROAD, CASTLE
 }
\ No newline at end of file
diff --git a/src/de/deadlocker8/roadgame/logic/Textures.java b/src/de/deadlocker8/roadgame/logic/Textures.java
index 5dd21b0d28a1b6c46b91f42af9cc4a6006a5529a..9625830f207ae9fbebb811648fce7ccde34bfc4e 100644
--- a/src/de/deadlocker8/roadgame/logic/Textures.java
+++ b/src/de/deadlocker8/roadgame/logic/Textures.java
@@ -8,6 +8,9 @@ public class Textures
 	private Image imageBorder= new Image("de/deadlocker8/roadgame/resources/border.png");
 	private Image imageGrass = new Image("de/deadlocker8/roadgame/resources/grass.png");
 	private Image imageRoad = new Image("de/deadlocker8/roadgame/resources/road.png");
+	private Image imageCastle = new Image("de/deadlocker8/roadgame/resources/castle.png");
+	private Image imageCenterCastle = new Image("de/deadlocker8/roadgame/resources/center_castle.png");
+	private Image imageCenterCastleTriangle = new Image("de/deadlocker8/roadgame/resources/center_castle_triangle.png");
 	
 	public Textures()
 	{
@@ -33,4 +36,19 @@ public class Textures
 	{
 		return imageRoad;
 	}
+
+	public Image getImageCastle()
+	{
+		return imageCastle;
+	}
+
+	public Image getImageCenterCastle()
+	{
+		return imageCenterCastle;
+	}
+
+	public Image getImageCenterCastleTriangle()
+	{
+		return imageCenterCastleTriangle;
+	}
 }
\ No newline at end of file
diff --git a/src/de/deadlocker8/roadgame/logic/Tile.java b/src/de/deadlocker8/roadgame/logic/Tile.java
index b78a6b770cb7a578860e9d82730266b2641e6146..93e7c56ff5ad5854bed03eb72d76fb29ba79f7ee 100644
--- a/src/de/deadlocker8/roadgame/logic/Tile.java
+++ b/src/de/deadlocker8/roadgame/logic/Tile.java
@@ -8,23 +8,26 @@ public class Tile
 	private EdgeType E;
 	private EdgeType S;
 	private EdgeType W;	
+	private CenterType C;
 	private Point2D position;
 	
-	public Tile(EdgeType N, EdgeType E, EdgeType S, EdgeType W, int x, int y)
+	public Tile(EdgeType N, EdgeType E, EdgeType S, EdgeType W, CenterType C, int x, int y)
 	{		
 		this.N = N;
 		this.E = E;
 		this.S = S;
 		this.W = W;
+		this.C = C;
 		this.position = new Point2D(x, y);
 	}
 	
-	public Tile(EdgeType N, EdgeType E, EdgeType S, EdgeType W)
+	public Tile(EdgeType N, EdgeType E, EdgeType S, EdgeType W, CenterType C)
 	{		
 		this.N = N;
 		this.E = E;
 		this.S = S;
 		this.W = W;
+		this.C = C;
 		this.position = null;
 	}	
 
@@ -46,8 +49,13 @@ public class Tile
 	public EdgeType getW()
 	{
 		return W;
-	}		
+	}	
 	
+	public CenterType getC()
+	{
+		return C;
+	}
+
 	public Point2D getPosition()
 	{
 		return position;
diff --git a/src/de/deadlocker8/roadgame/logic/TileTypes.java b/src/de/deadlocker8/roadgame/logic/TileTypes.java
index 80a0ce9d4ef2a13a723671d04de2c4e3c58429e8..81fccb9162d1228e3580e08eeaad6d839df75c1b 100644
--- a/src/de/deadlocker8/roadgame/logic/TileTypes.java
+++ b/src/de/deadlocker8/roadgame/logic/TileTypes.java
@@ -2,23 +2,45 @@ package de.deadlocker8.roadgame.logic;
 
 public enum TileTypes
 {
-	ROAD_END(EdgeType.ROAD, EdgeType.GRASS, EdgeType.GRASS, EdgeType.GRASS),
-	ROAD_STRAIGHT(EdgeType.ROAD, EdgeType.GRASS, EdgeType.ROAD, EdgeType.GRASS),
-	ROAD_CURVE(EdgeType.ROAD, EdgeType.ROAD, EdgeType.GRASS, EdgeType.GRASS),
-	ROAD_T_JUNCTION(EdgeType.ROAD, EdgeType.ROAD, EdgeType.ROAD, EdgeType.GRASS),			
-	ROAD_X_JUNCTION(EdgeType.ROAD, EdgeType.ROAD, EdgeType.ROAD, EdgeType.ROAD);			
+	ROAD_END(EdgeType.ROAD, EdgeType.GRASS, EdgeType.GRASS, EdgeType.GRASS, CenterType.EMPTY),
+	ROAD_STRAIGHT(EdgeType.ROAD, EdgeType.GRASS, EdgeType.ROAD, EdgeType.GRASS, CenterType.EMPTY),
+	ROAD_CURVE(EdgeType.ROAD, EdgeType.ROAD, EdgeType.GRASS, EdgeType.GRASS, CenterType.EMPTY),
+	ROAD_T_JUNCTION(EdgeType.ROAD, EdgeType.ROAD, EdgeType.ROAD, EdgeType.GRASS, CenterType.EMPTY),			
+	ROAD_X_JUNCTION(EdgeType.ROAD, EdgeType.ROAD, EdgeType.ROAD, EdgeType.ROAD, CenterType.EMPTY),	
+	
+	CASTLE_SINGLE(EdgeType.CASTLE, EdgeType.GRASS, EdgeType.GRASS, EdgeType.GRASS,CenterType.EMPTY),
+	CASTLE_TWO_SINGLE_OPPOSITE(EdgeType.CASTLE, EdgeType.GRASS, EdgeType.CASTLE, EdgeType.GRASS, CenterType.EMPTY),
+	CASTLE_TWO_SINGLE_NEIGHBOR(EdgeType.CASTLE, EdgeType.CASTLE, EdgeType.GRASS, EdgeType.GRASS, CenterType.EMPTY),
+	CASTLE_THREE_SINGLE(EdgeType.CASTLE, EdgeType.CASTLE, EdgeType.CASTLE, EdgeType.GRASS, CenterType.EMPTY),
+	CASTLE_FOUR_SINGLE(EdgeType.CASTLE, EdgeType.CASTLE, EdgeType.CASTLE, EdgeType.CASTLE, CenterType.EMPTY),
+	
+	CASTLE_TRIANGLE(EdgeType.CASTLE, EdgeType.CASTLE, EdgeType.GRASS, EdgeType.GRASS, CenterType.CASTLE_TRIANGLE),
+	CASTLE_TUBE(EdgeType.CASTLE, EdgeType.GRASS, EdgeType.CASTLE, EdgeType.GRASS, CenterType.CASTLE),
+	CASTLE_FULL(EdgeType.CASTLE, EdgeType.CASTLE, EdgeType.CASTLE, EdgeType.CASTLE, CenterType.CASTLE),
+	
+	CASTLE_SINGLE_ROAD_STRAIGHT(EdgeType.CASTLE, EdgeType.ROAD, EdgeType.GRASS, EdgeType.ROAD,CenterType.EMPTY),
+	CASTLE_SINGLE_ROAD_CURVE_RIGHT(EdgeType.CASTLE, EdgeType.ROAD, EdgeType.ROAD, EdgeType.GRASS,CenterType.EMPTY),
+	CASTLE_SINGLE_ROAD_CURVE_LEFT(EdgeType.CASTLE, EdgeType.GRASS, EdgeType.ROAD, EdgeType.ROAD,CenterType.EMPTY),
+	CASTLE_SINGLE_ROAD_T_JUNCTION(EdgeType.CASTLE, EdgeType.ROAD, EdgeType.ROAD, EdgeType.ROAD,CenterType.EMPTY),
+	
+	CASTLE_TWO_SINGLE_OPPOSITE_ROAD_STRAIGHT(EdgeType.CASTLE, EdgeType.ROAD, EdgeType.CASTLE, EdgeType.ROAD, CenterType.EMPTY),	
+	CASTLE_TWO_SINGLE_NEIGHBOR_ROAD_CURVE(EdgeType.CASTLE, EdgeType.CASTLE, EdgeType.ROAD, EdgeType.ROAD, CenterType.EMPTY),
+	CASTLE_THREE_SINGLE_ROAD_END(EdgeType.CASTLE, EdgeType.CASTLE, EdgeType.CASTLE, EdgeType.ROAD, CenterType.EMPTY);
+	
 	
 	private EdgeType N;
 	private EdgeType E;
 	private EdgeType S;
 	private EdgeType W;
-	
-	private TileTypes(EdgeType n, EdgeType e, EdgeType s, EdgeType w)
+	private CenterType C;
+		
+	private TileTypes(EdgeType n, EdgeType e, EdgeType s, EdgeType w, CenterType c)
 	{
 		N = n;
 		E = e;
 		S = s;
 		W = w;
+		C = c;
 	}
 
 	public EdgeType getN()
@@ -40,4 +62,9 @@ public enum TileTypes
 	{
 		return W;
 	}
+
+	public CenterType getC()
+	{
+		return C;
+	}
 }
\ No newline at end of file
diff --git a/src/de/deadlocker8/roadgame/resources/castle.png b/src/de/deadlocker8/roadgame/resources/castle.png
new file mode 100644
index 0000000000000000000000000000000000000000..1b6bbe406fd37c89a36b0654672a9e0c122b3b26
Binary files /dev/null and b/src/de/deadlocker8/roadgame/resources/castle.png differ
diff --git a/src/de/deadlocker8/roadgame/resources/center_castle.png b/src/de/deadlocker8/roadgame/resources/center_castle.png
new file mode 100644
index 0000000000000000000000000000000000000000..0ddb1de6225d11a962956dc866d5b63d8eee8657
Binary files /dev/null and b/src/de/deadlocker8/roadgame/resources/center_castle.png differ
diff --git a/src/de/deadlocker8/roadgame/resources/center_castle_triangle.png b/src/de/deadlocker8/roadgame/resources/center_castle_triangle.png
new file mode 100644
index 0000000000000000000000000000000000000000..7f03ee6bdfdf9260222cd17313e0dab9268ee04d
Binary files /dev/null and b/src/de/deadlocker8/roadgame/resources/center_castle_triangle.png differ
diff --git a/src/de/deadlocker8/roadgame/ui/Controller.java b/src/de/deadlocker8/roadgame/ui/Controller.java
index da34629b6c0823a4dbd9f7e81c530db5b18a9973..788629997fa7e017cc4d74ec70a3eb7c3419943a 100644
--- a/src/de/deadlocker8/roadgame/ui/Controller.java
+++ b/src/de/deadlocker8/roadgame/ui/Controller.java
@@ -31,67 +31,67 @@ public class Controller
 	@FXML private StackPane stackPaneCurrentTile;
 	@FXML private Button buttonRotate;
 	@FXML private ScrollPane scrollPane;
-	
+
 	private Image icon = new Image("de/deadlocker8/roadgame/resources/icon.png");
 	private final ResourceBundle bundle = ResourceBundle.getBundle("de/deadlocker8/roadgame/main/", Locale.GERMANY);
 	private GridPane grid;
-	private Game game;	
+	private Game game;
 	private Textures textures;
 
 	public void init(Stage stage)
-	{	
+	{
 		textures = new Textures();
-		
+
 		anchorPaneGame.setStyle("-fx-border-color: #333333; -fx-border-width: 2px");
 		stackPaneCurrentTile.setStyle("-fx-border-color: #333333; -fx-border-width: 2px");
-		
+
 		grid = new GridPane();
 		scrollPane.setContent(grid);
-		
+
 		game = new Game();
-		
+
 		updateGrid(game.getBoard(), null);
-		
+
 		nextTile();
 	}
-	
+
 	private void updateGrid(Board board, ArrayList<Point2D> possibleLocations)
-	{		
-		grid.getChildren().clear();				
-		
+	{
+		grid.getChildren().clear();
+
 		int width = board.getDimension().getWidth();
 		int height = board.getDimension().getHeight();
-		
-		Point2D center = board.getDimension().getCenterCoordinates();		
-		
+
+		Point2D center = board.getDimension().getCenterCoordinates();
+
 		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)
-				{				
+				{
 					if(possibleLocations != null)
 					{
 						if(isInPossibleLocations(possibleLocations, center, x, y))
 						{
-							grid.add(createStackPaneForTile(null, true, -((int)center.getX() - x), -((int)center.getY() - y)), x, y);		
+							grid.add(createStackPaneForTile(null, true, -((int)center.getX() - x), -((int)center.getY() - y)), x, y);
 						}
 						else
 						{
-							grid.add(createStackPaneForTile(null, false, 0, 0), x, y);		
+							grid.add(createStackPaneForTile(null, false, 0, 0), x, y);
 						}
 					}
 					else
 					{
-						grid.add(createStackPaneForTile(null, false, 0, 0), x, y);		
-					}	
+						grid.add(createStackPaneForTile(null, false, 0, 0), x, y);
+					}
 				}
 				else
-				{							
+				{
 					Tile tile = board.getTile(x - (int)center.getX(), y - (int)center.getY());
 					if(tile != null)
-					{					
-						grid.add(createStackPaneForTile(tile, false, 0, 0), x, y);						
+					{
+						grid.add(createStackPaneForTile(tile, false, 0, 0), x, y);
 					}
 					else
 					{
@@ -99,40 +99,40 @@ public class Controller
 						{
 							if(isInPossibleLocations(possibleLocations, center, x, y))
 							{
-								grid.add(createStackPaneForTile(null, true, x - (int)center.getX(), y - (int)center.getY()), x, y);		
+								grid.add(createStackPaneForTile(null, true, x - (int)center.getX(), y - (int)center.getY()), x, y);
 							}
 							else
 							{
-								grid.add(createStackPaneForTile(null, false, 0, 0), x, y);		
+								grid.add(createStackPaneForTile(null, false, 0, 0), x, y);
 							}
 						}
 						else
 						{
-							grid.add(createStackPaneForTile(null, false, 0, 0), x, y);		
-						}	
+							grid.add(createStackPaneForTile(null, false, 0, 0), x, y);
+						}
 					}
-				}	
+				}
 			}
 		}
 	}
-	
+
 	private void placeTile(int x, int 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();	
-		
+		StackPane stack = new StackPane();
+
 		stack.getChildren().add(new ImageView(textures.getImageEmpty()));
-		
+
 		if(tile == null)
 		{
 			if(possible)
 			{
-				stack.getChildren().add(new ImageView(textures.getImageBorder()));	
+				stack.getChildren().add(new ImageView(textures.getImageBorder()));
 				stack.setOnMouseClicked(new EventHandler<MouseEvent>()
 				{
 					@Override
@@ -141,77 +141,127 @@ public class Controller
 						if(event.getButton().equals(MouseButton.PRIMARY))
 						{
 							placeTile(x, y);
-						}						
+						}
 					}
 				});
 			}
 		}
 		else
 		{
-			stack.getChildren().add(new ImageView(textures.getImageGrass()));	
-			
-			if(tile.getN().equals(EdgeType.ROAD))
-			{			
-				ImageView imageViewRoadNorth = new ImageView(textures.getImageRoad());					
-				stack.getChildren().add(imageViewRoadNorth);
-			}	
+			stack.getChildren().add(new ImageView(textures.getImageGrass()));
 			
-			if(tile.getE().equals(EdgeType.ROAD))
-			{			
-				ImageView imageViewRoadEast = new ImageView(textures.getImageRoad());	
-				imageViewRoadEast.setRotate(90);
-				stack.getChildren().add(imageViewRoadEast);
-			}	
-			
-			if(tile.getS().equals(EdgeType.ROAD))
-			{			
-				ImageView imageViewRoadSouth = new ImageView(textures.getImageRoad());	
-				imageViewRoadSouth.setRotate(180);
-				stack.getChildren().add(imageViewRoadSouth);
-			}	
+			//North
+			stack.getChildren().add(getImageForEdge(tile.getN()));	
+
+			//East
+			ImageView imageViewEast = getImageForEdge(tile.getE());
+			imageViewEast.setRotate(90);
+			stack.getChildren().add(imageViewEast);			
+
+			//South
+			ImageView imageViewSouth = getImageForEdge(tile.getS());
+			imageViewSouth.setRotate(180);
+			stack.getChildren().add(imageViewSouth);			
+
+			//West			
+			ImageView imageViewWest = getImageForEdge(tile.getW());
+			imageViewWest.setRotate(270);
+			stack.getChildren().add(imageViewWest);	
 			
-			if(tile.getW().equals(EdgeType.ROAD))
-			{			
-				ImageView imageViewRoadWest = new ImageView(textures.getImageRoad());	
-				imageViewRoadWest.setRotate(270);
-				stack.getChildren().add(imageViewRoadWest);
-			}	
-		}		
-		
+			//Center					
+			ImageView imageViewCenter = getImageForCenter(tile);
+			stack.getChildren().add(imageViewCenter);	
+		}
+
+		stack.setStyle("-fx-border-color: #cccccc; -fx-border-width: 1px;");
 		return stack;
 	}
+
+	private ImageView getImageForEdge(EdgeType edgeType)
+	{
+		switch(edgeType)
+		{
+			case GRASS:
+				return new ImageView(textures.getImageEmpty());
+			case ROAD:
+				return new ImageView(textures.getImageRoad());			
+			case CASTLE:
+				return new ImageView(textures.getImageCastle());			
+			default:
+				return new ImageView(textures.getImageEmpty());
+		}
+	}
 	
+	private ImageView getImageForCenter(Tile tile)
+	{		
+		switch(tile.getC())
+		{
+			case EMPTY:
+				return new ImageView(textures.getImageEmpty());
+			case CASTLE:
+				return new ImageView(textures.getImageCenterCastle());			
+			case CASTLE_TRIANGLE:
+				ImageView iv = new ImageView(textures.getImageCenterCastleTriangle());			
+				if(tile.getN().equals(EdgeType.CASTLE))
+				{
+					if(tile.getW().equals(EdgeType.CASTLE))
+					{
+						//North and West
+						iv.setRotate(270);
+					}
+				}
+				
+				if(tile.getS().equals(EdgeType.CASTLE))
+				{					
+					if(tile.getE().equals(EdgeType.CASTLE))
+					{
+						//South and East
+						iv.setRotate(90);
+					}
+					else
+					{
+						//South and West
+						iv.setRotate(180);
+					}
+				}
+				
+				return iv;
+			default:
+				return new ImageView(textures.getImageEmpty());
+		}
+	}
+
 	private boolean isInPossibleLocations(ArrayList<Point2D> possibleLocations, Point2D center, int x, int y)
 	{
 		for(Point2D currentPoint : possibleLocations)
 		{
-			int currentX = (int)center.getX() + (int)currentPoint.getX(); 
-			int currentY = (int)center.getY() + (int)currentPoint.getY(); 
+			int currentX = (int)center.getX() + (int)currentPoint.getX();
+			int currentY = (int)center.getY() + (int)currentPoint.getY();
 			if(currentX == x && currentY == y)
 			{
 				return true;
 			}
 		}
-		
+
 		return false;
 	}
-	
+
 	private void nextTile()
 	{
 		game.setCurrentTile(game.getNextTile());
-		
+
 		stackPaneCurrentTile.getChildren().clear();
-		stackPaneCurrentTile.getChildren().add(createStackPaneForTile(game.getCurrentTile(), false, 0, 0));	
-		
+		stackPaneCurrentTile.getChildren().add(createStackPaneForTile(game.getCurrentTile(), false, 0, 0));
+
 		updateGrid(game.getBoard(), game.getPossibleLocations(game.getCurrentTile()));
 	}
-	
+
 	public void rotateRight()
 	{
-		game.getCurrentTile().rotateRight();		
+		game.getCurrentTile().rotateRight();
 		stackPaneCurrentTile.getChildren().clear();
-		stackPaneCurrentTile.getChildren().add(createStackPaneForTile(game.getCurrentTile(), false, 0, 0));	
-		
+		stackPaneCurrentTile.getChildren().add(createStackPaneForTile(game.getCurrentTile(), false, 0, 0));
+
 		updateGrid(game.getBoard(), game.getPossibleLocations(game.getCurrentTile()));
 	}