diff --git a/class/application/Controller$1.class b/class/application/Controller$1.class
index f285cfaad04c444835452f2b4fd554adb419b14c..8d76c2efc9ade0aefbee720d3d7a288e82109a3f 100644
Binary files a/class/application/Controller$1.class and b/class/application/Controller$1.class differ
diff --git a/class/application/Controller$2.class b/class/application/Controller$2.class
index 770c6bd7b41d397a1fe2139e3cea67f767dce807..f23206c0f1874cbb90c2b098526ab5724da5e690 100644
Binary files a/class/application/Controller$2.class and b/class/application/Controller$2.class differ
diff --git a/class/application/Controller$3.class b/class/application/Controller$3.class
index e69c0cf350cd9b9657139a7163639d98b94612c7..c7ec3c1441a78120e55da1b9b0365376bf8f3f38 100644
Binary files a/class/application/Controller$3.class and b/class/application/Controller$3.class differ
diff --git a/class/application/Controller$4.class b/class/application/Controller$4.class
index 999d61509c117294c1f1c8168aed35ba49c67a9d..3f5dcc86d4bd47f4664901e98cfe9d12795ec3f3 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 7a730d62a3e4d03f10bba0fafb77f76c054381da..2c1427ca3ee321dcb9ba14da25637f24c640602d 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 ec87ab5584606e73ee3fc437c18f1fb8a6d0391b..d6822e7690c9a11b990721759e7517c6e1985df7 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 c67eaa2734c58f9732d1b4031da5cc9e36d61bd2..4b967274d7006d93eb6dd2090b381b98e88997ee 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 fda9f9734cf7d5026d164da40117b70622086f13..7c854109def74bd3216e501aab24ff3d26698064 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 1d08088c6bd0c22f96fc9657f82d0bb2080f3355..2bf6ce689767dff9b6de1d6889fc0accf73f5b8f 100644
Binary files a/class/application/Controller.class and b/class/application/Controller.class differ
diff --git a/class/application/MainGUI.fxml b/class/application/MainGUI.fxml
index 979f8741621f2615fdb45dc649d1ca023bc80112..8321e0c587824f815495bcd971eb0aebacfd8a95 100644
--- a/class/application/MainGUI.fxml
+++ b/class/application/MainGUI.fxml
@@ -6,6 +6,7 @@
 <?import javafx.scene.control.Menu?>
 <?import javafx.scene.control.MenuBar?>
 <?import javafx.scene.control.MenuItem?>
+<?import javafx.scene.image.Image?>
 <?import javafx.scene.image.ImageView?>
 <?import javafx.scene.layout.AnchorPane?>
 <?import javafx.scene.layout.HBox?>
@@ -77,12 +78,26 @@
         <menus>
           <Menu fx:id="menu1" mnemonicParsing="false" text="Menü">
             <items>
-              <MenuItem fx:id="menuItem1" mnemonicParsing="false" onAction="#startGame" text="Neues Spiel" />
                   <MenuItem fx:id="menuItem2" mnemonicParsing="false" onAction="#openSettings" text="Einstellungen" />
               <MenuItem fx:id="menuItem3" mnemonicParsing="false" onAction="#about" text="Über" />
             </items>
           </Menu>
         </menus>
       </MenuBar>
+      <ImageView fx:id="imageViewLogo" fitHeight="160.0" fitWidth="175.0" layoutX="312.0" layoutY="189.0" pickOnBounds="true" preserveRatio="true">
+         <image>
+            <Image url="@../images/icon.png" />
+         </image>
+      </ImageView>
+      <Label fx:id="labelLogo" layoutX="274.0" layoutY="385.0" text="Welcome to UNO!">
+         <font>
+            <Font name="System Bold" size="28.0" />
+         </font>
+      </Label>
+      <Button fx:id="buttonNewGame" layoutX="344.0" layoutY="469.0" mnemonicParsing="false" onAction="#startGame" text="Neues Spiel">
+         <font>
+            <Font name="System Bold" size="14.0" />
+         </font>
+      </Button>
    </children>
 </AnchorPane>
