diff --git a/class/application/Controller$4.class b/class/application/Controller$4.class
index 18e172e014f9f90cf9c77aac8d174c5207080d6d..4f60b496f10af4cf9f947231cbafa5df3c3fee53 100644
Binary files a/class/application/Controller$4.class and b/class/application/Controller$4.class differ
diff --git a/class/application/Controller$5.class b/class/application/Controller$5.class
index 8af2d7a21736cb309334f3db6649df62f7150a7c..214ee6007f791e9e7d1f629ec33131901f2caec7 100644
Binary files a/class/application/Controller$5.class and b/class/application/Controller$5.class differ
diff --git a/class/application/Controller$6.class b/class/application/Controller$6.class
index c6e728912a18f3fbf8453904330e8e10bf5fec52..e54264ca2edcfce086383ee75a7c51216832f40a 100644
Binary files a/class/application/Controller$6.class and b/class/application/Controller$6.class differ
diff --git a/class/application/Controller$7.class b/class/application/Controller$7.class
index 924830cc9a644c72f247fc5b0f8afae39ecf9e96..d61976a7aeeb3560e3825f3ec598fed2f17e03c1 100644
Binary files a/class/application/Controller$7.class and b/class/application/Controller$7.class differ
diff --git a/class/application/Controller$8.class b/class/application/Controller$8.class
index 317db5cfe359ab74d87b9e022e8e2e9ded25904a..0bb9c120efd23b4a10e1fa46428acd8e6f9724ca 100644
Binary files a/class/application/Controller$8.class and b/class/application/Controller$8.class differ
diff --git a/class/application/Controller.class b/class/application/Controller.class
index 5cfe2b26c0c85dea77f618ede9f90e9d5812753a..d79542545c43205b875435062864f7c1a9df6c34 100644
Binary files a/class/application/Controller.class and b/class/application/Controller.class differ
diff --git a/class/application/Main.class b/class/application/Main.class
index 08935e4292693a679681f849b984d2e497e64a36..9052a30434ad5936f733b59d1de4fb72348f0b71 100644
Binary files a/class/application/Main.class and b/class/application/Main.class differ
diff --git a/src/application/Controller.java b/src/application/Controller.java
index c3bb0b7561ea5b00250bf01b84f3d470414741dc..816c6cd92e2d773837c1faf3b12ae83cefe18826 100644
--- a/src/application/Controller.java
+++ b/src/application/Controller.java
@@ -70,10 +70,10 @@ public class Controller
 	private final ResourceBundle bundle = ResourceBundle.getBundle("application/", Locale.GERMANY);
 
 	private final double CARD_HEIGHT = 90.0;
-	private final double CARD_WIDTH = 57.0;
+	private final double CARD_WIDTH = 57.0;	
 	
 	private final double CARD_SPACING_LARGE = 14.0;
-	private final double CARD_SPACING_MEDIUM = - 3.0;
+	private final double CARD_SPACING_MEDIUM = 0.0;
 	private final double CARD_SPACING_SMALL = - 25.0;
 	private final double CARD_SPACING_ULTRA_SMALL = - 35.0;	
 
@@ -306,6 +306,7 @@ public class Controller
 		ImageView imageView = new ImageView(new Image("images/" + card.getType() + "-" + card.getColor() + ".png"));
 		imageView.setFitHeight(CARD_HEIGHT);
 		imageView.setFitWidth(CARD_WIDTH);