diff --git a/class/logic/AI.class b/class/logic/AI.class
index a3f028bb804f8d16c225286e94be4567d305afbc..f6705afda4d606403bdcf6cbe9f5e96e9b71fbbc 100644
Binary files a/class/logic/AI.class and b/class/logic/AI.class differ
diff --git a/class/logic/Game.class b/class/logic/Game.class
index 8e4517650abb53f2aa52706df849fba4e8862567..8301270ed69f692be18fa4a00d284ee9dc2dc451 100644
Binary files a/class/logic/Game.class and b/class/logic/Game.class differ
diff --git a/class/logic/Player.class b/class/logic/Player.class
index 64d765b10b80130190a1a0418170d1fa24fbc3e7..5f2532c232e602fabd6155b0732015f0e3129205 100644
Binary files a/class/logic/Player.class and b/class/logic/Player.class differ
diff --git a/src/application/Controller.java b/src/application/Controller.java
index 4d20216343a9c1d001c6dbf35eff156c68dd889b..e3d07a56c6550e9f73c40097a9855594878f4df7 100644
--- a/src/application/Controller.java
+++ b/src/application/Controller.java
@@ -63,10 +63,13 @@ public class Controller
 	@FXML private Label labelAI3Name;
 	@FXML private Button buttonStart;	
 	@FXML private MenuBar menuBar;
-	@FXML private Menu menu1;
-	@FXML private MenuItem menuItem1;
+	@FXML private Menu menu1;	
 	@FXML private MenuItem menuItem2;
 	@FXML private MenuItem menuItem3;
+	@FXML private ImageView imageViewLogo;
+	@FXML private Label labelLogo;
+	@FXML private Button buttonNewGame;
+	
 
 	public Game game;
 	public Color chosenWishColor;
@@ -104,6 +107,7 @@ public class Controller
 		AI_3_STARTING_POINT = new Point2D(60.0, 70.0);
 		
 		clearAll();
+		showNeutralUI();
 		
 		settings = new Settings();
 		try