+		imageView.setSmooth(true);
 
 		if(!valid)
 		{
@@ -542,21 +543,21 @@ public class Controller
 				{
 					if((deckSize * (CARD_WIDTH + CARD_SPACING_SMALL)) > maxWidth)
 					{
-						return (PLAYER_STARTING_POINT.getX() + ((deckSize + 1) * (CARD_WIDTH + CARD_SPACING_ULTRA_SMALL)));
+						return PLAYER_STARTING_POINT.getX() + ((deckSize + 1) * (CARD_WIDTH + CARD_SPACING_ULTRA_SMALL)) - CARD_SPACING_ULTRA_SMALL;
 					}
 					else
 					{
-						return (PLAYER_STARTING_POINT.getX() + ((deckSize + 1) * (CARD_WIDTH + CARD_SPACING_SMALL)));
+						return PLAYER_STARTING_POINT.getX() + ((deckSize + 1) * (CARD_WIDTH + CARD_SPACING_SMALL)) - CARD_SPACING_SMALL;
 					}
 				}
 				else
 				{
-					return (PLAYER_STARTING_POINT.getX() + ((deckSize + 1) * (CARD_WIDTH + CARD_SPACING_MEDIUM)));
+					return PLAYER_STARTING_POINT.getX() + ((deckSize + 1) * (CARD_WIDTH + CARD_SPACING_MEDIUM)) - CARD_SPACING_MEDIUM;
 				}
 			}
 			else
 			{
-				return (PLAYER_STARTING_POINT.getX() + ((deckSize + 1) * (CARD_WIDTH + CARD_SPACING_LARGE)));
+				return PLAYER_STARTING_POINT.getX() + ((deckSize + 1) * (CARD_WIDTH + CARD_SPACING_LARGE)) - CARD_SPACING_LARGE;
 			}	
 		}
 		//AI 1 (Above Player)
@@ -570,21 +571,21 @@ public class Controller
 				{
 					if((deckSize * (CARD_WIDTH + CARD_SPACING_SMALL)) > maxWidth)
 					{
-						return (AI_1_STARTING_POINT.getX() + ((deckSize + 1) * (CARD_WIDTH + CARD_SPACING_ULTRA_SMALL)));
+						return AI_1_STARTING_POINT.getX() + ((deckSize + 1) * (CARD_WIDTH + CARD_SPACING_ULTRA_SMALL)) - CARD_SPACING_ULTRA_SMALL;
 					}
 					else
 					{
-						return (AI_1_STARTING_POINT.getX() + ((deckSize + 1) * (CARD_WIDTH + CARD_SPACING_SMALL)));
+						return AI_1_STARTING_POINT.getX() + ((deckSize + 1) * (CARD_WIDTH + CARD_SPACING_SMALL)) - CARD_SPACING_SMALL;
 					}
 				}
 				else
 				{
-					return (AI_1_STARTING_POINT.getX() + ((deckSize + 1) * (CARD_WIDTH + CARD_SPACING_MEDIUM)));
+					return AI_1_STARTING_POINT.getX() + ((deckSize + 1) * (CARD_WIDTH + CARD_SPACING_MEDIUM)) - CARD_SPACING_MEDIUM;
 				}
 			}
 			else
 			{
-				return (AI_1_STARTING_POINT.getX() + ((deckSize + 1) * (CARD_WIDTH + CARD_SPACING_LARGE)));
+				return AI_1_STARTING_POINT.getX() + ((deckSize + 1) * (CARD_WIDTH + CARD_SPACING_LARGE)) - CARD_SPACING_LARGE;
 			}	
 		}		
 	}
@@ -600,21 +601,21 @@ public class Controller
 			{
 				if((deckSize * (CARD_WIDTH + CARD_SPACING_SMALL)) > maxHeight)
 				{
-					return AI_2_STARTING_POINT.getY() + ((deckSize + 1) * (CARD_WIDTH + CARD_SPACING_ULTRA_SMALL));
+					return AI_2_STARTING_POINT.getY() + ((deckSize + 1) * (CARD_WIDTH + CARD_SPACING_ULTRA_SMALL)) - CARD_SPACING_ULTRA_SMALL;
 				}
 				else
 				{
-					return AI_2_STARTING_POINT.getY() + ((deckSize + 1) * (CARD_WIDTH + CARD_SPACING_SMALL));
+					return AI_2_STARTING_POINT.getY() + ((deckSize + 1) * (CARD_WIDTH + CARD_SPACING_SMALL)) - CARD_SPACING_SMALL;
 				}
 			}
 			else
 			{
-				return AI_2_STARTING_POINT.getY() + ((deckSize + 1) * (CARD_WIDTH + CARD_SPACING_MEDIUM));
+				return AI_2_STARTING_POINT.getY() + ((deckSize + 1) * (CARD_WIDTH + CARD_SPACING_MEDIUM)) - CARD_SPACING_MEDIUM;
 			}
 		}
 		else
 		{
-			return AI_2_STARTING_POINT.getY() + ((deckSize + 1) * (CARD_WIDTH + CARD_SPACING_LARGE));
+			return AI_2_STARTING_POINT.getY() + ((deckSize + 1) * (CARD_WIDTH + CARD_SPACING_LARGE)) - CARD_SPACING_LARGE;
 		}			
 	}
 	