@@ -123,13 +127,11 @@ public class Controller
 
 	public void startGame()
 	{
+		clearAll();
 		menuItem2.setDisable(true);
 		
-		hideWishColor();		
-		hideInfo();
-		hideLabelChallengeCounter();
-		
-		drawCounter = 0;	
+		drawCounter = 0;
+		labelCurrentPlayer.setVisible(true);
 		
 		iconDeck.setImage(createEmptyBackCard());
 		iconDeck.addEventHandler(MouseEvent.MOUSE_CLICKED, new EventHandler<MouseEvent>()
@@ -163,6 +165,20 @@ public class Controller
 		buttonStart.setVisible(true);		
 	}
 	
+	public void showNeutralUI()
+	{
+		imageViewLogo.setVisible(true);
+		labelLogo.setVisible(true);
+		buttonNewGame.setVisible(true);
+	}
+	
+	public void hideNeutralUI()
+	{
+		imageViewLogo.setVisible(false);
+		labelLogo.setVisible(false);
+		buttonNewGame.setVisible(false);
+	}
+	
 	public void setLabelNames(Player player, ArrayList<AI> ais)
 	{	
 		labelAI2Name.setVisible(false);
@@ -184,8 +200,7 @@ public class Controller
 			labelAI3Name.setText(ais.get(0).getName());
 			labelAI3Name.setVisible(true);
 		}
-	}
-	
+	}	
 
 	public void showCircleWishColor(Color color)
 	{
@@ -613,7 +628,7 @@ public class Controller
 	
 	private double getPositionOfBottomCard(AI ai)
 	{			
-		double maxHeight = stage.getScene().getHeight() - ((AI_2_STARTING_POINT.getY() + 50.0) * 2) - CARD_WIDTH;
+		double maxHeight = stage.getScene().getHeight() - ((AI_2_STARTING_POINT.getY() + 40.0) * 2) - CARD_WIDTH;
 		int deckSize = ai.getDeckSize();					
 
 		if((deckSize * (CARD_WIDTH + CARD_SPACING_LARGE)) > maxHeight)
@@ -906,7 +921,7 @@ public class Controller
 						current.setY(AI_1_STARTING_POINT.getY());
 						break;
 						
-				case 2:	maxHeight = stage.getScene().getHeight() - ((AI_2_STARTING_POINT.getY() + 50.0) * 2) - CARD_WIDTH;
+				case 2:	maxHeight = stage.getScene().getHeight() - ((AI_2_STARTING_POINT.getY() + 40.0) * 2) - CARD_WIDTH;
 						deckSize = ai.getDeckSize();
 						
 						current.setRotate(-90.0);						
@@ -944,7 +959,7 @@ public class Controller
 						current.setX(AI_2_STARTING_POINT.getX());
 						break;
 						
-				case 3:	maxHeight = stage.getScene().getHeight() - ((AI_3_STARTING_POINT.getY() + 50.0) * 2) - CARD_WIDTH;
+				case 3:	maxHeight = stage.getScene().getHeight() - ((AI_3_STARTING_POINT.getY() + 40.0) * 2) - CARD_WIDTH;
 						deckSize = ai.getDeckSize();
 						
 						current.setRotate(90.0);
@@ -1027,9 +1042,11 @@ public class Controller
 	
 	public void clearAll()
 	{
+		hideNeutralUI();
 		menuItem2.setDisable(false);
 		hideWishColor();
 		hideInfo();
+		labelCurrentPlayer.setVisible(false);
 		hideLabelChallengeCounter();
 		hideImageViewDirection();
 		labelAI1Name.setVisible(false);
@@ -1037,7 +1054,7 @@ public class Controller
 		labelAI3Name.setVisible(false);
 		buttonStart.setVisible(false);	
 		iconDeck.setImage(null);
-		iconLastCard.setImage(null);
+		iconLastCard.setImage(null);	
 	}
 	
 	public void about()
diff --git a/src/application/MainGUI.fxml b/src/application/MainGUI.fxml
index 979f8741621f2615fdb45dc649d1ca023bc80112..8321e0c587824f815495bcd971eb0aebacfd8a95 100644
--- a/src/application/MainGUI.fxml
+++ b/src/application/MainGUI.fxml
@@ -6,6 +6,7 @@
 <?import javafx.scene.control.Menu?>
 <?import javafx.scene.control.MenuBar?>
 <?import javafx.scene.control.MenuItem?>
+<?import javafx.scene.image.Image?>
 <?import javafx.scene.image.ImageView?>
 <?import javafx.scene.layout.AnchorPane?>
 <?import javafx.scene.layout.HBox?>
@@ -77,12 +78,26 @@
         <menus>
           <Menu fx:id="menu1" mnemonicParsing="false" text="Menü">
             <items>
-              <MenuItem fx:id="menuItem1" mnemonicParsing="false" onAction="#startGame" text="Neues Spiel" />
                   <MenuItem fx:id="menuItem2" mnemonicParsing="false" onAction="#openSettings" text="Einstellungen" />
               <MenuItem fx:id="menuItem3" mnemonicParsing="false" onAction="#about" text="Über" />
             </items>
           </Menu>
         </menus>
       </MenuBar>
+      <ImageView fx:id="imageViewLogo" fitHeight="160.0" fitWidth="175.0" layoutX="312.0" layoutY="189.0" pickOnBounds="true" preserveRatio="true">
+         <image>
+            <Image url="@../images/icon.png" />
+         </image>
+      </ImageView>
+      <Label fx:id="labelLogo" layoutX="274.0" layoutY="385.0" text="Welcome to UNO!">
+         <font>
+            <Font name="System Bold" size="28.0" />
+         </font>
+      </Label>
+      <Button fx:id="buttonNewGame" layoutX="344.0" layoutY="469.0" mnemonicParsing="false" onAction="#startGame" text="Neues Spiel">
+         <font>
+            <Font name="System Bold" size="14.0" />
+         </font>
+      </Button>
    </children>
 </AnchorPane>
diff --git a/src/logic/AI.java b/src/logic/AI.java
index 793f957b4405dcded8445a6a7650a16fdac619a5..82e7898c6c9b06c69e204763a84628b21d4ce43b 100644
--- a/src/logic/AI.java
+++ b/src/logic/AI.java
@@ -58,31 +58,45 @@ public class AI
 	}
 
 	public ArrayList<Card> getValidCards(Card lastCard, Color wishColor, boolean challenge)
-	{
-		ArrayList<Card> validCards = new ArrayList<Card>();
+	{	
+		ArrayList<Card> validCards = new ArrayList<Card>();		
 		if(challenge)
 		{
 			for(Card currentCard : deck)
-			{
-				if(wishColor == null)
+			{	
+				if(lastCard.getType().equals(CardType.DRAW_TWO))
 				{
-					if(currentCard.getType().equals(CardType.DRAW_TWO) || currentCard.getType().equals(CardType.DRAW_FOUR))
+					if(game.getController().settings.isAllowChallengePlusTwo())
 					{
-						validCards.add(currentCard);
+						if(currentCard.getType().equals(CardType.DRAW_TWO) || currentCard.getType().equals(CardType.DRAW_FOUR))
+						{
+							validCards.add(currentCard);
+						}
 					}
 				}
-				else if(wishColor.equals(Color.ALL))
+				else // lastCard == +4
 				{
-					if(currentCard.getType().equals(CardType.DRAW_TWO) || currentCard.getType().equals(CardType.DRAW_FOUR))
+					if(game.getController().settings.isAllowChallengePlusFourWithFour())
 					{
-						validCards.add(currentCard);
+						if(currentCard.getType().equals(CardType.DRAW_FOUR))
+						{
+							validCards.add(currentCard);
+						}						
 					}
-				}
-				else
-				{
-					if(currentCard.getColor().equals(wishColor) && currentCard.getType().equals(CardType.DRAW_TWO) || currentCard.getType().equals(CardType.DRAW_FOUR))
+					
+					if(game.getController().settings.isAllowChallengePlusFourWithTwo())
 					{
-						validCards.add(currentCard);
+						if(currentCard.getType().equals(CardType.DRAW_TWO))
+						{
+							if(wishColor == Color.ALL)
+							{
+								validCards.add(currentCard);
+							}
+							else if(currentCard.getColor().equals(wishColor))
+							{
+								validCards.add(currentCard);
+							}
+						}					
 					}
 				}
 			}
@@ -90,24 +104,23 @@ public class AI
 		else
 		{
 			if(wishColor == null)
-			{
+			{	
 				for(Card currentCard : deck)
-				{
-					if(currentCard.getColor().equals(lastCard.getColor()) || currentCard.getType().equals(lastCard.getType()) || currentCard.getType().equals(CardType.WILD)
-							|| currentCard.getType().equals(CardType.DRAW_FOUR))
+				{								
+					if(currentCard.getColor().equals(lastCard.getColor()) || currentCard.getType().equals(lastCard.getType()) || currentCard.getType().equals(CardType.WILD) || currentCard.getType().equals(CardType.DRAW_FOUR))
 					{
 						validCards.add(currentCard);
-					}
+					}						
 				}
 			}
 			else if(wishColor.equals(Color.ALL))
 			{
 				for(Card currentCard : deck)
-				{
-					if( ! currentCard.getType().equals(CardType.WILD) && ! currentCard.getType().equals(CardType.DRAW_FOUR))
+				{								
+					if(!currentCard.getType().equals(CardType.WILD) && !currentCard.getType().equals(CardType.DRAW_FOUR))
 					{
 						validCards.add(currentCard);
-					}
+					}						
 				}
 			}
 			else
@@ -117,14 +130,13 @@ public class AI
 					if(currentCard.getColor().equals(wishColor))
 					{
 						validCards.add(currentCard);
-					}
+					}	
 				}
-			}
-		}
-
+			}		
+		}		
+	
 		return validCards;
 	}