@@ -708,36 +709,43 @@ public class Controller
 
 		int counter = 1;
 
-		for(Card currentCard : deck)
-		{
-			ImageView current = createCard(currentCard, true);
+		for(int i = 0; i < deck.size(); i++)
+		{			
+			ImageView current = createCard(deck.get(i), true);
 
 			current.setId("player");
-			mainPane.getChildren().add(current);
-			
-			double maxWidth = stage.getScene().getWidth() - (PLAYER_STARTING_POINT.getX() * 2) - CARD_WIDTH;
-			if((deck.size() * (CARD_WIDTH + CARD_SPACING_LARGE)) > maxWidth)
+			mainPane.getChildren().add(current);			
+
+			if(i == 0)
 			{
-				if((deck.size() * (CARD_WIDTH + CARD_SPACING_MEDIUM)) > maxWidth)
+				current.setX(AI_1_STARTING_POINT.getX() + CARD_WIDTH);
+			}
+			else
+			{	
+				double maxWidth = stage.getScene().getWidth() - (PLAYER_STARTING_POINT.getX() * 2) - CARD_WIDTH;
+				if((deck.size() * (CARD_WIDTH + CARD_SPACING_LARGE)) > maxWidth)
 				{
-					if((deck.size() * (CARD_WIDTH + CARD_SPACING_SMALL)) > maxWidth)
+					if((deck.size() * (CARD_WIDTH + CARD_SPACING_MEDIUM)) > maxWidth)
 					{
-						current.setX(PLAYER_STARTING_POINT.getX() + (counter * (CARD_WIDTH + CARD_SPACING_ULTRA_SMALL)));
+						if((deck.size() * (CARD_WIDTH + CARD_SPACING_SMALL)) > maxWidth)
+						{
+							current.setX(PLAYER_STARTING_POINT.getX() + (counter * (CARD_WIDTH + CARD_SPACING_ULTRA_SMALL)) - CARD_SPACING_ULTRA_SMALL);
+						}
+						else
+						{
+							current.setX(PLAYER_STARTING_POINT.getX() + (counter * (CARD_WIDTH + CARD_SPACING_SMALL)) - CARD_SPACING_SMALL);
+						}
 					}
 					else
 					{
-						current.setX(PLAYER_STARTING_POINT.getX() + (counter * (CARD_WIDTH + CARD_SPACING_SMALL)));
+						current.setX(PLAYER_STARTING_POINT.getX() + (counter * (CARD_WIDTH + CARD_SPACING_MEDIUM)) - CARD_SPACING_MEDIUM);
 					}
 				}
 				else
 				{
-					current.setX(PLAYER_STARTING_POINT.getX() + (counter * (CARD_WIDTH + CARD_SPACING_MEDIUM)));
+					current.setX(PLAYER_STARTING_POINT.getX() + (counter * (CARD_WIDTH + CARD_SPACING_LARGE)) - CARD_SPACING_LARGE);
 				}
 			}
-			else
-			{
-				current.setX(PLAYER_STARTING_POINT.getX() + (counter * (CARD_WIDTH + CARD_SPACING_LARGE)));
-			}
 
 			current.setY(PLAYER_STARTING_POINT.getY());
 
@@ -751,8 +759,9 @@ public class Controller
 
 		int counter = 1;
 
-		for(Card currentCard : deck)
-		{
+		for(int i = 0; i < deck.size(); i++)
+		{			
+			Card currentCard = deck.get(i);
 			ImageView current;
 
 			if(validDeck.contains(currentCard))
@@ -770,30 +779,36 @@ public class Controller
 
 			mainPane.getChildren().add(current);
 
-			double maxWidth = stage.getScene().getWidth() - (PLAYER_STARTING_POINT.getX() * 2) - CARD_WIDTH;
-
-			if((deck.size() * (CARD_WIDTH + CARD_SPACING_LARGE)) > maxWidth)
+			if(i == 0)
 			{
-				if((deck.size() * (CARD_WIDTH + CARD_SPACING_MEDIUM)) > maxWidth)
+				current.setX(AI_1_STARTING_POINT.getX() + CARD_WIDTH);
+			}
+			else
+			{	
+				double maxWidth = stage.getScene().getWidth() - (PLAYER_STARTING_POINT.getX() * 2) - CARD_WIDTH;
+				if((deck.size() * (CARD_WIDTH + CARD_SPACING_LARGE)) > maxWidth)
 				{
-					if((deck.size() * (CARD_WIDTH + CARD_SPACING_SMALL)) > maxWidth)
+					if((deck.size() * (CARD_WIDTH + CARD_SPACING_MEDIUM)) > maxWidth)
 					{
-						current.setX(PLAYER_STARTING_POINT.getX() + (counter * (CARD_WIDTH + CARD_SPACING_ULTRA_SMALL)));
+						if((deck.size() * (CARD_WIDTH + CARD_SPACING_SMALL)) > maxWidth)
+						{
+							current.setX(PLAYER_STARTING_POINT.getX() + (counter * (CARD_WIDTH + CARD_SPACING_ULTRA_SMALL)) - CARD_SPACING_ULTRA_SMALL);
+						}
+						else
+						{
+							current.setX(PLAYER_STARTING_POINT.getX() + (counter * (CARD_WIDTH + CARD_SPACING_SMALL)) - CARD_SPACING_SMALL);
+						}
 					}
 					else
 					{
-						current.setX(PLAYER_STARTING_POINT.getX() + (counter * (CARD_WIDTH + CARD_SPACING_SMALL)));
+						current.setX(PLAYER_STARTING_POINT.getX() + (counter * (CARD_WIDTH + CARD_SPACING_MEDIUM)) - CARD_SPACING_MEDIUM);
 					}
 				}
 				else
 				{
-					current.setX(PLAYER_STARTING_POINT.getX() + (counter * (CARD_WIDTH + CARD_SPACING_MEDIUM)));
+					current.setX(PLAYER_STARTING_POINT.getX() + (counter * (CARD_WIDTH + CARD_SPACING_LARGE)) - CARD_SPACING_LARGE);
 				}
 			}
-			else
-			{
-				current.setX(PLAYER_STARTING_POINT.getX() + (counter * (CARD_WIDTH + CARD_SPACING_LARGE)));
-			}
 			
 			counter++;
 		}
@@ -812,7 +827,6 @@ public class Controller
 		}
 	}
 
-	@SuppressWarnings("unused")
 	public void setAIDeck(AI ai)
 	{
 		clearAIDeck(ai);
@@ -821,7 +835,7 @@ public class Controller
 
 		int counter = 1;
 		
-		for(Card currentCard : deck)
+		for(int i = 0; i < deck.size(); i++)
 		{
 			ImageView current = createBackCard();
 
@@ -831,35 +845,42 @@ public class Controller
 			
 			double maxWidth;
 			double maxHeight;
-			int deckSize;
+			int deckSize;			
 			
 			switch(ai.getID())
 			{
 				case 1:	maxWidth = stage.getScene().getWidth() - ((AI_1_STARTING_POINT.getX() + 25.0) * 2) - CARD_WIDTH;
 						deckSize = ai.getDeckSize();
 
-						if((deckSize * (CARD_WIDTH + CARD_SPACING_LARGE)) > maxWidth)
+						if(i == 0)
 						{
-							if((deckSize * (CARD_WIDTH + CARD_SPACING_MEDIUM)) > maxWidth)
+							current.setX(AI_1_STARTING_POINT.getX() + CARD_WIDTH);
+						}
+						else
+						{					
+							if((deckSize * (CARD_WIDTH + CARD_SPACING_LARGE)) > maxWidth)
 							{
-								if((deckSize * (CARD_WIDTH + CARD_SPACING_SMALL)) > maxWidth)
+								if((deckSize * (CARD_WIDTH + CARD_SPACING_MEDIUM)) > maxWidth)
 								{
-									current.setX(AI_1_STARTING_POINT.getX() + (counter * (CARD_WIDTH + CARD_SPACING_ULTRA_SMALL)));
+									if((deckSize * (CARD_WIDTH + CARD_SPACING_SMALL)) > maxWidth)
+									{
+										current.setX(AI_1_STARTING_POINT.getX() + (counter * (CARD_WIDTH + CARD_SPACING_ULTRA_SMALL)) - CARD_SPACING_ULTRA_SMALL);
+									}
+									else
+									{
+										current.setX(AI_1_STARTING_POINT.getX() + (counter * (CARD_WIDTH + CARD_SPACING_SMALL)) - CARD_SPACING_SMALL);
+									}
 								}
 								else
 								{
-									current.setX(AI_1_STARTING_POINT.getX() + (counter * (CARD_WIDTH + CARD_SPACING_SMALL)));
+									current.setX(AI_1_STARTING_POINT.getX() + (counter * (CARD_WIDTH + CARD_SPACING_MEDIUM)) - CARD_SPACING_MEDIUM);
 								}
 							}
 							else
 							{
-								current.setX(AI_1_STARTING_POINT.getX() + (counter * (CARD_WIDTH + CARD_SPACING_MEDIUM)));
+								current.setX(AI_1_STARTING_POINT.getX() + (counter * (CARD_WIDTH + CARD_SPACING_LARGE)) - CARD_SPACING_LARGE);
 							}
 						}
-						else
-						{
-							current.setX(AI_1_STARTING_POINT.getX() + (counter * (CARD_WIDTH + CARD_SPACING_LARGE)));
-						}
 		
 						current.setY(AI_1_STARTING_POINT.getY());
 						break;
@@ -867,30 +888,37 @@ public class Controller
 				case 2:	maxHeight = stage.getScene().getHeight() - ((AI_2_STARTING_POINT.getY() + 50.0) * 2) - CARD_WIDTH;
 						deckSize = ai.getDeckSize();
 						
-						current.setRotate(90.0);
-		
-						if((deckSize * (CARD_WIDTH + CARD_SPACING_LARGE)) > maxHeight)
+						current.setRotate(-90.0);						
+						
+						if(i == 0)
 						{
-							if((deckSize * (CARD_WIDTH + CARD_SPACING_MEDIUM)) > maxHeight)
+							current.setY(AI_2_STARTING_POINT.getY() + CARD_WIDTH);							
+						}
+						else
+						{						
+							if((deckSize * (CARD_WIDTH + CARD_SPACING_LARGE)) > maxHeight)
 							{
-								if((deckSize * (CARD_WIDTH + CARD_SPACING_SMALL)) > maxHeight)
+								if((deckSize * (CARD_WIDTH + CARD_SPACING_MEDIUM)) > maxHeight)
 								{
-									current.setY(AI_2_STARTING_POINT.getY() + (counter * (CARD_WIDTH + CARD_SPACING_ULTRA_SMALL)));
+									if((deckSize * (CARD_WIDTH + CARD_SPACING_SMALL)) > maxHeight)
+									{
+										current.setY(AI_2_STARTING_POINT.getY() + (counter * (CARD_WIDTH + CARD_SPACING_ULTRA_SMALL)) - CARD_SPACING_ULTRA_SMALL);
+									}
+									else
+									{
+										current.setY(AI_2_STARTING_POINT.getY() + (counter * (CARD_WIDTH + CARD_SPACING_SMALL)) - CARD_SPACING_SMALL);
+									}
 								}
 								else
 								{
-									current.setY(AI_2_STARTING_POINT.getY() + (counter * (CARD_WIDTH + CARD_SPACING_SMALL)));
+									current.setY(AI_2_STARTING_POINT.getY() + (counter * (CARD_WIDTH + CARD_SPACING_MEDIUM)) - CARD_SPACING_MEDIUM);
 								}
 							}
 							else
 							{
-								current.setY(AI_2_STARTING_POINT.getY() + (counter * (CARD_WIDTH + CARD_SPACING_MEDIUM)));
+								current.setY(AI_2_STARTING_POINT.getY() + (counter * (CARD_WIDTH + CARD_SPACING_LARGE)) - CARD_SPACING_LARGE);
 							}
 						}
-						else
-						{
-							current.setY(AI_2_STARTING_POINT.getY() + (counter * (CARD_WIDTH + CARD_SPACING_LARGE)));
-						}
 		
 						current.setX(AI_2_STARTING_POINT.getX());
 						break;
@@ -900,28 +928,35 @@ public class Controller
 						
 						current.setRotate(90.0);
 		
-						if((deckSize * (CARD_WIDTH + CARD_SPACING_LARGE)) > maxHeight)
+						if(i == 0)
 						{
-							if((deckSize * (CARD_WIDTH + CARD_SPACING_MEDIUM)) > maxHeight)
+							current.setY(AI_3_STARTING_POINT.getY() + CARD_WIDTH);
+						}
+						else
+						{							
+							if((deckSize * (CARD_WIDTH + CARD_SPACING_LARGE)) > maxHeight)
 							{
-								if((deckSize * (CARD_WIDTH + CARD_SPACING_SMALL)) > maxHeight)
+								if((deckSize * (CARD_WIDTH + CARD_SPACING_MEDIUM)) > maxHeight)
 								{
-									current.setY(AI_3_STARTING_POINT.getY() + (counter * (CARD_WIDTH + CARD_SPACING_ULTRA_SMALL)));
+									if((deckSize * (CARD_WIDTH + CARD_SPACING_SMALL)) > maxHeight)
+									{
+										current.setY(AI_3_STARTING_POINT.getY() + (counter * (CARD_WIDTH + CARD_SPACING_ULTRA_SMALL)) - CARD_SPACING_ULTRA_SMALL);
+									}
+									else
+									{
+										current.setY(AI_3_STARTING_POINT.getY() + (counter * (CARD_WIDTH + CARD_SPACING_SMALL)) - CARD_SPACING_SMALL);
+									}
 								}
 								else
 								{
-									current.setY(AI_3_STARTING_POINT.getY() + (counter * (CARD_WIDTH + CARD_SPACING_SMALL)));
+									current.setY(AI_3_STARTING_POINT.getY() + (counter * (CARD_WIDTH + CARD_SPACING_MEDIUM)) - CARD_SPACING_MEDIUM);
 								}
 							}
 							else
 							{
-								current.setY(AI_3_STARTING_POINT.getY() + (counter * (CARD_WIDTH + CARD_SPACING_MEDIUM)));
+								current.setY(AI_3_STARTING_POINT.getY() + (counter * (CARD_WIDTH + CARD_SPACING_LARGE)) - CARD_SPACING_LARGE);
 							}
 						}
-						else
-						{
-							current.setY(AI_3_STARTING_POINT.getY() + (counter * (CARD_WIDTH + CARD_SPACING_LARGE)));
-						}
 		
 						current.setX(AI_3_STARTING_POINT.getX());
 						break;
@@ -942,6 +977,8 @@ public class Controller
 		}
 	}	
 
+	//TODO reverse is not working correctly
+	
 	public void about()
 	{
 		Alert alert = new Alert(AlertType.INFORMATION);
diff --git a/src/application/Main.java b/src/application/Main.java
index 0199cb4db2b939088b05853e76e93d043d7d7b27..e83f9ae679d7fa5252b9fb7aba06f662c408f5cf 100644
--- a/src/application/Main.java
+++ b/src/application/Main.java
@@ -4,6 +4,7 @@ import javafx.application.Application;
 import javafx.fxml.FXMLLoader;
 import javafx.scene.Parent;
 import javafx.scene.Scene;
+import javafx.scene.SceneAntialiasing;
 import javafx.scene.image.Image;
 import javafx.stage.Stage;
 
@@ -17,7 +18,7 @@ public class Main extends Application
 			FXMLLoader loader = new FXMLLoader(getClass().getResource("MainGUI.fxml"));
 			Parent root = (Parent)loader.load();
 
-			Scene scene = new Scene(root, 800, 650);
+			Scene scene = new Scene(root, 800, 650, false, SceneAntialiasing.BALANCED);
 
 			stage.setResizable(true);
 			stage.setTitle("UNO");
@@ -25,7 +26,7 @@ public class Main extends Application
 			
 			Controller controller = (Controller)loader.getController();
 			controller.setStage(stage);			
-			controller.init();			
+			controller.init();				
 			
 			//TODO set minWidth and Height
 			stage.getIcons().add(new Image("images/icon.png"));