-
 	public int getDeckSize()
 	{
 		return deck.size();
diff --git a/src/logic/Game.java b/src/logic/Game.java
index 4cd3fc82b4e40e50cb172d6d5df384af58c386c5..461fed5a0aa93ac060853ca2516be4b8a9660ace 100644
--- a/src/logic/Game.java
+++ b/src/logic/Game.java
@@ -249,15 +249,13 @@ public class Game
 	private void end(String name)
 	{			
 		controller.clearAllDecks(ais);
-		controller.clearAll();
+		controller.clearAll();		
 		System.err.println("Player " + name + " wins!");
 		
 		running = false;
 		
 		if(currentPlayer == 1)
-		{
-			controller.setLabelCurrentPlayer(player.getName() + " gewinnt!");
-			
+		{		
 			Alert alert = new Alert(AlertType.INFORMATION);
 			alert.setTitle("Sieg!");
 			alert.setHeaderText("");
@@ -266,11 +264,11 @@ public class Game
 			Stage dialogStage = (Stage)alert.getDialogPane().getScene().getWindow();
 			dialogStage.getIcons().add(controller.icon);
 			alert.show();
+			
+			controller.showNeutralUI();
 		}
 		else
-		{
-			controller.setLabelCurrentPlayer(ais.get(currentPlayer - 2).getName() + " gewinnt!");
-			
+		{			
 			Alert alert = new Alert(AlertType.INFORMATION);
 			alert.setTitle("Niederlage!");
 			alert.setHeaderText("");
@@ -279,6 +277,8 @@ public class Game
 			Stage dialogStage = (Stage)alert.getDialogPane().getScene().getWindow();
 			dialogStage.getIcons().add(controller.icon);
 			alert.show();
+			
+			controller.showNeutralUI();
 		}	
 	}
 
diff --git a/src/logic/Player.java b/src/logic/Player.java
index df490f3d6f8abf22df3668b2a898a905d50d2b8a..e6af68f3b94baac9d20c514a775e8b3a0cbb2f1d 100644
--- a/src/logic/Player.java
+++ b/src/logic/Player.java
@@ -58,25 +58,39 @@ public class Player
 		{
 			for(Card currentCard : deck)
 			{	
-				if(wishColor == null)
+				if(lastCard.getType().equals(CardType.DRAW_TWO))
 				{
-					if(currentCard.getType().equals(CardType.DRAW_TWO) || currentCard.getType().equals(CardType.DRAW_FOUR))
+					if(game.getController().settings.isAllowChallengePlusTwo())
 					{
-						validCards.add(currentCard);
+						if(currentCard.getType().equals(CardType.DRAW_TWO) || currentCard.getType().equals(CardType.DRAW_FOUR))
+						{
+							validCards.add(currentCard);
+						}
 					}
-				}	
-				else if(wishColor.equals(Color.ALL))
-				{										
-					if(currentCard.getType().equals(CardType.DRAW_TWO) || currentCard.getType().equals(CardType.DRAW_FOUR))
-					{
-						validCards.add(currentCard);
-					}						
 				}
-				else
+				else // lastCard == +4
 				{
-					if(currentCard.getColor().equals(wishColor) && currentCard.getType().equals(CardType.DRAW_TWO) || currentCard.getType().equals(CardType.DRAW_FOUR))
+					if(game.getController().settings.isAllowChallengePlusFourWithFour())
 					{
-						validCards.add(currentCard);
+						if(currentCard.getType().equals(CardType.DRAW_FOUR))
+						{
+							validCards.add(currentCard);
+						}						
+					}
+					
+					if(game.getController().settings.isAllowChallengePlusFourWithTwo())
+					{
+						if(currentCard.getType().equals(CardType.DRAW_TWO))
+						{
+							if(wishColor == Color.ALL)
+							{
+								validCards.add(currentCard);
+							}
+							else if(currentCard.getColor().equals(wishColor))
+							{
+								validCards.add(currentCard);
+							}
+						}					
 					}
 				}
 			}